- PVSM.RU - https://www.pvsm.ru -

Добавляем в Splunk бесплатные фиды IP Reputation

В базе приложений 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-адресов.

image

Можно быстро вывести всех «опасных» клиентов из консоли:

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.

image

Можно воспользоваться макросом, с которым работать несколько удобнее:

| `threatDB(clientip)`

Для упрощения Redis может стоять непосредственно на Splunk Head, а может быть вынесен на другой сервер или кластер серверов. Кроме того, в состав RST Cloud Threat Database Add-on входит несколько скриптов, которые автоматически скачивают репутационные базы из различных источников и импортируют их в Redis.

Сегодня очень много надежных и открытых источников для сбора подозрительных и опасных IP-адресов. Например, плагин позволяет работать с более чем 15, включая:

  • Sblam! [6] – база веб-спамеров в блогах, форумах и комментариях
  • StopForumSpam [7] — база веб-спамеров в блогах, форумах, wiki
  • CINS Score [8]– база Sentinel IPS, которой компания поделилась с community
  • Blocklist.de [9] – база с адресами атакующих на Postfix, SSH, Apache, Spambots, irc-Bots, Reg-Bots, DDos и других
  • Ransomware Tracker [10] – адреса серверов CnC для Ransomware (программы вымогатели)
  • AlienVault OTX [11]– открытые фиды от популярного SIEM
  • Binary Defence [12] – специализированный поставщик Theat Intelligence
  • EmergingThreats [13] – мы интегрировали фиды от компании ProofPoint для блокирования на межсетевых экранах
  • Arbor ATLAS [14] – адреса, от известнейшей компании, с которых идет DDoS-атаки
  • Botvrij [15] – адреса скомпрометированные вредоносным ПО
  • Tor Project [16] – адреса Tor-сетей.

База может включать как отдельные адреса, которые ищутся по ключу IP: red.smembers('ip:'+clientip), так и подсети, обрабатываемые скриптом в цикле for i in red.sscan_iter(name='net:index',match=str(ip.words[0])+'*',count=500).

Теперь перейдем к установке. Описание по шагам:

  1. Установка Redis
  2. Установка необходимых библиотек
  3. Корректировка строк для подключения в скриптах
  4. Настройка CRON-задачи для актуализации IP Reputation БД

Первый шаг мы опустим, во-первых, манулов много, а, во-вторых, на 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