Охота на Dofoil с помощью Windows Defender ATP

в 15:46, , рубрики: Dofoil, windows, Windows Defender, антивирусная защита, Блог компании Microsoft, информационная безопасность, кибератаки, уязвимости

В марте 2018 года сотни тысяч компьютеров были атакованы криптомайнером Dofoil. В предыдущих публикациях блога мы рассмотрели, каким образом нам удалось оградить пользователей от этой масштабной атаки. Также нам удалось отследить истоки атаки до момента заражения сервиса обновления ПО, которое использовалось злоумышленниками для распространения зловреда.

В этой публикации мы подробно разберем методы противодействия запуску в режиме отладки и анализу, к которым прибегли авторы Dofoil, и расскажем, каким образом возможности Windows 10 по выявлению вредоносного ПО могут быть полезны при расследовании подобных атак.

Охота на Dofoil с помощью Windows Defender ATP - 1

В ходе проведения расследования мы выяснили, что в вирус Dofoil встроены методы противодействия анализу. Он проверяет, в какой среде находится, и прекращает работу в виртуальных машинах. Также он сканирует память на наличие инструментов анализа и сразу же завершает их процессы. Все это заметно усложняет анализ вредоносного кода.

На следующем рисунке приведена схема этапов внедрения вредоносного ПО. Некоторые из них включают проверку на наличие среды анализа.

image
Рисунок 1. Поэтапная схема выполнения шелл-кода и атакующего кода Dofoil

В таблице ниже описано назначение каждого этапа. Каждый из первых пяти этапов включает средства противодействия динамическому или статическому анализу вредоносного кода.

ЭТАПЫ ОПИСАНИЕ
1. Замаскированный код оболочки Защищает от эвристического анализа.
Защищает от эмуляции.
2. Модуль начальной загрузки Заменяет код собственного процесса для загрузки следующего модуля.
3. Антиотладочный модуль Пресекает попытки запуска в режиме отладки.
4. Модуль загрузчика трояна Проверяет системную среду.
Пресекает попытки запуска внутри виртуальной машины.
Встраивается в explorer.exe путем замены кода процесса.
5. Модуль загрузчика трояна в explorer.exe Связывается с сервером управления и контроля, чтобы загрузить троян и выполнить его методом замены кода процесса.
6. Модуль загрузчика атакующего кода в explorer.exe Связывается с сервером управления и контроля, чтобы загрузить основной атакующий код.
7. Модуль трояна Крадет учетные данные из конфигураций разных приложений и передает собранные данные на сервер управления и контроля через HTTP-канал.
8. CoinMiner.D Выполняет майнинг криптовалюты.

Таблица 1. Модули, внедряемые Dofoil на разных этапах

Начальные этапы

Первые три этапа (то есть замаскированный код оболочки, модуль начальной загрузки и антиотладочный модуль) пытаются предотвратить анализ и распознавание следующими методами.

МЕТОДЫ ПРОТИВОДЕЙСТВИЯ АНАЛИЗУ ОПИСАНИЕ
Встроенный чистый код Встраивает огромный участок чистого кода, чтобы запутать эвристический и ручной анализ.
Проверка на эмуляцию Выбирает произвольный ключ реестра (HKEY_CLASSES_ROOTInterface{3050F557-98B5-11CF-BB82-00AA00BDCE0B}) и сравнивает данные с ожидаемым значением (DispHTMLCurrentStyle), чтобы узнать, выполняется ли вредоносное ПО внутри эмулятора.
Замена кода собственного процесса Заменяет код текущего процесса, значительно усложняя анализ ввиду измененной адресной разметки кода.
Проверка на отладку Проверяет наличие средств отладки. Найдя их, модифицирует код, вызывая аварийное завершение. Этот механизм усложняет работу исследователей, которым остается только выяснять причину такого завершения. Программа проверяет поля PEB.BeingDebugged и PEB.NtGlobalFlag в структуре PEB. Например, когда процесс работает в отладчике, поле PEB.BeingDebugged принимает значение 1, а PEB.NtGlobalFlag — значение FLG_HEAP_ENABLE_TAIL_CHECK|FLG_HEAP_ENABLE_FREE_CHECK| FLG_HEAP_VALIDATE_PARAMETERS.

Таблица 2. Методы противодействия анализу

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

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

image
Рисунок 2. Мутация кода в зависимости от значения PEB.BeingDebugged

Дерево процессов Windows Defender ATP помогает разоблачить такие антиотладочные механизмы.

image
Рисунок 3. Антиотладочные механизмы, видимые в дереве процессов Windows Defender ATP

