• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья #BlueTeam Ловим хакеров и плохих парней с использованием SIEM + honeypot pt.2

defaultuser0

anime hater
Пользователь
Регистрация
07.07.2022
Сообщения
213
Реакции
432
Депозит
0.0003
SIEM Без Границ: Хакерская Эстетика в Мире Безопасности
Ловим хакеров и плохих парней с использованием SIEM + honeypot pt.2

kisspng-security-hacker-computer-security-session-hijackin-secure-computer-icons-2-408-free-ve...png
pngegg.png
1705477322237.png

Приветсвую форумчане! Это вторая часть статьи, тут мы уже прийдем к конкретному результату, но для начала нам нужно будет доработать то что у нас есть. Конкретная цель этой части получить результат в виде:
  1. Подключение и Настройку Honeypot - Telnet/SSH
  2. Детекртирование вредоносной активности
  3. Вывод на дашборд с определением вредоносных айпишников- серверов на ней
Хотел бы в очередной раз поблагодарить всех кто оставляет реакции под статъями.
Так же отдельно поблагодарить ice80 admin kosok11 за пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam! - Спасибо вам огромное!
Статья про установку ELK - 1 часть
Результат будет выглядеть так:
1705615187215.png


Пару дополнений перед началом:
Я уже отписал под первой статьей в комментарии, но хочу дополнить.
Если вы разварачиваете на разных серверах Эластик, Кибану и Логстеш, то у вас будет проблема что до ноды эластика не может достучаться кибана. Вам нужно поправить в конфиге /etc/elasticsearch/elasticsearch.yml
Строку "netowrk.host" и поставить тут 4 нуля
Это нужно для того чтобы вы могли не только в локалке обращаться к ноде
1705485252600.png
А чтобы подвизать теперь нормально пашущий Эластик к кибане можно в том самом конфиге /etc/kibana/kibana.yml
Просто поставьте вместо localhost/127.0.0.1 - фактический адрес ноды, я понимаю что это бонально, но поверьте мне, такое напоминание может сэкономить вам несколько часов тупняка перед монитором.

1705484772580.png
Просмотрите состояние всех служб и обязательно логстеша
Код:
systmectl status elasticsearch.service
systmectl status kibana.service
systmectl status logstash.service
systemctl status filebeat.service
Обязателньо посмотрите вообще логстеш пашет или нет? Также посомтрите порт стоит на прослушивании или нет. ss -tulnp | grep 5044
1705485666422.png


Доробатываем SIEM
Перед тем как начать тюнить, нужно чутка понять че такое logstash и как он работает, как и в каком виде мы хотим получать логи, нам определенно нужны все логи, но как они структурируються и фильтруються, вот это нам нужно понять.
Logstash состоит из трех этапов: input → filters → output. Входные данные генерируют события, фильтры изменяют их, а выходные данные отправляют их куда-то еще. Входные и выходные данные поддерживают кодеки, которые позволяют кодировать или декодировать данные при их входе или выходе из конвейера без необходимости использования отдельного фильтра.

1705486927764.png
Простыми словами мы фильтруем логи чтобы уже в SIEM они выглядили приятно для глаза. Let's gO!

Помните как для скорой руки мы поставили вывод логов сразу в эластик в первой статье, а не в логстеш? Так вот этот колхоз убираем Просто комминтируем output.elasticsearch. Напомню файл конфигурация файлбита находиться /etc/filebeat/filebeat.yml

1705486052604.png
И направляем вывод в логстеш(Просто убрав хэштег с output.logstash и hosts)

1705486182590.png
В том же файле конфига меняем тип input'a на log и включаем (ставя true) этот конфиг
Пока на строку paths не смотрим, вы уже все поняли=)
1705485884807.png

Что по поводу input, output, filter? Чутка подредачил /etc/logstash/conf.d/output.conf теперь выглядит так
1705488119337.png
Код:
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    sniffing => true
    manage_template => false
    template_overwrite => true
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}
Как вы понимаете теперь нам нужно создать файл filter.conf в директории conf.d/
Так как он обязателен для нормальной работы логстеша vim /etc/logstash/conf.d/filter.conf
1705488223065.png

