[Перевод] Охота на Dofoil с помощью Windows Defender ATP
В марте 2018 года сотни тысяч компьютеров были атакованы криптомайнером Dofoil. В предыдущих публикациях блога мы рассмотрели, каким образом нам удалось оградить пользователей от этой масштабной атаки. Также нам удалось отследить истоки атаки до момента заражения сервиса обновления ПО, которое использовалось злоумышленниками для распространения зловреда.
В этой публикации мы подробно разберем методы противодействия запуску в режиме отладки и анализу, к которым прибегли авторы Dofoil, и расскажем, каким образом возможности Windows 10 по выявлению вредоносного ПО могут быть полезны при расследовании подобных атак.
В ходе проведения расследования мы выяснили, что в вирус Dofoil встроены методы противодействия анализу. Он проверяет, в какой среде находится, и прекращает работу в виртуальных машинах. Также он сканирует память на наличие инструментов анализа и сразу же завершает их процессы. Все это заметно усложняет анализ вредоносного кода.
На следующем рисунке приведена схема этапов внедрения вредоносного ПО. Некоторые из них включают проверку на наличие среды анализа.
Рисунок 1. Поэтапная схема выполнения шелл-кода и атакующего кода Dofoil
В таблице ниже описано назначение каждого этапа. Каждый из первых пяти этапов включает средства противодействия динамическому или статическому анализу вредоносного кода.
ЭТАПЫ | ОПИСАНИЕ |
1. Замаскированный код оболочки | Защищает от эвристического анализа. Защищает от эмуляции. |
2. Модуль начальной загрузки | Заменяет код собственного процесса для загрузки следующего модуля. |
3. Антиотладочный модуль | Пресекает попытки запуска в режиме отладки. |
4. Модуль загрузчика трояна | Проверяет системную среду. Пресекает попытки запуска внутри виртуальной машины. Встраивается в explorer.exe путем замены кода процесса. |
5. Модуль загрузчика трояна в explorer.exe | Связывается с сервером управления и контроля, чтобы загрузить троян и выполнить его методом замены кода процесса. |
6. Модуль загрузчика атакующего кода в explorer.exe | Связывается с сервером управления и контроля, чтобы загрузить основной атакующий код. |
7. Модуль трояна | Крадет учетные данные из конфигураций разных приложений и передает собранные данные на сервер управления и контроля через HTTP-канал. |
8. CoinMiner.D | Выполняет майнинг криптовалюты. |
Таблица 1. Модули, внедряемые Dofoil на разных этапах
Начальные этапы
Первые три этапа (то есть замаскированный код оболочки, модуль начальной загрузки и антиотладочный модуль) пытаются предотвратить анализ и распознавание следующими методами.
МЕТОДЫ ПРОТИВОДЕЙСТВИЯ АНАЛИЗУ | ОПИСАНИЕ |
Встроенный чистый код | Встраивает огромный участок чистого кода, чтобы запутать эвристический и ручной анализ. |
Проверка на эмуляцию | Выбирает произвольный ключ реестра (HKEY_CLASSES_ROOT\Interface\{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, которые редко встречаются в коде вредоносных программ.
Код первого этапа также проверяет ключ реестра на соответствие ожидаемому значению. После прохождения всех проверок код расшифровывает шелл-код второго этапа и выполняет его в размеченном участке памяти. Шелл-код очищает разметку памяти исходного основного модуля, расшифровывает шелл-код третьего этапа и помещает его в этот же участок памяти — эта процедура называется заменой кода собственного процесса.
Рисунок 2. Мутация кода в зависимости от значения PEB.BeingDebugged
Дерево процессов Windows Defender ATP помогает разоблачить такие антиотладочные механизмы.
Рисунок 3. Антиотладочные механизмы, видимые в дереве процессов Windows Defender ATP
Модуль загрузчика трояна
Перед загрузкой атакующего кода модуль загрузчика трояна проверяет среду выполнения разными способами, в том числе на виртуальность и наличие инструментов анализа.
МЕТОДЫ ПРОТИВОДЕЙСТВИЯ АНАЛИЗУ | ОПИСАНИЕ |
Проверка имени модуля | Проверяет, содержит ли название главного исполняемого файла строку «sample». |
Проверка серийного номера тома | Проверяет, имеет ли текущий том серийный номер 0xCD1A40 или 0×70144646. |
Проверка модулей | Проверяет присутствие отладочных библиотек DLL. |
Проверка дисков по ключам реестра | Сверяет значение ключа реестра HKLM\System\CurrentControlSet\Services\Disk\Enum с распространенными шаблонами имен дисков на виртуальных машинах (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 хранятся в виде списка вычисляемых особым образом контрольных сумм. Алгоритм проверки выглядит так:
Рисунок 4. Специальный алгоритм проверки контрольных сумм на основе операций сдвига и исключающего ИЛИ
Использование контрольных сумм должно было замедлить расследование и не позволить исследователям быстро выяснить, какие инструменты анализа определяет вредоносное ПО.
СТРОКА | КОНТРОЛЬНАЯ СУММА |
Autoruns | 0×0E5C1C5D |
PROCEXPL | 0×1D421B41 |
PROCMON_WINDOW_CLASS | 0×4B0C105A |
TCPViewClass | 0×1D4F5C43 |
ProcessHacker | 0×571A415E |
OllyDbg | 0×4108161D |
WinDbgFrameClass | 0×054E1905 |
procexp.exe | 0×19195C02 |
procexp64.exe | 0×1C0E041D |
procmon.exe | 0×06185D0B |
procmon64.exe | 0×1D07120A |
tcpview.exe | 0×060B5118 |
wireshark.exe | 0×550E1E0D |
processhacker.exe | 0×51565C47 |
ollydbg.exe | 0×04114C14 |
ollydbg.exe | 0×04114C14 |
x32dbg.exe | 0×5F4E5C04 |
idaq.exe | 0×14585A12 |
Таблица 4. Таблица контрольных сумм для имен процессов и классов Windows
Замена кода процесса
Работа Dofoil сильно зависит от техники замены кода процесса. Основным целевым процессом является explorer.exe. Шелл-код Dofoil запускает новый экземпляр explorer.exe, размещает шелл-код в динамической памяти и модифицирует код точки входа, чтобы происходил переход к шелл-коду. За счет этого вредоносное ПО производит внедрение кода, не задействуя функцию API CreateRemoteThread.
Рисунок 5. Изменение кода точки входа в explorer.exe
Система Windows Defender ATP умеет обнаруживать признаки замены кода процесса, анализируя операции в памяти. На следующем дереве процессов видно, как вредоносная программа встраивается в explorer.exe методом замены кода процесса.
Рисунок 6. Дерево процесса предупреждения Windows Defender ATP: первая замена кода процесса
Когда шелл-код загружает очередной слой атакующего кода, он порождает очередной процесс explorer.exe, в который затем встраивает атакующий код методом замены. В таких случаях Windows Defender ATP заметно ускоряет анализ, точно выявляя вредоносные операции и указывая на сомнительные действия недавно созданных системных процессов Windows.
Рисунок 7. Дерево процесса предупреждения Windows Defender ATP: вторая замена кода процесса
За обнаружение замены кода процесса отвечает компонент защиты от эксплойтов в Windows Defender Exploit Guard. Для этого нужно включить защиту Export Address Filter (EAF) для процесса explorer.exe. В этом случае компонент обнаружит подмену, когда шелл-код будет искать в модулях адреса экспорта функций LoadLibraryA и GetProcAddress.
Рисунок 8. Событие EAF в журнале событий
События Windows Defender Exploit Guard также доступны на портале Windows Defender ATP:
Рисунок 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.
Рисунок 10. Соединение с известными серверами для проверки подключения к Интернету
Вредоносное ПО обращается к серверам с доменными именами NameCoin. NameCoin — это децентрализованная система серверов DNS, обеспечивающая высокую степень анонимности благодаря технологии блокчейна. В целом работа с ней особо не отличается от обычных запросов DNS, но клиент DNS должен обращаться к определенным серверам DNS NameCoin. Так как NameCoin полагается на блокчейн-модель, по блокам можно отследить историю изменения доменного имени.
Рисунок 11. Журнал изменения записей DNS для вредоносных хостов (https://namecha.in/name/d/vrubl)
Windows Defender ATP позволяет отследить сетевую активность вредоносного ПО. На следующем дереве процесса предупреждения показано, как вредоносный процесс разрешает имена доменов .bit, соответствующих серверам C&C, и устанавливает с ними соединения. Также видны другие действия исполняемого файла, например подключения к другим серверам через порты SMTP.
Рисунок 12. Дерево процесса предупреждения Windows Defender ATP: подключение к серверам C&C после разрешения имен через серверы NameCoin
Функция расширенного поиска угроз Windows Defender ATP, пока доступная в виде ознакомительной версии, способна выявлять больше образцов вредоносного кода, использующих серверы NameCoin. К примеру, следующий запрос позволяет увидеть недавние подключения к ним. Это может способствовать получению информации о других угрозах, связывающихся с теми же серверами NameCoin.
Рисунок 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