Использование SIEM в ходе подготовки этичных хакеров: открываем цикл практических лабораторных работ

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Как мы готовим в наших университетах и учебных центрах этичных хакеров? Как правило, предоставляем им Kali Linux или «Сканер-ВС», включающие набор инструментов для тестирования защищенности и машину со множеством уязвимостей. В результате слушатели могут получить довольно поверхностное представление о том, как проводится тестирование на проникновение на самом деле, так как в реальных проектах пентестеры имеют дело с инфраструктурами, включающими средства защиты информации и системы мониторинга событий информационной безопасности (SIEM). Чтобы исправить ситуацию и предоставить начинающим специалистам возможность изучать методы тестирования защищенности и инструменты мониторинга событий информационной безопасности в комплексе, мы начинаем этой статьей публикацию практических лабораторных работ.



Наша вводная лабораторная работа посвящена выявлению инцидента, связанного с получением доступа к административной панели web-сервера.

Кейс


Во время отпуска администратора информационной безопасности были привлечены сторонние разработчики для создания web-приложения, которое планировалось разместить на web-сервере Tomcat. Разработчики для удобства сделали доступной всему внешнему миру веб-консоль управления приложениями сервера и создали «нетривиальную» учётную запись admin:admin.

Угроза


Злоумышленник, сканируя внешние хосты организации, наталкивается на порт 8080 рассматриваемого веб-сервера, убеждается в доступности административной консоли и после немногочисленных попыток успешно подбирает пароль к учётной записи администратора.

Задача


Необходимо определить, как администратор ИБ мог бы до своего отпуска настроить SIEM, чтобы своевременно зарегистрировать инцидент, связанный с рассматриваемой угрозой. После этого необходимо реализовать данный сценарий атаки и убедиться в корректном срабатывании директив корреляции.

Виртуальная инфраструктура


Ситуация развивается в следующей ИТ-инфраструктуре, развернутой в VirtualBox:



  1. Машина атакующего (Kali Linux, IP: 8.8.8.10, 4GB RAM, kali:kali);
  2. Межсетевой экран с системой обнаружения вторжений (pfSense, IP внешний: 8.8.8.1, IP внутренней сети: 192.168.1.1, IP DMZ: 192.168.2.1, 1GB RAM, admin:pfsense);
  3. Web-сервер (Ubuntu Server 18.04 c Tomcat, IP 192.168.2.15, 2GB RAM, user:user);
  4. Сервер SIEM-системы «КОМРАД» (Ubuntu 20.04, IP 192.168.1.99, 4GB RAM, user:user).

Если интересно самостоятельно развернуть данную инфраструктуру, то можно воспользоваться инструкцией, если же есть желание сэкономить время, то мы выложили сконфигурированные виртуальные машины в формате OVA. SIEM-систему необходимо будет получить дополнительно, но об этом будет написано ниже.

Решение: настройка SIEM-системы


Для решения задачи мы последовательно выполним действия злоумышленника, проведем анализ того, как они отражаются в журналах межсетевого экрана и веб-сервера, настроим сбор, парсинг и фильтрацию событий, а также создадим необходимые директивы корреляции в SIEM-системе.
В руководстве по нашей лабораторной представлены подробные шаги по решению данной задачи, в статье же мы сконцентрируемся только на ключевых моментах.

1. Отправка событий с межсетевого экрана


Межсетевой экран pfSense позволяет отправлять свои журналы по протоколу Syslog на удаленный сервер, для этого достаточно задать IP-адрес и порт syslog-коллектора SIEM «КОМРАД», а также добавить правило, разрешающее отправку логов из сети 192.168.2.0/24 во внутреннюю сеть 192.168.1.0/24.



В SIEM-систему будут поступать события следующего вида:

<134>1 2020-10-18T02:33:40.684089+00:00 pfSense.localdomain filterlog 9761 — - 4,,,1000000103,em0,match,block,in,4,0x0,,64,25904,0,DF,6,tcp,60,8.8.8.10,8.8.8.1,35818,1721,0,S,1017288379,,64240,,mss;sackOK;TS;nop;wscale

