четверг, 19 января 2017 г.

Maltrail. Враг не пройдёт «бесследно»

Приветствую, уважаемый читатель!

Сегодня я хочу продолжить тему выявления вредоносной и подозрительной активности с помощью различных «чёрных» списков. Применение данного способа совместно с сигнатурными методами бывает совсем не лишним. Поможет нам в этом небольшая IDS Maltrail.




Помнится, меня посетила идея периодически собирать списки публичный прокси-серверов и выходных нод TOR-сети для выявления идущих с них активностей. Данная идея и реализация описана тут - http://unitybas.blogspot.ru/2016/06/splunk-proxy-tor-1.html. Но как оказалось данная задача и множество аналогичных задач уже решены и мне порекомендовали воспользоваться IDS Maltrail. Об этом инструменте и пойдет речь.


Пару слов об архитектуре Maltrail

Особенность Maltrail в том, что она целиком написана на python и при желании можно ознакомиться с логикой работы всей системы. Архитектура данной IDS клиент-серверная, т.е. имеется 2 основных компонента:
  • сенсор, который анализирует трафик и ищет подозрительные активности;
  • сервер, который используется для анализа данных от сенсоров.


Подключение к серверу осуществляется через web-интерфейс. В конфигурации по умолчанию, и сервер и сенсор находятся на одном устройстве, но это совсем не обязательно. Сервер может (и по идее должен) быть расположен на отельном устройстве, а в конфигах сенсоров просто указывается, куда слать алерты. Эту возможность сенсоров мы будем использовать для подключения к Splunk.

Установка Maltrail

Подробно установка системы описана тут - https://defcon.ru/malware-analysis/3223/ и повторять не имеет смысла. Если коротко, то вот всё что нужно:

 apt-get install python-pcapy git
 git clone https://github.com/stamparm/maltrail.git
 cd maltrail/
 python sensor.py (стартуем сенсор)
 python server.py (стартуем сервер)

Работа с Maltrail

При первом запуске сенсора Maltrail необходимо скачать эти самые trail (следы), которые будут искаться в трафике. В дальнейшем они будут обновляться с периодичность указанной в конфиге.






Источников trails система подтягивает очень много, для чего используются различные python-скрипты, которые можно найти тут - .../maltrail/trails/feeds
Сенсор и сервер Maltrail делят на двоих общий конфигурационный файл – maltrail.conf, который разделен на секции [Server] и [Sensor].

[Server]

Для сервера, на мой взгляд, полезны следующие параметры:

USERS
В данном разделе указана учетная запись admin с хэшем(sha256) пароля по умолчанию (changeme!). Естественно, пароль надо изменить и указать новый хэш, разработчики Maltrail в комментариях заботливо написали, как это можно сделать:

echo -n 'password' | sha256sum | cut -d " " -f 1

Можно создать несколько учетных записей, просто перечислив их через запятую.

HTTP_ADDRESS и HTTP_PORT
В данном разделе указываются ip-адрес и порт, на которых поднимется web-интерфейс панели администрирования сервера.

UDP_ADDRESS и UDP_PORT
В данном разделе можно задать ip-адрес и порт, которые будет слушать сервер для получения алертов от других (не установленных локально) сенсоров Maltrail.  


[Sensor]

Для сенсора, считаю полезными следующие параметры:

MONITOR_INTERFACE
В данном разделе указывается, с какого интерфейса анализировать трафик, по умолчанию стоит «any», т.е. со всех.

CAPTURE_FILTER
В данном разделе указываются правила захвата трафика (читай ключи утилиты tcpdump) с помощью которых можно задать какой трафик, приходящий на интерфейс, анализировать. Я выставил себе следующее правило:

ip or ip6  (что соответствует tcpdump i eth0 ip or ip6)

Сделано это, по видимости, для того, чтобы у администратора была возможность ограничить область анализа и снизить нагрузку на вычислительные мощности. Например, мы хотим прикрыть IDS только обращение к web-серверу на 80/tcp порту, зачем нам анализировать все пакеты?


SYSLOG_SERVER
В данном разделе указывается адрес сервера, куда слать syslog-сообщения об алертах в формате CEF. Если для сбора используется Splunk, указываем его ip и порт.


Администрирование Maltrail


После запуска сервера Maltrail необходимо зайти на web-интерфейс панели администрирования (по умолчанию порт 8338/tcp) и ввести учетные данные. Появится главный дашборд, на котором можно изучить информацию о выявленных алертах. Есть несколько предустановленных способов визуализации данных (5 больших иконок), по нажатию на которые появляются диаграммы и графики. 





В целом всё просто и сложностей в понимании интерфейс не вызывает. Мне понравилась возможность при наведении мыши на IP-адрес получить по нему дополнительную информацию.  





Интегрируем со Splunk


Для начала необходимо на Splunk-сервере создать слушающий udp-сокет и указать, что приходить будет syslog-сообщения. В настройках сенсора Maltrail(SYSLOG_SERVER) необходимо вписать соответствующий сокет.





После создания нового Data Inputs алерты начнут поступать в sourcetype «Maltrail». CEF неплохо парсится Splunk, и почти все значащие поля достаются.




Чтобы вытащить недостающие поля можно воспользоваться «Extract new fields» и выбрать способ «Delimiter», в котором в качестве разделителя установить «Pipe».   




Теперь можно получить результаты, вбив следующий запрос:

source=Maltrail

| table _time,alert_date,src,spt,dst,dpt,trail,info




Собственно, теперь можно получать события от данной IDS и визуализировать их средствами Splunk

Комментариев нет:

Отправить комментарий