Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
mr.save

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

Recommended Posts

Атаки на 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.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

  • 4624 — удаленный Logon.
  • 5145 — проверка прав доступа к удаленному сервису winreg.
  • 5145 — проверка прав доступа к файлу в директории System32. Файл имеет случайное имя по описанному выше принципу.
  • 4688 — создание процесса cmd.exe, который запускает vssadmin:

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

4688 — создание процесса с командой

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

4688 — создание процесса с командой

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

4688 — создание процесса с командой

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Smbexec

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Первый этап smbexec после аутентификации — это открытие SCM командой OpenSCManagerW (15). Запрос примечателен: в нем поле MachineName имеет значение DUMMY.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Далее создается сервис с помощью команды CreateServiceW (12). В случае smbexec мы можем видеть каждый раз одинаковую логику построения команды. На скриншоте ниже зеленым цветом отмечены неизменяемые параметры команды, желтым — то, что атакующий может изменить. Нетрудно заметить, что имя исполняемого файла, его директорию и файл output изменить можно, но оставшееся поменять куда сложнее, не нарушая логику работы модуля Impacket.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

4697 — установка сервиса на машине жертвы:

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

4688 — создание процесса cmd.exe с аргументами из пункта 1.

5145 — проверка прав доступа к файлу __output в директории C$.

4697 — установка сервиса на машине жертвы.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

4688 — создание процесса cmd.exe с аргументами из пункта 4.

5145 — проверка прав доступа к файлу __output в директории C$.

На Impacket основаны многие инструменты для атак. Он поддерживает почти все протоколы Windows и при этом имеет свои характерные особенности. Здесь и конкретные запросы winreg, и использование SCM API с характерным формированием команд, и формат имен файлов, и SMB share с названием SYSTEM32.

CrackMapExec

Инструмент CME призван в первую очередь автоматизировать те рутинные действия, которые атакующий выполняет для продвижения внутри сети. Он позволяет работать в связке с небезызвестными Empire agent и Meterpreter. Чтобы выполнять команды скрытно, CME может их обфусцировать. Используя BloodHound (отдельный инструмент для проведения разведки), атакующий может автоматизировать поиск активной сессии доменного администратора.

 

BloodHound

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

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

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Для запуска на машине жертвы модуль создает задачу, используя ATSVC и SMB. ATSVC — это интерфейс для работы с планировщиком задач Windows. CME использует его функцию NetrJobAdd (1) для создания задач по сети. Пример того, что отправляет модуль CME, показан на картинке ниже: это вызов команды cmd.exe и обфусцированный код в виде аргументов в формате XML.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Кроме того, запуск BloodHound на машине жертвы с включенным аудитом сопровождается событием с ID 4688 (создание процесса) и именем процесса C:\Windows\System32\cmd.exe. Примечательны в нем аргументы командной строки:

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Enum_avproducts

Весьма интересен с точки зрения функциональности и реализации модуль enum_avproducts. WMI позволяет с помощью языка запросов WQL получать данные объектов Windows, чем, по сути, и пользуется этот модуль CME. Он генерирует запросы к классам AntiSpywareProduct и AntiМirusProduct, собирая данные о средствах защиты, установленных на машине жертвы. Чтобы получить нужную информацию, модуль выполняет подключение к пространству имен root\SecurityCenter2, затем формирует WQL-запрос и получает ответ. Ниже показано содержимое таких запросов и ответов. В нашем примере нашелся Windows Defender.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

ачастую аудит WMI (Trace WMI-Activity), в событиях которого можно найти полезную информацию о WQL-запросах, может оказаться выключенным. Но если он включен, то в случае запуска сценария enum_avproducts сохранится событие с ID 11. В нем будет содержаться имя пользователя, который отправил запрос, и имя в пространстве имен root\SecurityCenter2.

У каждого из модулей CME обнаружились свои артефакты. Это и специфические WQL-запросы, и создание определенного вида задачи в Task Scheduler с обфускацией, и характерная для BloodHound активность в LDAP и SMB.

 