Как можно заметить, данная запись содержит такую важную информацию, как IP-адрес хоста, инициировавшего соединение, IP-адрес хоста, с которым пытаются установить соединение, а также индикацию того, что попытка соединения была заблокирована.

2. Отправка событий с web-сервера


Web-cервер Tomcat регистрирует http-запросы в локальных журналах, которые можно перенаправить через rsyslog в SIEM-систему. Для решения этой задачи можно воспользоваться также и файловым коллектором, который входит в состав SIEM-системы «КОМРАД». В записях можно увидеть, что регистрируется IP-адрес хоста, с которого поступил запрос, а также учётная запись пользователя в случае его успешной авторизации:



3. Получение потока событий SIEM-системой «КОМРАД»


Рассмотренные события автоматически регистрируется SIEM-системой «КОМРАД»:



Упомянутых двух типов событий достаточно, чтобы выявлять следующие ситуации:

  • Блокировка соединения – по признаку block;
  • Сканирование портов – в случае нескольких блокировок попыток соединений, инициированных одним и тем же хостом;
  • Подозрение на несанкционированный доступ – сканирование портов с последующим получением административного доступа.

Все три ситуации могут быть инцидентами информационной безопасности, но, конечно, с разными уровнями важности.

Перед тем, как регистрировать инциденты нам необходимо научиться извлекать указанную выше полезную информацию из событий.

4. Разбор событий SIEM-системой «КОМРАД» (парсинг)


Для парсинга событий источника в SIEM-системе необходимо создать плагин, включающий в себя набор регулярных выражений. Для самых популярных источников в составе «КОМРАД» уже имеются готовые плагины. В случае отсутствия плагина для пользователя доступна возможность его создания.

Ниже представлен пример разработки регулярного выражения для извлечения полей из рассмотренного выше события межсетевого экрана. В качестве инструмента отладки мы воспользовались порталом https://regex101.com/



После создания плагина данные из событий извлекаются в отдельные поля, как это видно из следующей карточки события:



5. Настройка фильтров для извлечения из потока интересующих событий информационной безопасности


Для того, чтобы в потоке событий, поступающих в SIEM-систему выявлять интересующие нас события, нам понадобится настроить фильтры. В SIEM-системе «КОМРАД» фильтры формируются с использованием популярного скриптового языка Lua (ИБ-специалистам он уже знаком по Nmap и Suricata).

Для выбора событий межсетевого экрана, связанных с блокировкой соединения, мы создадим следующий фильтр:

-- функция filter принимает событие
function filter(event)
-- из события извлекается действие, которое было предпринято и IP-адрес машины, инициировавшей подключение
    action = event:getString ('Action')
    ip = event:getString ('IpSrc')
-- в случае блокировки возвращается IP-адрес, который можно использовать в директиве корреляции
    if action == 'block' then
        return {IP=ip}
    end
end

Ненамного сложнее выглядит фильтр для события Tomcat, в котором мы проверяем соответствует ли извлечённая из события учётная запись значению «admin». В этом случае также возвращаем IP-адрес.

function filter(event)
    journal = event:getString ('Journal')
    login = event:getString ('Username')
    ip = event:getString ('IpSrc')
    
    if journal == 'tomcat-access' and login == 'admin' then
        return {IP=ip}
    end
end

При использовании в продуктивной среде для повышения производительности системы в начале каждого фильтра может потребоваться поставить проверку на определенный идентификатор коллектора для ограничения области действия фильтра.

6. Создание директив корреляции


Создадим директивы корреляции для рассматриваемых ситуаций со следующими уровнями важности:

  1. Блокировка соединения – «несущественная»;
  2. Сканирование портов – «низкая»;
  3. Отправка http-запросов с использованием учетной записи admin – «высокая».

Для создания инцидента в случае блокировки соединения достаточно в директиве корреляции указать на единственный применяемый фильтр:

filter 5