Модуль загрузчика трояна

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

МЕТОДЫ ПРОТИВОДЕЙСТВИЯ АНАЛИЗУ ОПИСАНИЕ
Проверка имени модуля Проверяет, содержит ли название главного исполняемого файла строку «sample».
Проверка серийного номера тома Проверяет, имеет ли текущий том серийный номер 0xCD1A40 или 0x70144646.
Проверка модулей Проверяет присутствие отладочных библиотек DLL.
Проверка дисков по ключам реестра Сверяет значение ключа реестра HKLMSystemCurrentControlSetServicesDiskEnum с распространенными шаблонами имен дисков на виртуальных машинах (qemu, virtual, vmware, xen, ffffcce24).
Проверка процесса Проверяет выполняемые процессы и завершает те, которые связаны со средствами анализа (procexp.exe, procexp64.exe, procmon.exe, procmon64.exe, tcpview.exe, wireshark.exe, processhacker.exe, ollydbg.exe, idaq.exe, x32dbg.exe).
Проверка имен классов Windows Проверяет текущие имена классов Windows и завершает работу при нахождении распространенных названий классов, связанных с анализом и отладкой (Autoruns, PROCEXPL, PROCMON_WINDOW_CLASS, TCPViewClass, ProcessHacker, OllyDbg, WinDbgFrameClass).

Таблица 3. Методы противодействия анализу в модуле загрузчика трояна Dofoil

Имена целевых процессов и классов Windows хранятся в виде списка вычисляемых особым образом контрольных сумм. Алгоритм проверки выглядит так:

image
Рисунок 4. Специальный алгоритм проверки контрольных сумм на основе операций сдвига и исключающего ИЛИ

Использование контрольных сумм должно было замедлить расследование и не позволить исследователям быстро выяснить, какие инструменты анализа определяет вредоносное ПО.

СТРОКА КОНТРОЛЬНАЯ СУММА
Autoruns 0x0E5C1C5D
PROCEXPL 0x1D421B41
PROCMON_WINDOW_CLASS 0x4B0C105A
TCPViewClass 0x1D4F5C43
ProcessHacker 0x571A415E
OllyDbg 0x4108161D
WinDbgFrameClass 0x054E1905
procexp.exe 0x19195C02
procexp64.exe 0x1C0E041D
procmon.exe 0x06185D0B
procmon64.exe 0x1D07120A
tcpview.exe 0x060B5118
wireshark.exe 0x550E1E0D
processhacker.exe 0x51565C47
ollydbg.exe 0x04114C14
ollydbg.exe 0x04114C14
x32dbg.exe 0x5F4E5C04
idaq.exe 0x14585A12

Таблица 4. Таблица контрольных сумм для имен процессов и классов Windows

Замена кода процесса

Работа Dofoil сильно зависит от техники замены кода процесса. Основным целевым процессом является explorer.exe. Шелл-код Dofoil запускает новый экземпляр explorer.exe, размещает шелл-код в динамической памяти и модифицирует код точки входа, чтобы происходил переход к шелл-коду. За счет этого вредоносное ПО производит внедрение кода, не задействуя функцию API CreateRemoteThread.

image
Рисунок 5. Изменение кода точки входа в explorer.exe

Система Windows Defender ATP умеет обнаруживать признаки замены кода процесса, анализируя операции в памяти. На следующем дереве процессов видно, как вредоносная программа встраивается в explorer.exe методом замены кода процесса.

image

Рисунок 6. Дерево процесса предупреждения Windows Defender ATP: первая замена кода процесса

Когда шелл-код загружает очередной слой атакующего кода, он порождает очередной процесс explorer.exe, в который затем встраивает атакующий код методом замены. В таких случаях Windows Defender ATP заметно ускоряет анализ, точно выявляя вредоносные операции и указывая на сомнительные действия недавно созданных системных процессов Windows.

image

Рисунок 7. Дерево процесса предупреждения Windows Defender ATP: вторая замена кода процесса

За обнаружение замены кода процесса отвечает компонент защиты от эксплойтов в Windows Defender Exploit Guard. Для этого нужно включить защиту Export Address Filter (EAF) для процесса explorer.exe. В этом случае компонент обнаружит подмену, когда шелл-код будет искать в модулях адреса экспорта функций LoadLibraryA и GetProcAddress.

image
Рисунок 8. Событие EAF в журнале событий

События Windows Defender Exploit Guard также доступны на портале Windows Defender ATP:

image
Рисунок 9. Событие Windows Defender Exploit Guard в Windows Defender ATP

