Статья расскажет о системе мониторинга Zabbix и эксперименте в рамках которого будет проведена атака на операционную систему с предустановленным агентом. Эксперимент будет включать сценарий - эксплуатация уязвимости Zerologon.
Zabbix основные понятия
Zabbix используется для мониторинга распределенных систем. Изначально система предполагает мониторинг работы информационной системы. Есть примеры того как Zabbix использовался для мониторинга уязвимостей и работы как сканера уязвимостей. Найти информацию можно здесь, а сам Zabbix доступен здесь.
Не будем дополнительно описывать всю архитектуру Zabbix, так как он работает по очень простой схеме - на сервере мониторинга стоит веб-приложение, в нем можно отображать с помощью статистики информацию о событиях, а на подконтрольных хостах устанавливаются агенты, которые могут реагировать на различные события и отправлять информацию о триггерах на сервер мониторинга.
Не стоит воспринимать систему Zabbix как абсолютно безопасную систему мониторинга. Можно найти много примеров когда эта система приносила в инфраструктуру достаточно много уязвимостей. Пример запроса для поисковика: "zabbix CVE inurl:exploit-db"
.
Конфигурация стенда
Для экспериментов будем использовать 2 виртуальные машины:
Ubuntu 20.04 для сервера мониторинга;
Windows Server 2019 (для тестирования Zerologon)
Установку компонентов системы мониторинга можно прочитать в документации. Нужно установить сервер на Ubuntu и агент на Windows машины. Настройка сервера не представляет никакой сложности. Если сложно следовать документации, есть вот эта статья. В результате в браузере вы можете увидеть вот такой интерфейс, который пока что ничего не мониторит, но уже готов слушать агентов:
Поставить агента на Windows машину можно точно так же, как описано в статье приведенной выше. По сути установка последней версии агента это просто запуск исполняемого файла и передача адреса сервера.
Эксперимент эксплуатация RCE
Проблема Zabbix, который доступен из коробки заключается в том, что он не предоставляет шаблонов для мониторинга событий в системе, которые могут использоваться для эксплуатации уязвимостей. Поэтому для того чтобы генерировать события на эксплуатацию уязвимостей нужно детально разбираться в том, что конкретно делает эксплойт, который может быть опубликован в сети.
Для нашего эксперимента будем использовать эксплойт для уязвимости Zerologon(CVE-2020-1472). Сами эксплойт можно найти вот в этом репозитории.
Попробуем разобраться что использует эксплойт для выбранной уязвимости и можно ли эти действия отследить стандартными логами операционной системы.
CVE-2020-1472
Эксплойт работает с особенностями настройки соединения через NetLogon. При настройке соединения клиента с сервером должны выбрать алгоритм шифрования, который будет использоваться для соединения и так же предоставить специальные идентификаторы. Если в этой процедуре выставить нулевое значение идентификатора, то можно настроить соединение без предоставления пароля клиента. Чтобы эта операция завершилась успешно необходимо провести от 1 до 255 попыток. То есть атака может длиться относительно длительное время. В зависимости от удаленности сервера время может составлять от 10 до 40 секунд. Как это всё отследить?
Операционная система Windows очень далеко продвинулась в развитии технологий мониторинга. Поэтому для поиска эксплуатации уязвимостей можно обращаться к тем событиям, которые генерирует сама ОС. Все события в системе помещаются в специальные журналы, нас интересует журнал "Security". Он используется для того чтобы регистрировать события доступа к рабочему столу и любым другим объектам, которые есть в ОС. Туда же помещаются события о успешном/неуспешно логине в систему, и данные о смене пароля для учетной записи. Эксплойт, который мы хотим задетектировать использует легитимный функционал, который используется для удаленного доступа, поэтому нам нужно найти список событий, который может генерироваться ОС при использовании этого протокола. Если немного покопаться на MSDN, то можно найти вот такие идентификаторы:
5827 - доступ по NetLogon запрещен. Может генерироваться если не верно введены учетные данные пользователя;
5828, 5829 - события, которые генерируются если учетная запись использует уязвимую версию взаимодействия по NetLogon.
Их наличие в логах может означать, что сервер пытаются атаковать. Но это только набор событий, анализировать что происходит придется самостоятельно.
Чтобы агент Zabbix мог слать информацию из логов, можно использовать вот такой шаблон:
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-09-16T02:47:03Z</date>
<groups>
<group>
<name>Domain Controllers</name>
</group>
</groups>
<templates>
<template>
<template>Netlogon Elevation of Privilege Vulnerability - CVE-2020-1472</template>
<name>Netlogon Elevation of Privilege Vulnerability - CVE-2020-1472</name>
<description>Monitors event ID's 5827, 5828 & 5829 for CVE-2020-1472
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-1472</description>
<groups>
<group>
<name>Domain Controllers</name>
</group>
</groups>
<applications>
<application>
<name>Event Log</name>
</application>
</applications>
<items>
<item>
<name>Event ID: 5827 - Vulnerable Netlogon secure channel connection (CVE-2020-1472)</name>
<type>ZABBIX_ACTIVE</type>
<key>eventlog[System,,,,5827]</key>
<trends>0</trends>
<value_type>LOG</value_type>
<description>See Step 2b: Addressing event IDs 5827 and 5828
https://support.microsoft.com/en-au/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc</description>
<applications>
<application>
<name>Event Log</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{nodata(180)}=0</expression>
<name>Event ID: 5827 - Vulnerable Netlogon secure channel connection (CVE-2020-1472)</name>
<priority>HIGH</priority>
<description>See Step 2b: Addressing event IDs 5827 and 5828
https://support.microsoft.com/en-au/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc</description>
</trigger>
</triggers>
</item>
<item>
<name>Event ID: 5828 - Vulnerable Netlogon secure channel connection (CVE-2020-1472)</name>
<type>ZABBIX_ACTIVE</type>
<key>eventlog[System,,,,5828]</key>
<trends>0</trends>
<value_type>LOG</value_type>
<description>See Step 2b: Addressing event IDs 5827 and 5828
https://support.microsoft.com/en-au/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc</description>
<applications>
<application>
<name>Event Log</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{nodata(180)}=0</expression>
<name>Event ID: 5828 - Vulnerable Netlogon secure channel connection (CVE-2020-1472)</name>
<priority>HIGH</priority>
<description>See Step 2b: Addressing event IDs 5827 and 5828
https://support.microsoft.com/en-au/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc</description>
</trigger>
</triggers>
</item>
<item>
<name>Event ID: 5829 - Non-compliant device event has been generated (CVE-2020-1472)</name>
<type>ZABBIX_ACTIVE</type>
<key>eventlog[System,,,,5829]</key>
<trends>0</trends>
<value_type>LOG</value_type>
<description>See section: Addressing event 5829
https://support.microsoft.com/en-au/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc</description>
<applications>
<application>
<name>Event Log</name>
</application>
</applications>
<triggers>
<trigger>
<expression>{nodata(180)}=0</expression>
<name>Event ID: 5829 - Non-compliant device event has been generated (CVE-2020-1472)</name>
<priority>HIGH</priority>
<description>See section: Addressing event 5829
https://support.microsoft.com/en-au/help/4557222/how-to-manage-the-changes-in-netlogon-secure-channel-connections-assoc</description>
</trigger>
</triggers>
</item>
</items>
</template>
</templates>
</zabbix_export>
Чтобы добавить шаблон нужно просто открыть список хостов, выбрать тот, который мы хотим отслеживать и ждать событий от агента:
В итоге, при проведении атаки будем видеть события, которые генерятся ОС. Это поможет оперативно выявлять инциденты.
Прямо сейчас в OTUS открыт набор на новый поток курса "Мониторинг и логирование: Zabbix, Prometheus, ELK". 15 апреля пройдет бесплатный вебинар в рамках которого вы сможете узнать о карьерных перспективах в данной области.
Записаться на вебинар
Также хотим пригласить всех желающих на демо-урок курса по теме: "ELK стэк"