Вторая директива, которая должна создавать инцидент в случае трехкратного срабатывания блокировки соединения, инициированного одним и тем же хостом, будет выглядеть следующим образом:

/*Объявляем переменную ip, которой присваиваем значение, получаемое при первом срабатывании фильтра на блокировку соединения.*/
var ip
filter 5 export ip = ep.IP
/*Ожидаем в течение одной минуты аналогичного события с совпадающим IP.
С помощью ключевого слова notforking, обозначаем необходимость остановки шага при первом срабатывании.*/
filter 5 +1m where ep.IP==ip notforking
//повторяем для третьего события.
filter 5 +1m where ep.IP==ip notforking

В третьей директиве мы добавляем еще одну строку, в которой задействуем фильтр с идентификатором 6, созданный для выборки запросов к веб-серверу с учетной записью admin.


var ip
filter 5 export ip = ep.IP
filter 5 +1m where ep.IP==ip notforking
filter 5 +1m where ep.IP==ip notforking
filter 6 +1m where ep.IP==ip notforking

В учебном примере временное окно оставили равным 1 минуте, в реальной жизни имеет смысл его увеличить до нескольких минут.

Решение: проведение атаки и ее выявление


После конфигурации источников событий и SIEM-системы настало время провести учебную атаку. Сначала просканируем порты:



Затем заходим на порт 8080 и проходим авторизацию с учётной записью admin:admin:



Указанные действия фиксируются SIEM-системой «КОМРАД»: срабатывают все три директивы корреляции:



Заключение


Таким образом, в этой лабораторной работе мы увидели последовательность действий по сбору и анализу событий информационной безопасности в случае получения административного доступа к веб-серверу. В следующей лабораторной работе нападающая сторона будет развивать атаку и использовать полученный административный доступ для сбора информации о целевой инфраструктуре.

Как получить демо-версию SIEM-системы «КОМРАД»


Сейчас проходит бета-тестирование нашего продукта, в котором может принять участие любой желающий. Для этого мы предоставляем текущую версию SIEM-системы в виде Docker-контейнера. В демо-версии всего два ограничения: скорость обработки событий урезана до 1000 EPS и отсутствует система авторизации и управления доступом.

Для того, чтобы получить архив с демо-версией напишите нам на адрес электронной почты getkomrad@npo-echelon.ru c почтового ящика вашей организации (нам интересно, кто примет участие). Также приглашаем вас в нашу группу в Telegram, где можно получить помощь в случае каких-либо затруднений: https://t.me/komrad4

Ссылки


  1. Виртуальные машины для организации учебной инфраструктуры в VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
  2. Инструкция по развертыванию инфраструктуры с нуля, если не хочется пользоваться готовыми машинами: https://yadi.sk/i/tD8nxckjYwr_6Q
  3. Решение лабораторной №1: https://yadi.sk/i/ffztj2XQMPD-xw
Источник: https://habr.com/ru/company/npoechelon/blog/523984/


Интересные статьи

Интересные статьи

Рады представить финальный мажорный релиз PhpStorm в этом году! Под катом подробный разбор всех изменений и новых возможностей. Читать дальше →
Больше двадцати лет тому назад таблицы были основным HTML-средством для оформления веб-страниц. Таблицы давали веб-мастерам стабильный механизм для создания сайтов, имеющих некие признаки...
На дворе 2020 год и фоновым шумом вы уже привыкли слышать: «Кубернетес — это ответ!», «Микросервисы!», «Сервис меш!», «Сесурити полиси!». Все вокруг бегут в светлое будущее. Подход...
Блог любителя ретро — странное место для реакции на текущие события. Нужно подождать лет двадцать, а потом уже высказываться. Но ситуация сложилась непростая: уже вторую неделю я сижу на (пока) д...
В нашей новой подборке мышление с стиле SwiftUI, библиотеки анимации, Huawei без сервисов Google, тестирование в Airbnb, самые популярные инструменты дизайна и интерфейсы для пожилых, микросессии...