Когда политика аудита или блокировки EAF в Windows Defender Exploit Guard охватывает популярные системные процессы, такие как explorer.exe, cmd.exe или verclsid.exe, это существенно облегчает обнаружение и блокировку ключевых методов замены кода процессов и внедрения кода, применяемых вредоносным ПО. Политика может повлиять на работу сторонних программ, действующих как шелл-код, поэтому мы рекомендуем протестировать ее в режиме аудита Windows Defender Exploit Guard, прежде чем применять постоянно.

Домены серверов управления и контроля (C&C) и NameCoin

Dofoil особенно осторожно обращается с подключением к серверам C&C. Троянский код сначала пытается подключиться к проверенным веб-страницам, чтобы убедиться, что подключение к Интернету есть и что оно настоящее, а не имитируется в среде тестирования. Подтвердив подлинность интернет-подключения, вредоносная программа связывается с настоящими серверами C&C по протоколу HTTP.

image
Рисунок 10. Соединение с известными серверами для проверки подключения к Интернету

Вредоносное ПО обращается к серверам с доменными именами NameCoin. NameCoin — это децентрализованная система серверов DNS, обеспечивающая высокую степень анонимности благодаря технологии блокчейна. В целом работа с ней особо не отличается от обычных запросов DNS, но клиент DNS должен обращаться к определенным серверам DNS NameCoin. Так как NameCoin полагается на блокчейн-модель, по блокам можно отследить историю изменения доменного имени.

image
Рисунок 11. Журнал изменения записей DNS для вредоносных хостов (https://namecha.in/name/d/vrubl)

Windows Defender ATP позволяет отследить сетевую активность вредоносного ПО. На следующем дереве процесса предупреждения показано, как вредоносный процесс разрешает имена доменов .bit, соответствующих серверам C&C, и устанавливает с ними соединения. Также видны другие действия исполняемого файла, например подключения к другим серверам через порты SMTP.

image
Рисунок 12. Дерево процесса предупреждения Windows Defender ATP: подключение к серверам C&C после разрешения имен через серверы NameCoin

Функция расширенного поиска угроз Windows Defender ATP, пока доступная в виде ознакомительной версии, способна выявлять больше образцов вредоносного кода, использующих серверы NameCoin. К примеру, следующий запрос позволяет увидеть недавние подключения к ним. Это может способствовать получению информации о других угрозах, связывающихся с теми же серверами NameCoin.

image
Рисунок 13. Расширенный поиск угроз, использующих те же серверы NameCoin

Система NameCoin призвана усложнить перехват управления доменами (так называемый синкхолинг). Записями доменных имен NameCoin не управляет какой-то центральный регулятор, поэтому такие записи нельзя изменить по требованию правоохранительных органов. Более того, вредоносное ПО полагается на целый ряд серверов DNS NameCoin и остановить их все крайне сложно.

Заключение

Dofoil — очень изворотливая вредоносная программа. Разными методами она проверяет природу системной среды и подлинность подключения к Интернету, чтобы работать только на реальных компьютерах, а не в среде анализа или на виртуальных машинах. Все это замедляет анализ и приводит в замешательство исследовательские системы.

В кампаниях уровня Dofoil решение Windows Defender Advanced Threat Protection может помочь специалистам по безопасности проанализировать порядок событий на компьютере жертвы и получить детальные сведения об этапах выполнения процессов, подключениях к серверам C&C и операциях по замене кода процессов. Windows Defender ATP может выступать в качестве платформы анализа, позволяющей настроить детальное отслеживание системных операций в тестовой среде. Таким образом можно сэкономить массу времени и ресурсов на расследовании заражения.

Кроме того, Windows Defender Exploit Guard может помочь в обнаружении вредоносного шелл-кода, который сканирует таблицы адресов экспорта. Это отличный инструмент для выявления и блокировки действий эксплойтов и вредоносного ПО.

События Windows Defender Exploit Guard также видны на портале Windows Defender ATP, где интегрированы и другие защитные решения Microsoft, в том числе Windows Defender Antivirus и Windows Defender Application Guard.

Чтобы оценить на практике, как Windows Defender ATP помогает обнаруживать, анализировать и отражать атаки повышенной сложности, получите доступ к бесплатной пробной версии.

Мэтт Оу (Matt Oh), Стефан Селлмер (Stefan Sellmer), Джонатан Бар Ор (Jonathan Bar Or), Марк Уодрич (Mark Wodrich)
Исследовательская группа Windows Defender ATP

Автор: Andrey_Kalugin

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js