Koadic

Отличительная особенность Koadic — это использование встроенных в Windows интерпретаторов JavaScript и VBScript. В этом смысле он следует тренду living off the land — то есть не имеет внешних зависимостей и пользуется стандартными средствами Windows.

Это инструмент для полноценного Command & Control (C&C), поскольку после заражения на машину устанавливается «имплант», позволяющий ее контролировать. Такая машина в терминологии Koadic называется «зомби». При нехватке привилегий для полноценной работы на стороне жертвы Koadic может их поднять, используя техники обхода контроля учетных записей (UAC bypass).

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Жертва должна сама инициировать общение с сервером Command & Control. Для этого ей необходимо обратиться по заранее подготовленному URI и получить основное тело Koadic с помощью одного из стейджеров. Ниже показан пример для стейджера MSHTA.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

По переменной WS из ответа становится понятно, что исполнение происходит через WScript.Shell, а переменные STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE содержат ключевую информацию о параметрах текущей сессии. Это первая пара запрос-ответ в HTTP-соединении с сервером C&C. Последующие запросы связаны непосредственно с функциями вызываемых модулей (имплантов). Все модули Koadic работают только с активной сессией c C&C.

 

Mimikatz

Так же как CME работает с BloodHound, Koadic работает с Mimikatz как с отдельной программой и может запускать ее несколькими способами. Ниже представлена пара запрос-ответ для загрузки импланта Mimikatz.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Можно заметить, как изменился формат URI в запросе. В нем появилось значение у переменной csrf, которая отвечает за выбранный модуль. Не обращай внимания на ее название: все мы знаем, что под CSRF обычно понимают другое. В ответ пришло все то же основное тело Koadic, в которое добавился код, связанный с Mimikatz. Он объемный, поэтому рассмотрим ключевые моменты.

Перед нами закодированная в Base64 библиотека Mimikatz, сериализованный .NET-класс, который будет ее инжектировать, и аргументы для запуска Mimikatz. Результат выполнения передается по сети в открытом виде.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Exec_cmd

В Koadic есть и модули, способные удаленно выполнять команды. Здесь мы увидим все тот же метод генерации URI и знакомые переменные sid и csrf. В случае модуля exec_cmd в тело добавляется код, который способен выполнять команды shell. Ниже показан такой код, содержащийся в HTTP-ответе C&C-сервера.

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Переменная GAWTUUGCFI со знакомым атрибутом WS необходима для выполнения кода. С ее помощью имплант вызывает шелл, обрабатывая две ветки кода — shell.exec с возвращением выходного потока данных и shell.run без возращения.

Koadic — нетипичный инструмент, но имеет свои артефакты, по которым его можно найти в легитимном трафике:

  • особое формирование HTTP-запросов,
  • использование winHttpRequests API,
  • создание объекта WScript.Shell через ActiveXObject,
  • большое исполняемое тело.

Изначальное соединение инициирует стейджер, поэтому появляется возможность обнаруживать его активность через события Windows. Для MSHTA это событие 4688, которое говорит о создании процесса с атрибутом запуска:

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

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

Скрытый контент

    Дайте реакцию на этот пост, чтобы увидеть скрытый контент.

Выводы

Злоумышленники нынче широко используют для своих нужд встроенные в Windows инструменты и механизмы. Мы видим, как популярные инструменты Koadic, CrackMapExec и Impacket, следующие принципу living off the land, все чаще встречаются в отчетах об APT. Число форков на GitHub у этих инструментов тоже растет — сейчас их уже около тысячи.

Этот тренд набирает популярность из-за его простоты: злоумышленникам не нужны сторонние инструменты, они уже есть на машинах жертв и помогают обходить средства защиты.

Мы в Positive Technologies сосредоточены на изучении сетевого взаимодействия: каждый описанный выше инструмент оставляет свои следы в сетевом трафике; подробное их исследование позволило нам научить наш продукт PT Network Attack Discovery их обнаруживать, что в итоге помогает распутать всю цепочку киберинцидентов с их участием.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...