- PVSM.RU - https://www.pvsm.ru -
В базе приложений Splunk есть много решений, которые позволяют делать Enrichment и добавлять информацию о том, что тот или иной IP-адрес выглядит подозрительным и «засветился» в той или иной reputation-базе. Однако, эти приложения либо платные (например, Recorded Future App [1], Kaspersky Threat Feed App [2]), либо очень медленные (IP Reputation App [3], на момент написания к тому же не до конца доступен из-за maintenance с февраля месяца), поэтому мы решили разработать свой opensource плагин RST Cloud Threat Database Add-on for Splunk [4], который позволит собирать в единую базу разрозненные сведения из открытых источников и выдавать ответы на потоках в десятки тысяч запросов в секунду.
Для создания плагина был разработан небольшой набор скриптов на Python, который обогащает данные при поиске в Splunk налету, запрашивая нужные сведения во внешней базе данных. В качестве БД мы использовали Key-Value хранилище Redis, которое держит в оперативной памяти все значения и практически не зависит от скорости чтения/записи с дисковой подсистемы. Плагин опубликован на github [5] и открыт для предложений по улучшению.
Наши тесты производительности данного решения на виртуальной машине с 2 ядрами Intel® Xeon® E5-2630 и 4 ГБ RAM показали, что с учетом всех накладных расходов со стороны Python 2.7, виртуализации на обычном оборудовании и самого Splunk, пропускная способность при 300K записей в Redis составляет в среднем 25K RPS, что достаточно для многих задач. Стоит сразу обратить ваше внимание на то, что данные цифры получены при использовании Redis «из коробки» без дополнительной оптимизации и кластеризации. Также в скрипте поиска пока не используются механизмы pipeline при работе с базой.
Например, использование плагина позволяет определить web form spammer или подключения к сайту с зараженных IP-адресов.
Можно быстро вывести всех «опасных» клиентов из консоли:
sourcetype=Web:*:access_log host=www.demo.demo | fields clientip | dedup clientip | lookup local=true lookupthreat clientip OUTPUT threatscore threatsource threatcategory | where threatscore > 0
Отображая данные, мы показываем их источник, категории в которых засветился данный IP в разных базах и кумулятивную оценку Threat Score.
Можно воспользоваться макросом, с которым работать несколько удобнее:
| `threatDB(clientip)`
Для упрощения Redis может стоять непосредственно на Splunk Head, а может быть вынесен на другой сервер или кластер серверов. Кроме того, в состав RST Cloud Threat Database Add-on входит несколько скриптов, которые автоматически скачивают репутационные базы из различных источников и импортируют их в Redis.
Сегодня очень много надежных и открытых источников для сбора подозрительных и опасных IP-адресов. Например, плагин позволяет работать с более чем 15, включая:
База может включать как отдельные адреса, которые ищутся по ключу IP: red.smembers('ip:'+clientip), так и подсети, обрабатываемые скриптом в цикле for i in red.sscan_iter(name='net:index',match=str(ip.words[0])+'*',count=500).
Теперь перейдем к установке. Описание по шагам:
Первый шаг мы опустим, во-первых, манулов много, а, во-вторых, на debian он ставится одной командой apt-get install -y redis-server с базовыми настройками.
Для решения проблем с зависимостями от Python библиотек достаточно выполнить:
$ wget bootstrap.pypa.io/get-pip.py [17]
$ python get-pip.py
$ sudo pip install redis
$ sudo pip install netaddr
Стоит отметить, что Splunk использует внутри себя свой Python, который не стоит модифицировать, поэтому все дополнительное лучше устанавливать в тот Python, что живет в операционной системе.
В зависимости от того как вы установили Redis вам может потребоваться исправить адреса и порты подключения в скриптах в каталоге $SPLUNK_HOME/etc/apps/threatDB/bin.
Основной скрипт поиска из Splunk: redisworker.py
sys.path.append("/usr/local/lib/python2.7/dist-packages") # Path to redis-py module
redis_server = '127.0.0.1'
redis_port = 6379
Скрипт очистки БД: threat_flushdb.py
redis_server = '127.0.0.1'
redis_port = 6379
Скрипт загрузки обновленных IoC: threatuploader.py
redis_server = '127.0.0.1'
redis_port = 6379
Скрипт-загрузчик IoC из разных источников: start_threatupload.sh
base_dir=/opt/splunk/bin/scripts/threatDB
python_bindir=/usr/bin
Далее выбираем какой-нибудь временный каталог:
$ mkdir -p /tmp/threatsupload
И настраиваем CRON-планировщик, например, через файл /etc/crontab:
2 0 * * * root $SPLUNK_HOME/etc/apps/threatDB/bin/start_threatupload.sh /tmp/threatsupload
В продуктивной среде вместо root лучше использовать другую учетную запись. Так же стоит отметить, что установленного по умолчанию обновления раз в сутки достаточно, так как TTL для записей в БД составляет 48 часов.
Платные решения предоставляют целый набор индикаторов компрометации, включая IP-адреса, доменные адреса, хэши и пути файлов, имена мьютексов и т.п., что позволяет идентифицировать активность вредоносного ПО в организации, мы же в RST Cloud [18] концентрируемся на вебе, поэтому пока наш плагин дает возможность работы только с IP-адресами. В дальнейшем мы планируем доработать плагин в части производительности и расширить его функционал, в том числе добавить фиды репутационных баз с DNS-именами, тем самым расширить область его применения.
Автор: kirion
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/250115
Ссылки в тексте:
[1] Recorded Future App: https://splunkbase.splunk.com/app/2629/
[2] Kaspersky Threat Feed App: https://splunkbase.splunk.com/app/3176/
[3] IP Reputation App: https://splunkbase.splunk.com/app/1457/
[4] RST Cloud Threat Database Add-on for Splunk: https://splunkbase.splunk.com/app/3236/
[5] github: https://github.com/rstcloud/threatdb/
[6] Sblam!: https://sblam.com/en.html
[7] StopForumSpam: http://www.stopforumspam.com/
[8] CINS Score : http://www.cinsscore.com/
[9] Blocklist.de: http://www.blocklist.de/ru/index.html
[10] Ransomware Tracker: https://ransomwaretracker.abuse.ch/
[11] AlienVault OTX : https://www.alienvault.com/open-threat-exchange
[12] Binary Defence: https://www.binarydefense.com/
[13] EmergingThreats: https://rules.emergingthreats.net/
[14] Arbor ATLAS: https://www.arbornetworks.com/global-threat-intelligence-products
[15] Botvrij: http://www.botvrij.be/index.php/en/
[16] Tor Project: https://www.torproject.org/
[17] bootstrap.pypa.io/get-pip.py: https://bootstrap.pypa.io/get-pip.py
[18] RST Cloud: https://www.rstcloud.net/
[19] Источник: https://habrahabr.ru/post/324340/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.