SIEM Без Границ: Хакерская Эстетика в Мире Безопасности
Ловим хакеров и плохих парней с использованием SIEM + honeypot pt.2
Ловим хакеров и плохих парней с использованием SIEM + honeypot pt.2
Приветсвую форумчане! Это вторая часть статьи, тут мы уже прийдем к конкретному результату, но для начала нам нужно будет доработать то что у нас есть. Конкретная цель этой части получить результат в виде:
- Подключение и Настройку Honeypot - Telnet/SSH
- Детекртирование вредоносной активности
- Вывод на дашборд с определением вредоносных айпишников- серверов на ней
Так же отдельно поблагодарить ice80 admin kosok11 за пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam! - Спасибо вам огромное!
Статья про установку ELK - 1 часть
Результат будет выглядеть так:
Пару дополнений перед началом:
Я уже отписал под первой статьей в комментарии, но хочу дополнить.Если вы разварачиваете на разных серверах Эластик, Кибану и Логстеш, то у вас будет проблема что до ноды эластика не может достучаться кибана. Вам нужно поправить в конфиге /etc/elasticsearch/elasticsearch.yml
Строку "netowrk.host" и поставить тут 4 нуля
Это нужно для того чтобы вы могли не только в локалке обращаться к ноде
Просто поставьте вместо localhost/127.0.0.1 - фактический адрес ноды, я понимаю что это бонально, но поверьте мне, такое напоминание может сэкономить вам несколько часов тупняка перед монитором.
Код:
systmectl status elasticsearch.service
systmectl status kibana.service
systmectl status logstash.service
systemctl status filebeat.service
ss -tulnp | grep 5044Доробатываем SIEM
Logstash состоит из трех этапов: input → filters → output. Входные данные генерируют события, фильтры изменяют их, а выходные данные отправляют их куда-то еще. Входные и выходные данные поддерживают кодеки, которые позволяют кодировать или декодировать данные при их входе или выходе из конвейера без необходимости использования отдельного фильтра.
Помните как для скорой руки мы поставили вывод логов сразу в эластик в первой статье, а не в логстеш? Так вот этот колхоз убираем Просто комминтируем output.elasticsearch. Напомню файл конфигурация файлбита находиться /etc/filebeat/filebeat.yml
Пока на строку paths не смотрим, вы уже все поняли=)
Что по поводу input, output, filter? Чутка подредачил /etc/logstash/conf.d/output.conf теперь выглядит так
Код:
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
template_overwrite => true
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Так как он обязателен для нормальной работы логстеша
vim /etc/logstash/conf.d/filter.conf
Код:
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 }
}
Да, input.conf оставляем каким он был просто можете посмотреть через ss порт слушаеться или нет логстешом.
Теперь все должно быть окей, отправляем все под рестарт (елк, кибану, логстеш,файлбит)
Код:
systemctl restart elasticsearch.service
systemctl restart kibana.service
systemctl restart logstash.service
systemctl restart filebeat.service
Открываем наш любимый Эластик http://ip:5601 ставим нужный датавью или если стек еластика у вас версии > 8.* , то выбираем ваш индекс паттерн
Открываем Discovery в Кибане (Если после запуска файлбита у вас кибана лежит, просто убейте ее процесс и поднимите заново)
Преобразовываем Логи и ставим Honeypot
Как видно тут до жути много инфы (ip, mac, host, agtype, CPU arch, os version) как полезной так и нет, использовть поиск мы с вами будем в след.статье, тут пока просто делам красоту для глаза...
Слева есть столбик Avaliable fields, там вы можете выбрать что конктретно отображать в этой каше, условно @timestamp, host_ip и message. (Так намного удобнее анализировать большое количество логов)
Мы можем посмотреть что в конкретном логе который нас интересует, давайте откроем самый вверхний ( это можно сделать нажав на стрелку вправо )
Это все конечно круто, но нам так не удобно капаться в этих логах, давайте сделаем тестовое правило для эластика. Если кто то пытаеться 3 раза подобрать пароль к ssh, то у нас будет высвечиваться alert. что кто то "IP_злоумышленника" пытался подобрать пароль к ssh + сделаем красивый дашборд с графиками.
Кто бы ожидал, но наш любимый Эластик любит подкидывать проблем, для тех кто использует elk 7.*
Перед тем как создать правила нужно завести учетку elastic и kibana_system руками =/
Если вы устанавливали Эластик с помощью tar то путь до бинарей эластика /bin/elasticsearch
Если через пакет, то /usr/share/elasticsearch/bin
Запускаем генерацию паролей = ./elasticsearch-setup-passwords auto
Далее открываем конфигурационный файл кибаны
В каталоге, в котором вы установили (/usr/share/kibana/bin/) Kibana, выполните следующие команды, чтобы создать хранилище ключей Kibana и добавить настройки безопасности:
Ну и все теперь под рестарт =)
Перед тем как создать правила нужно завести учетку elastic и kibana_system руками =/
- На каждом узле вашего кластера остановите Kibana и Elasticsearch, если они запущены.
- На каждом узле вашего кластера добавьте xpack.security.enabled параметр в $ES_PATH_CONF/elasticsearch.ymlфайл и установите значение true
Если через пакет, то /usr/share/elasticsearch/bin
Запускаем генерацию паролей = ./elasticsearch-setup-passwords auto
vim /etc/kibana/kibana.yml убираем хэштеги с elasticsearch.useraname и elasticsearch.password и добавляем туда креды которые получили
- Создайте хранилище ключей Kibana:
./kibana-keystore create— создание хранилища ключей - Добавьте пароль пользователя kibana_system в хранилище ключей Kibana:
./kibana-keystore add elasticsearch.password— хранилище ключей - При появлении запроса введите пароль пользователя kibana_system.
- Создайте хранилище ключей Kibana:
Код:
systemctl restart elasticsearch.service
systemctl restart kibana.service
Да да, этого более чем достаточно.
- 1 cpu
- 2gb ram
- 50gb ssd
Разом поставим все необходимые тулзы + агент файлбита. Обязательно обратите внимание какой версии ставиться агент файлбита, в команде терминала я указал 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 (этот порт мы будем использовать для легитимной администрации хонипота)
systemctl restart ssh и заходим со второго окна терминала по новому порту ( Первую сессию не дропнет )
ssh root@Ваш_Ip -p 22222
У нас теоретически есть 2 порта ssh, 22 и 22222. 22 порт для злоумышленников, а 22222 для нас. Не понятно но я все объясню, м
- Наш Хакер Даркбойс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
Код:
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
Код:
pytohn3 pshitt.py -p 22 -k /hp/pshitt/test_rsa.key -o /var/log/pshitt/data.json -l /var/log/pshitt/log.log
Теперь у при попытке подключиться по 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
Тут я решил посмотреть спустя 5 мин как поживает мой 22 порт и какие логи уже успел собрать хонипот, заметем что тут также видны креды которыми пытались подобрать пароль =)
Отрпавляем это дело под рестар
systemctl restart filebeat.serviceОкей мы уже почти все сделали, осталось теперь удостовериться что логстеш получил наши логи с хонипота, лучше всего посмотреть в кибане (тут я решил в настройках поменять цвет темы эластика для тех кому интересно это делаеться в Stack Management -> Advance Settings
Заходим в Stack Managment -> Index patterns и создаем паттерн по индексу который мы указали в фильтре логстеша, чтобы Кибана и Эластик нам выводили в отдельном индексе иммено логги с хонипота.
Если вы используете 8 версию Эластик Стека то Stack Management -> Data View и все тоже самое.
Теперь заходим в Dashbords и нажимаем создать новый или же вы можете взять мой конфиг который я прикрепил файлом к этой теме.
Тут обязательно выбираем Index Pattern и сортировку логов и время с момент которого вы хотите видеть графики ( Тут просто перетаскиваем что нам нужно )
Я сделал себе такой вывод где видно айпи адресса злоумышленников которые хотят сбрутить, количество попыток, топ популярных юзернеймов и паролей, страны которым пренадлежат айпи адреса, так же я вывел имена провайдеров отвечающих за выделение айпи адресов плохим людям которые размещают вредоносные сервера. ( им в будующем можно на баз вашей SIEM предоставить отчет и попросить удалить эти сервера )
В следующей статье я постораюсь настроить вывод в дашборд карты ( где можно будет видеть откуда иммено идет атака ) ну и само собой сделаю детальный анализ инцедента и как на него реагировать.
Людям которые хотят разобраться во всем этом я хочу дать несколько советов:
- Читайте логи Эластика, Логстеша, Кибаны, Файлбита
- Если что то не работает то уже по прочитанным логам вы можете понять какая проболема и решить ее используя гугл
- Используйте такую вещь как тест конфигов (У Файлбита и Логстеша они есть)
Я писал эту статью на протижении недели, надеюсь что вы не будете так грубы к орфаграфическим ошибкам. Надеюсь на ваше понимание!
Полезная инфа - https://www.elastic.co/guide/en/elasticsearch/reference/8.11/elasticsearch-intro.html
Безработному блютимеру на ход ноги - bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f
Спасибо всем кто прочитал до конца! Ждите новой статьи.
Авторство: defaultuser0
Источник: xss.pro
Вложения
Последнее редактирование:

))