Код:
input { stdin { } }
filter {
grok {
   match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
   match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
Что по поводу stdin/stdout это нужно по большой части для деббага, но можете оставить если вам не мешает.
Да, input.conf оставляем каким он был просто можете посмотреть через ss порт слушаеться или нет логстешом.

Теперь все должно быть окей, отправляем все под рестарт (елк, кибану, логстеш,файлбит)
Код:
systemctl restart elasticsearch.service
systemctl restart kibana.service
systemctl restart logstash.service
systemctl restart filebeat.service
Это мы сделали для того, чтобы посмотреть отправляет ли файлбит логи в логстеш, это конечно же тестовый вариант, но нужно убедиться что логстеш приимает логи. После чего можно остановить агента файлбита на нашем сервере (После того как мы удостоверимся что все норм)
Открываем наш любимый Эластик http://ip:5601 ставим нужный датавью или если стек еластика у вас версии > 8.* , то выбираем ваш индекс паттерн
https://xss.pro/attachments/73386/
Открываем Discovery в Кибане (Если после запуска файлбита у вас кибана лежит, просто убейте ее процесс и поднимите заново)
1705488709361.png
И можем наслаждаться логами которые поступает с хоста на котором мы включили filebeat (Напомню я делаю все на одном сервере и файлбит запущен на нем чисто для теста)
1705488944849.png



Преобразовываем Логи и ставим Honeypot


Как видно тут до жути много инфы (ip, mac, host, agtype, CPU arch, os version) как полезной так и нет, использовть поиск мы с вами будем в след.статье, тут пока просто делам красоту для глаза...
Слева есть столбик Avaliable fields, там вы можете выбрать что конктретно отображать в этой каше, условно @timestamp, host_ip и message. (Так намного удобнее анализировать большое количество логов)
Мы можем посмотреть что в конкретном логе который нас интересует, давайте откроем самый вверхний ( это можно сделать нажав на стрелку вправо )
1705489457950.png
Тут я выделил зеленым на что нужно обращать внимание, пока что это просто логи с сервера эластика, как видите тут прописанно host_ip, log_file_path и очень важно message я клянусь вам я только все это поставил на ноги и уже отлично видно как наш сервер пытаються сбрутить хд, Ну это просто запущенный сканнер который ко всем отверстиям пытаеться подобрать пароль, но мы тут отчетливо видим ip адресс 182.254.155.106, давайте забъем его на ресурс abuseipdb ( так сказать вспомню свое старое прошлое в SOC'e и проведу маленький Incident Response =)) ) и видим... ага..
1705489543103.png


1705489555098.png
Видим вредоносный айпишник, который уже помечен всеми комания и у которого рейтинг 100. Читая что пишут про этот адресс мы видим уже известную нам строку из лога =) На самом деле у них стоят большое количество хонипотов разных типов (SSH/Telnet/RDP/Windows Server/Apache и тд..) и используя точно такой же Эластик они получают эти данные в удобном виде ( Данные = айпишник злоумышленнка который пытаеться что то взломать )
Это все конечно круто, но нам так не удобно капаться в этих логах, давайте сделаем тестовое правило для эластика. Если кто то пытаеться 3 раза подобрать пароль к ssh, то у нас будет высвечиваться alert. что кто то "IP_злоумышленника" пытался подобрать пароль к ssh + сделаем красивый дашборд с графиками.
Кто бы ожидал, но наш любимый Эластик любит подкидывать проблем, для тех кто использует elk 7.*
Перед тем как создать правила нужно завести учетку elastic и kibana_system руками =/

  1. На каждом узле вашего кластера остановите Kibana и Elasticsearch, если они запущены.
  2. На каждом узле вашего кластера добавьте xpack.security.enabled параметр в $ES_PATH_CONF/elasticsearch.ymlфайл и установите значение true

1705495156696.png
Если вы устанавливали Эластик с помощью tar то путь до бинарей эластика /bin/elasticsearch
Если через пакет, то /usr/share/elasticsearch/bin
Запускаем генерацию паролей = ./elasticsearch-setup-passwords auto
1705495118628.png
Далее открываем конфигурационный файл кибаны vim /etc/kibana/kibana.yml убираем хэштеги с elasticsearch.useraname и elasticsearch.password и добавляем туда креды которые получили
1705495490736.png
В каталоге, в котором вы установили (/usr/share/kibana/bin/) Kibana, выполните следующие команды, чтобы создать хранилище ключей Kibana и добавить настройки безопасности:

    • Создайте хранилище ключей Kibana:
      ./kibana-keystore create — создание хранилища ключей
    • Добавьте пароль пользователя kibana_system в хранилище ключей Kibana:
      ./kibana-keystore add elasticsearch.password— хранилище ключей - При появлении запроса введите пароль пользователя kibana_system.
1705495738752.png
Ну и все теперь под рестарт =)
Код:
systemctl restart elasticsearch.service
systemctl restart kibana.service
Но для начала нам нужно преобразовать логи, чтобы они нормально показывали аттемпы(попытки) айпи адресс злоумышленника который пытаеться подобрать пароль (Нужно вывести его не в message, а в отдельном поле). К всему этому можно уже разворачивать Honeypot, Я буду использовать второй сервер под управлением Debian 10. Характеристики тачки:

Да да, этого более чем достаточно.


    • 1 cpu
    • 2gb ram
    • 50gb ssd
1705525968058.png

Разом поставим все необходимые тулзы + агент файлбита. Обязательно обратите внимание какой версии ставиться агент файлбита, в команде терминала я указал 7, так как мой эластик стек развернут на 7 версии.
Код:
apt install gpg
apt install vim
apt install net-tools
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
apt update
apt install filebeat

В конфиг файле мы изменим порт подключения по ssh, Это нужно для того чтобы наши легитимные заходы на тачку Файлбит не рассценивал как успешную попытку подбора пароля.
/etc/ssh/sshd_config
Тут все по классике убераем коммент и ставим любой другой порт, я ничего лучшего не придумал чем 22222 (этот порт мы будем использовать для легитимной администрации хонипота)
1705545776158.png
Перезапускаем ssh командой systemctl restart ssh и заходим со второго окна терминала по новому порту ( Первую сессию не дропнет )
ssh root@Ваш_Ip -p 22222
У нас теоретически есть 2 порта ssh, 22 и 22222. 22 порт для злоумышленников, а 22222 для нас. Не понятно но я все объясню, м

2024_01_17_0uq_Kleki (1).jpg
Визуализируем ( куда же без моих навыков рисования =) ) что у нас есть прошаренный хакер из группировки DARKBOYS 666 и он начал массовое сканирования диапазона ip-адресов и активного подбора пароля.
  • Наш Хакер Даркбойс666 отправляет креды на уже готовый (левый) 22 порт
  • Логи попадают на Хонипот под управлением агента Filebeat и данные пихаються в джейсон, после чего они отрпавляються на сервер logstash, где как я уже описывал выше идет 3 этапа,
  • Logstash: input-filter-output
  • Данные уже в отфильтрованном виде попадают в Эластик а оттуда уже в Кибану и мы получаем в панель конкреттные логи, кто где когда.
