Поймать нарушителя! Учимся детектировать инструменты атак на Windows

Атаки на Windows в наше время одна из наиболее реальных угроз для компаний. При этом исходный код используемых хакерами инструментов открыт и доступен на GitHub. В этой статье мы поговорим о том, какие существуют средства развития атаки внутри инфраструктуры, и о том, как их эффективно детектировать.

В 2017–2018 годах группировки APT Dragonfly, APT28 и APT MuddyWater проводили атаки на правительственные и военные организации Европы, Северной Америки и Саудовской Аравии. И использовали для этого три инструмента — Impacket, CrackMapExec и Koadic.

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

В Impacket, CrackMapExec и Koadic реализовано множество интересных функций — от передачи файлов до взаимодействия с реестром и выполнения команд на удаленной машине. Мы исследовали эти инструменты с целью определить их сетевую активность. Вот какие задачи мы перед собой ставили в рамках исследования.

  • Понять, как работает хакерский инструментарий. Узнать, что нужно атакующим для эксплуатации и какими технологиями они могут воспользоваться.
  • Найти то, что не детектируется средствами информационной безопасности на первых стадиях атаки. Стадия разведки может быть пропущена — либо потому, что атакующим выступает внутренний злоумышленник, либо потому, что атакующий пользуется такой брешью в инфраструктуре, о которой не было известно ранее. Появляется возможность восстановить всю цепочку его действий, отсюда возникает желание обнаруживать дальнейшее передвижение.
  • Устранить ложные срабатывания средств обнаружения вторжений. Нельзя забывать и о том, что при обнаружении тех или иных действий на основе одной только разведки возможны частые ошибки. Существует множество способов замаскировать активность вредоносного ПО под легитимные действия.

Итак, что конкретно делают перечисленные инструменты? В случае с Impacket злоумышленники получают большую библиотеку модулей, которые можно использовать на разных стадиях атаки, следующих после преодоления периметра. Многие инструменты используют модули Impacket у себя внутри — например, Metasploit. В нем имеются утилиты dcomexec и wmiexec для удаленного выполнения команд, secretsdump для получения из памяти учетных записей, которые добавлены из Impacket. В итоге правильное обнаружение активности такой библиотеки обеспечит и обнаружение производных.

О CrackMapExec (или просто CME) создатели неслучайно написали Powered by Impacket. Помимо его функций, в CME входят средства для реализации популярных сценариев: это и Bloodhound, и Mimikatz для получения паролей или их хешей, и внедрение Meterpreter либо Empire agent для удаленного исполнения.

Третий выбранный нами инструмент — Koadic. Он достаточно свеж, был представлен на DEF CON 25 в 2017 году и отличается нестандартным подходом: работой через HTTP, JavaScript и VBScript. Такой подход называют living off the land: инструмент пользуется набором зависимостей и библиотек, встроенных в Windows. Создатели называют его COM Сommand & Сontrol, или С3.

 

Impacket

Функциональность Impacket весьма широка, начиная от разведки внутри AD и сбора данных с внутренних серверов MS SQL и заканчивая техниками для получения учетных данных: это и атака SMB Relay, и получение с контроллера домена файла ntds.dit, содержащего хеши паролей пользователей. Также Impacket удаленно выполняет команды четырьмя разными способами: через WMI, сервис для управления планировщиком Windows, DCOM и SMB. И для этого ему нужны учетные данные.

 

Secretsdump

В качестве цели для модуля secretsdump могут выступать как машины пользователей, так и контроллеры домена. С его помощью можно получать копии областей памяти LSA, SAM, SECURITY, NTDS.dit, поэтому его можно увидеть на разных стадиях атаки.

Первый шаг в работе этого модуля — аутентификация через SMB, для которой необходим либо пароль пользователя, либо его хеш для автоматического проведения атаки Pass the Hash. Далее идет запрос на открытие доступа к Service Control Manager (SCM) и получение доступа к реестру по протоколу winreg, используя который атакующий может узнать данные интересующих его веток и получить результаты через SMB.

На картинке ниже мы видим, как именно при использовании протокола winreg происходит получение доступа по ключу реестра с LSA. Для этого используется команда DCERPC с opcode 15 — OpenKey.

Открытие ключа реестра по протоколу winreg

Далее, когда доступ по ключу получен, значения сохраняются командой SaveKey с opcode 20. Impacket делает это весьма специфично. Он сохраняет значения в файл, имя которого — это строка из восьми случайных символов с добавлением .tmp. Кроме того, дальнейшая выгрузка этого файла происходит через SMB из директории System32.

Схема получения ключа реестра с удаленной машины

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

Также этот модуль оставляет следы в журнале событий Windows, благодаря которым он легко обнаруживается. Например, в результате выполнения команды

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

в журнале Windows Server 2016 увидим следующую ключевую последовательность событий.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *