Киберполигон для самых бедных ( и умных )

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Привет! Меня зовут Миша, я основатель https://defbox.io - платформы на которой можно попробовать написать детект под разные атаки и соревноваться кто лучше это делает :)

На примере SSH-bruteforce стенда я расскажу, как можно своими руками сделать лабу для тренировки написания детектов:
1. Как поднять платформу для сбора и анализа логов
2. Как поднять и подготовить заведомо уязвимый сервер
3. Как провести SSH-Bruteforce
4. Что искать в платформе из п.1 и как написать правило в эластике

Зачем это нужно? Чтобы потренировать свои скиллы аналитика логов, попробовать построить домашний SIEM или чтобы просто разобраться с чем это там работают ваши коллеги

Мы хотим собирать логи и находить в них нехорошие события. Перед тем, как создавать эти события, нужно подготовиться к сбору логов. Для этого мы поднимем популярный ELK стек ( строго говоря мы поднимем EK стек, логстеш мы подымать не будем ).

ELK стенд и уязвимый сервер можно поднять по разному

  1. на разных виртуальных машинах в облаке

  2. на разных виртуальных машинах используя личный компьютер

  3. Поднять ELK на своем компьютере, а в облаке поднять виртуальную машину с уязвимым стендом

Мы будем использовать третий вариант, хоть это и может показаться спорным из-за необходимости выставлять эластик в интернет

Поднять его можно вот так:

  1. Клонируем репозиторий с готовыми docker compose файлами: git clone https://github.com/deviantony/docker-elk.git

  2. Переходим в этот репозиторий cd docker-elk/

  3. Делаем магию чтобы мы могли писать правила корелляции: echo "xpack.encryptedSavedObjects.encryptionKey: $(openssl rand -hex 32)" >> kibana/config/kibana.yml (Эта команда генерирует и создает случайный ключ, который кибана будет использовать для шифрования)

  4. И запускаем ELK - docker compose --profile=setup up

После выполнения этих действий по адресу http://localhost:5601 вас будет ждать кибана в которой можно смотреть логи. Мы чуть позже посмотрим на нее

Еще у нас должен быть доступен эластик - http://localhost:9200

Для того, чтобы на этот эластик можно было отправлять логи, нужно сделать так, чтобы эластик был доступен из интернета - для этого лучше всего воспользоваться ngrok'ом

Теперь, когда у нас доступен эластик, мы можем развернуть виртуальную машину с SSH, специально сконфигурировать ее плохо, и даже взломать.

Эта статья больше обзорная, поэтому мы возьмем один из самых простых сценариев - брутфорс SSH.

Вообще, виртуальную машину развернуть можно где угодно, лично я обычно разворачиваю их в Digital Ocean. Это можно либо руками из интерфейса сделать, либо воспользоваться терраформом. Для того, чтобы наш стенд легко было переподнимать, имеет смысл написать терраформ файл, мы представим что он у нас уже написан, и виртуальная машина с линуксом есть.

На этой виртуальной машине нужно выполнить следующие команды

sed -i -e 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config  
sudo /etc/init.d/ssh force-reload  
sudo /etc/init.d/ssh restart
useradd -ou 0 -g 0 -m keeton
echo \"keeton:Qm8Aokcvl9NHzO1XJRs1KYhTktq0SmZf\" | chpasswd  

Которые

  1. Настроят ssh на доступ с паролем

  2. Создадут пользователя keeton с паролем Qm8Aokcvl9NHzO1XJRs1KYhTktq0SmZf

Теперь нужно подключить наш стенд к системе сбора логов.

Для этого мы установим auditbeat на наш сервер:

  1. Установим auditbeat

    curl -L -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.4.3-amd64.deb
    sudo dpkg -i auditbeat-8.4.3-amd64.deb
  2. Настроим auditbeat так, чтобы он отправлял информацию в наш ELK - для этого нужно отредактировать файл /etc/auditbeat/auditbeat.yml и в секцию output.elasticsearch ввести адрес, юзернейм и пароль нашего эластика ( дефолтные юзернейм и пароль это elastic:elastic )

  3. Перезапустим auditbeat чтобы применить изменения

    $ auditbeat setup --index-management
    $ service auditbeat start
    

Теперь мы должны увидеть в нашей кибане такую картину:

  1. 1 хост во вкладке Security->Explore->Hosts