Давайте продолжим!
Код:
apt install python
apt install python-pip
pip install python-daemon argparse paramiko
apt install git
git clone https://github.com/regit/pshitt /hp/pshitt
Переходим в папку /hp/pshitt и делаем тут кнтрл Ц + кнтрл В.
Код:
cat <<EOF > /etc/systemd/system/pshitt.service
[Unit]
Description=pshitt service
Wants=network-online.target
After=network-online.target

[Install]
WantedBy=multi-user.target
EOF

mkdir /var/log/pshitt

systemctl enable pshitt
systemctl start pshitt
Находясь в папке pshitt запускаем наш сервис
Код:
pytohn3 pshitt.py -p 22 -k /hp/pshitt/test_rsa.key -o /var/log/pshitt/data.json -l /var/log/pshitt/log.log
Смотрите теперь у нас 2 порта 22(фейк) и 22222(ну или какой вы выбрали)
Теперь у при попытке подключиться по 22 порту и если вы введете любые креды вас просто дропнет, а данные адресса будут находиться в файле /var/log/pshitt/data.json (там будут абсолютно все логи 22порта)

Теперь открываем файл конфига filebeat и дадим ему понять что нужно передавать в логстеш папку /var/log/pshitt/data.json
Тут открываем на хонипоте конфиг vim /etc/filebeat/filebeat.yml
И делаем кнтрл + Ц и кнтрл + В и так же не забываем поменять на ваш айпи_адрес и порт(если вы меняли порт логстеша), так же pshitt_host ставим имя тачки хонипота которое будет отображаться в кибане:
Код:
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/pshitt/data.json
  json.keys_under_root: true

