Как мы готовим в наших университетах и учебных центрах этичных хакеров? Как правило, предоставляем им Kali Linux или «Сканер-ВС», включающие набор инструментов для тестирования защищенности и машину со множеством уязвимостей. В результате слушатели могут получить довольно поверхностное представление о том, как проводится тестирование на проникновение на самом деле, так как в реальных проектах пентестеры имеют дело с инфраструктурами, включающими средства защиты информации и системы мониторинга событий информационной безопасности (SIEM). Чтобы исправить ситуацию и предоставить начинающим специалистам возможность изучать методы тестирования защищенности и инструменты мониторинга событий информационной безопасности в комплексе, мы начинаем этой статьей публикацию практических лабораторных работ.
Наша вводная лабораторная работа посвящена выявлению инцидента, связанного с получением доступа к административной панели web-сервера.
Во время отпуска администратора информационной безопасности были привлечены сторонние разработчики для создания web-приложения, которое планировалось разместить на web-сервере Tomcat. Разработчики для удобства сделали доступной всему внешнему миру веб-консоль управления приложениями сервера и создали «нетривиальную» учётную запись admin:admin.
Злоумышленник, сканируя внешние хосты организации, наталкивается на порт 8080 рассматриваемого веб-сервера, убеждается в доступности административной консоли и после немногочисленных попыток успешно подбирает пароль к учётной записи администратора.
Необходимо определить, как администратор ИБ мог бы до своего отпуска настроить SIEM, чтобы своевременно зарегистрировать инцидент, связанный с рассматриваемой угрозой. После этого необходимо реализовать данный сценарий атаки и убедиться в корректном срабатывании директив корреляции.
Ситуация развивается в следующей ИТ-инфраструктуре, развернутой в VirtualBox:
Если интересно самостоятельно развернуть данную инфраструктуру, то можно воспользоваться инструкцией, если же есть желание сэкономить время, то мы выложили сконфигурированные виртуальные машины в формате OVA. SIEM-систему необходимо будет получить дополнительно, но об этом будет написано ниже.
Для решения задачи мы последовательно выполним действия злоумышленника, проведем анализ того, как они отражаются в журналах межсетевого экрана и веб-сервера, настроим сбор, парсинг и фильтрацию событий, а также создадим необходимые директивы корреляции в SIEM-системе.
В руководстве по нашей лабораторной представлены подробные шаги по решению данной задачи, в статье же мы сконцентрируемся только на ключевых моментах.
Межсетевой экран 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-адрес хоста, с которым пытаются установить соединение, а также индикацию того, что попытка соединения была заблокирована.
Web-cервер Tomcat регистрирует http-запросы в локальных журналах, которые можно перенаправить через rsyslog в SIEM-систему. Для решения этой задачи можно воспользоваться также и файловым коллектором, который входит в состав SIEM-системы «КОМРАД». В записях можно увидеть, что регистрируется IP-адрес хоста, с которого поступил запрос, а также учётная запись пользователя в случае его успешной авторизации:
Рассмотренные события автоматически регистрируется SIEM-системой «КОМРАД»:
Упомянутых двух типов событий достаточно, чтобы выявлять следующие ситуации:
Все три ситуации могут быть инцидентами информационной безопасности, но, конечно, с разными уровнями важности.
Перед тем, как регистрировать инциденты нам необходимо научиться извлекать указанную выше полезную информацию из событий.
Для парсинга событий источника в SIEM-системе необходимо создать плагин, включающий в себя набор регулярных выражений. Для самых популярных источников в составе «КОМРАД» уже имеются готовые плагины. В случае отсутствия плагина для пользователя доступна возможность его создания.
Ниже представлен пример разработки регулярного выражения для извлечения полей из рассмотренного выше события межсетевого экрана. В качестве инструмента отладки мы воспользовались порталом https://regex101.com/
После создания плагина данные из событий извлекаются в отдельные поля, как это видно из следующей карточки события:
Для того, чтобы в потоке событий, поступающих в SIEM-систему выявлять интересующие нас события, нам понадобится настроить фильтры. В SIEM-системе «КОМРАД» фильтры формируются с использованием популярного скриптового языка Lua (ИБ-специалистам он уже знаком по Nmap и Suricata).
Для выбора событий межсетевого экрана, связанных с блокировкой соединения, мы создадим следующий фильтр:
Ненамного сложнее выглядит фильтр для события Tomcat, в котором мы проверяем соответствует ли извлечённая из события учётная запись значению «admin». В этом случае также возвращаем IP-адрес.
При использовании в продуктивной среде для повышения производительности системы в начале каждого фильтра может потребоваться поставить проверку на определенный идентификатор коллектора для ограничения области действия фильтра.
Создадим директивы корреляции для рассматриваемых ситуаций со следующими уровнями важности:
Для создания инцидента в случае блокировки соединения достаточно в директиве корреляции указать на единственный применяемый фильтр:
Вторая директива, которая должна создавать инцидент в случае трехкратного срабатывания блокировки соединения, инициированного одним и тем же хостом, будет выглядеть следующим образом:
В третьей директиве мы добавляем еще одну строку, в которой задействуем фильтр с идентификатором 6, созданный для выборки запросов к веб-серверу с учетной записью admin.
В учебном примере временное окно оставили равным 1 минуте, в реальной жизни имеет смысл его увеличить до нескольких минут.
После конфигурации источников событий и SIEM-системы настало время провести учебную атаку. Сначала просканируем порты:
Затем заходим на порт 8080 и проходим авторизацию с учётной записью admin:admin:
Указанные действия фиксируются SIEM-системой «КОМРАД»: срабатывают все три директивы корреляции:
Таким образом, в этой лабораторной работе мы увидели последовательность действий по сбору и анализу событий информационной безопасности в случае получения административного доступа к веб-серверу. В следующей лабораторной работе нападающая сторона будет развивать атаку и использовать полученный административный доступ для сбора информации о целевой инфраструктуре.
Сейчас проходит бета-тестирование нашего продукта, в котором может принять участие любой желающий. Для этого мы предоставляем текущую версию SIEM-системы в виде Docker-контейнера. В демо-версии всего два ограничения: скорость обработки событий урезана до 1000 EPS и отсутствует система авторизации и управления доступом.
Для того, чтобы получить архив с демо-версией напишите нам на адрес электронной почты getkomrad@npo-echelon.ru c почтового ящика вашей организации (нам интересно, кто примет участие). Также приглашаем вас в нашу группу в Telegram, где можно получить помощь в случае каких-либо затруднений: https://t.me/komrad4
Наша вводная лабораторная работа посвящена выявлению инцидента, связанного с получением доступа к административной панели web-сервера.
Кейс
Во время отпуска администратора информационной безопасности были привлечены сторонние разработчики для создания web-приложения, которое планировалось разместить на web-сервере Tomcat. Разработчики для удобства сделали доступной всему внешнему миру веб-консоль управления приложениями сервера и создали «нетривиальную» учётную запись admin:admin.
Угроза
Злоумышленник, сканируя внешние хосты организации, наталкивается на порт 8080 рассматриваемого веб-сервера, убеждается в доступности административной консоли и после немногочисленных попыток успешно подбирает пароль к учётной записи администратора.
Задача
Необходимо определить, как администратор ИБ мог бы до своего отпуска настроить SIEM, чтобы своевременно зарегистрировать инцидент, связанный с рассматриваемой угрозой. После этого необходимо реализовать данный сценарий атаки и убедиться в корректном срабатывании директив корреляции.
Виртуальная инфраструктура
Ситуация развивается в следующей ИТ-инфраструктуре, развернутой в VirtualBox:
- Машина атакующего (Kali Linux, IP: 8.8.8.10, 4GB RAM, kali:kali);
- Межсетевой экран с системой обнаружения вторжений (pfSense, IP внешний: 8.8.8.1, IP внутренней сети: 192.168.1.1, IP DMZ: 192.168.2.1, 1GB RAM, admin:pfsense);
- Web-сервер (Ubuntu Server 18.04 c Tomcat, IP 192.168.2.15, 2GB RAM, user:user);
- Сервер 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. Создание директив корреляции
Создадим директивы корреляции для рассматриваемых ситуаций со следующими уровнями важности:
- Блокировка соединения – «несущественная»;
- Сканирование портов – «низкая»;
- Отправка 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
Ссылки
- Виртуальные машины для организации учебной инфраструктуры в VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
- Инструкция по развертыванию инфраструктуры с нуля, если не хочется пользоваться готовыми машинами: https://yadi.sk/i/tD8nxckjYwr_6Q
- Решение лабораторной №1: https://yadi.sk/i/ffztj2XQMPD-xw