Pasted image 20230521114802.png
На вкладке Security->Explore->Hosts должен быть 1 хост
  1. Список всех ивентов во вкладке Discover ( но для этого нужно будет добавить Data view )

Ивенты можно посмотреть на вкладке Discover
Ивенты можно посмотреть на вкладке Discover

Теперь мы полностью готовы к тому, чтобы забрутфорсить и задетектить :)

Для брутфорса мы будем использовать гидру ( команды нужно выполнять не на уязвимом сервере ):

  1. Установим гидру - apt-get update; apt-get install -y hydra-gtk

  2. Скачаем список часто используемых паролей curl https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Leaked-Databases/rockyou-10.txt > passwords.txt

  3. Добавим наш пароль в конец этого списка, чтобы брутфорс закончился удачно echo "Qm8Aokcvl9NHzO1XJRs1KYhTkTq0SmZf" >> passwords.txt

  4. Запустим брутфорс hydra -l keeton -P passwords.txt "{{ nameSSH }}" ssh -t 4

Минут через пять брутфорс будет закончен успешно. Воображаемый хакер сможет зайти на сервер, а мы сможем проверить, есть ли у нас необходимая информация в ELK чтобы не повторить такого в будущем

Сделаем фильтр event.category: authentication , чтобы посмотреть на все события аутентификации

Подозрительные события
Подозрительные события

Видим 300 неуспешных попыток аутентификации - похоже на брутфорс!

Попробуем написать правило ( у эластика есть 700 с лишним созданных правил, в том числе и на брутфорс SSH, но у меня не получилось сделать так чтобы оно заработало )

Попробуем такую же query, какой мы воспользовались ранее:
event.category : "authentication" and event.outcome : "failure"

Пример страницы с правилом
Пример страницы с правилом

И вот мы написали правило, которое теперь будет следить за тем, пытаются ли наши сервера забрутфорсить. На это правило мы можем навесить интеграций ( чтобы обои отваливались ) чтобы, например, получать нотификации в телеграм, или сразу уведомлять товарища майора :)

Все это можно сделать в секции действий которые нужно выполнить если правило сработало:

Страница с действиями на правило
Страница с действиями на правило


И все - на самом простом уровне мы готовы к отражению SSH Bruteforce атаки.

В этой статье я постарался показать как можно подготовить себе стенд для обучения работе в BlueTeam:

  1. Поднять ELK для сбора и анализа логов

  2. Поднять-удалить-заново поднять заведомо уязвимый сервер

  3. Найти что-то подозрительное в логах

  4. Написать правило чтобы в следующий раз получить уведомление об этом

Чем можно заняться дальше?

  1. Настроить Logstash для того чтобы эффективно обрабатывать логи ( без него будет тяжело обрабатывать продакшен окружения )

  2. Попытаться воспользоваться стандартной библиотекой детектирующих правил от Elastic

  3. Причесать ELK стенд, скрыв его за TLS, создав эффективный кластер

  4. Попытаться повторить все то же самое на стендах https://github.com/ermetic-research/cnappgoat , https://github.com/DataDog/stratus-red-team

  5. Попробовать сдетектировать атаки на нашей платформе - https://defbox.io/invite/7539a046-5bc5-479a-94cf-b9c54934498c ( чат проекта https://t.me/+UBFBxHyMi9RmOWQy )

Источник: https://habr.com/ru/articles/755624/


Интересные статьи

Интересные статьи

Оглавление: Уроки компьютерного зрения. Оглавление / Хабр (habr.com)На предыдущем уроке я рассказал о своем пэт-проекте, связанном с компьютерным зрением. В этом уроке вы познакомились идей и наброско...
2021 год был очень странным; но втройне странным он был для всех, кто хоть немного интересуется финансами и инвестициями. В этом обзоре я собрал десять историй и явлений, которые в ушедшем году по пра...
Эффект Даннинга-Крюгера — когнитивное искажение, при котором люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознава...
Гифка за 580 000$, набор пиксельных панков за 7.5mil$ и Kings of Leon выпускающие свой альбом прямо на нем. О дивный новый мир искусства и какого черта в нем вообще проис...
Шифровальщики фактически стали киберугрозой №1 как для бизнеса, так и для государственных органов: число успешных атак в прошлом году выросло более чем на 150% к 2019 год...