processors:
  - drop_fields:
      fields: ["beat", "source", "prospector", "offset", "host", "log", "input", "event", "fileset" ]
  - add_fields:
      target: ''
      fields:
        pshitt_host: Имя хоста

output.logstash:
  hosts: ["Ваш IP Logstash:5044"]

#Filebeat service logging:
logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0640
1705615568750.png

Тут я решил посмотреть спустя 5 мин как поживает мой 22 порт и какие логи уже успел собрать хонипот, заметем что тут также видны креды которыми пытались подобрать пароль =)
1705547622719.png

Отрпавляем это дело под рестар systemctl restart filebeat.service

Окей мы уже почти все сделали, осталось теперь удостовериться что логстеш получил наши логи с хонипота, лучше всего посмотреть в кибане (тут я решил в настройках поменять цвет темы эластика для тех кому интересно это делаеться в Stack Management -> Advance Settings
Заходим в Stack Managment -> Index patterns и создаем паттерн по индексу который мы указали в фильтре логстеша, чтобы Кибана и Эластик нам выводили в отдельном индексе иммено логги с хонипота.
Если вы используете 8 версию Эластик Стека то Stack Management -> Data View и все тоже самое.
1705616369592.png

Теперь заходим в Dashbords и нажимаем создать новый или же вы можете взять мой конфиг который я прикрепил файлом к этой теме.
Тут обязательно выбираем Index Pattern и сортировку логов и время с момент которого вы хотите видеть графики ( Тут просто перетаскиваем что нам нужно )
1705616800637.png

Я сделал себе такой вывод где видно айпи адресса злоумышленников которые хотят сбрутить, количество попыток, топ популярных юзернеймов и паролей, страны которым пренадлежат айпи адреса, так же я вывел имена провайдеров отвечающих за выделение айпи адресов плохим людям которые размещают вредоносные сервера. ( им в будующем можно на баз вашей SIEM предоставить отчет и попросить удалить эти сервера )
1705616918015.png

В следующей статье я постораюсь настроить вывод в дашборд карты ( где можно будет видеть откуда иммено идет атака ) ну и само собой сделаю детальный анализ инцедента и как на него реагировать.
Людям которые хотят разобраться во всем этом я хочу дать несколько советов:
  1. Читайте логи Эластика, Логстеша, Кибаны, Файлбита
  2. Если что то не работает то уже по прочитанным логам вы можете понять какая проболема и решить ее используя гугл
  3. Используйте такую вещь как тест конфигов (У Файлбита и Логстеша они есть)
Я понимаю, что такого не было большого количества просмотров и реакции у первой статьи просто потому что небыло понятно куда это идет, но теперь вы видите результат.
Я писал эту статью на протижении недели, надеюсь что вы не будете так грубы к орфаграфическим ошибкам. Надеюсь на ваше понимание!
Полезная инфа - https://www.elastic.co/guide/en/elasticsearch/reference/8.11/elasticsearch-intro.html
Безработному блютимеру на ход ноги - bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f
Спасибо всем кто прочитал до конца! Ждите новой статьи.

Авторство: defaultuser0​

Источник: xss.pro​

 

Вложения

  • 1705494524807.png
    1705494524807.png
    36.7 КБ · Просмотры: 16
Последнее редактирование:
Я создал телеграмм канал куда буду публиковать интересные материалы
Если интересно - https://t.me/infosecetochto
 
Автор, спасибо за статью, по поводу рисования можешь упростить жизнь фигурами которые есть даже в pait))
Ахах)) ну мне нравиться творчество, а эти вашие бездушные блок схемы.. -Не не мое🥱
 
Хорошая статья, спасибо. Пока читал, пришла мысль наподнимать ханипотов, что бы собрать потом бд паролей с них. Там же не только секлисты используются наверняка:)
 
Хорошая статья, спасибо. Пока читал, пришла мысль наподнимать ханипотов, что бы собрать потом бд паролей с них. Там же не только секлисты используются наверняка:)
Спасибо, конечно, но по большей части хлам из разряда rockyou.txt
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх