Содержание статьи
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Как известно, в недрах средств мониторинга для Windows лежат два основных механизма, которые позволяют им функционировать: подсистема Event Tracing for Windows и ядерная поддержка, реализованная в виде драйверов.
В предыдущих материалах мы с тобой подробно разбирали принципы работы этих механизмов, а также вредоносных техник, реализация которых позволяла атакующим ослепить мониторинг. В этой же статье мы поговорим о том, как эти техники можно детектить с помощью встроенных в ОС Windows механизмов, и в качестве бонуса напишем ряд корреляций.
Детектим атаки на драйвер
Обнаруживаем манипуляции с Security Descriptor
Будем считать, что первая связка техник, которую удалось поэксплуатировать нашим пентестерам, — манипуляция дескриптором безопасности объекта, плавно переходящая в манипуляцию хендлом. Вкратце напомню, как это происходило.
- Основная часть событий, которую Sysmon пишет в свой журнал, поступает от драйвера
SysmonDrv
. Для этого сам драйвер создает коммуникационное устройство\\
. Это объект ядра, а у объекта ядра есть дескриптор безопасности (security descriptor, SD), который явно определяет, кому можно получить доступ к этому устройству, а кому нет.Device\ SysmonDrv - Атакующий меняет этот дескриптор таким образом, чтобы процессу
Sysmon64.
, работающему от имени учетной записиexe Local
, было отказано в предоставлении доступа к устройству.System - Однако на момент манипуляций с SD у процесса
Sysmon64.
уже есть открытый хендл устройства с правами чтения, который необходимо обновить.exe - Для этого он делает вызов DuplicateHandle с параметром
DUPLICATE_CLOSE_SOURCE
и таким образом копирует хендл объекта\\
из процессаDevice\ SysmonDrv Sysmon64.
в собственный вредоносный процесс с последующим закрытием хендла‑источника, заставляя тем самымexe Sysmon64.
повторно запросить хендл коммуникационного устройства.exe
Давай на это посмотрим с позиции детекта. Первым делом вредоносный процесс вызывает CreateFile() (с параметром WRITE_DAC
), чтобы получить хендл объекта \\.\
. После этого дергает функцию SetSecurityInfo(), которая устанавливает новый список DACL
. В этот момент должно быть сгенерировано два события: EventID
— запрос хендла объекта и EventID
— попытка выполнения операции с объектом (при условии, что настроен аудит объектов ядра).
Можно было бы детектить такую активность на основе перечисленных событий. Однако у этого подхода есть существенный недостаток: события 4656 и 4663 генерируются слишком часто. Поэтому мы пойдем другим путем.
Подсистема безопасности Windows может генерировать события, которые прямо свидетельствуют об изменении списка DACL (но тут тоже есть несколько подводных камней, о которых я расскажу дальше). Давай сначала посмотрим на это событие, а потом поговорим о том, как же его заполучить. Итак, меняем список DACL.
Открываем журнал Security
и видим следующее.
Событие EventID 4670 говорит нам о том, что вредоносный процесс, запущенный от имени админа, изменил DACL для объекта \\
. Причем отображаются как старые, так и новые разрешения для объекта. Отлично, напишем условие формирования алерта на языке eXtraction and Processing:
event SysmonDrv_DaclModified:
key:
event_src.host
filter {
filter::NotFromCorrelator() and
event_src.title == "windows" and
msgid == "4670" and
lower(object.type) == "file" and
lower(object.name) == "sysmondrv"
}
rule SysmonDrv_device_dacl_manipulation: SysmonDrv_DaclModified
Полный текст правила (с вариациями детекта на основе EventID
и EventID
) можно посмотреть в репозитории Open XP Rules.
Для Elastic SIEM детект имеет следующий вид.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»