Исследование направленной атаки

в 12:17, , рубрики: Блог компании ESET NOD32

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

Исследование направленной атаки

По результатам этого исследования нам удалось установить следующие факты:

  • Один и тот же компонент вредоносного кода несколько раз использовался в этих кампаниях.
  • Атаки требовали ручного вмешательства злоумышленника (оператор).
  • В атаках обнаружены следы известной группы APT1 (aka Comment crew).
  • Для первоначального вектора атаки, т. е. для установки вредоносного кода, использовались фишинговые сообщения, которые якобы содержали важные документы.
  • Плохая подготовка злоумышленников: опечатки в конфигурации, наивная реализация криптографических алгоритмов, недостаточная практика в написании кода.
  • Вредоносные программы с четко заданным поведением: одна из угроз не сохраняет свое присутствие после перезагрузки, а другая не делает никаких вредоносных функций до перезагрузки.

Исследование направленной атаки
Рис. Анализируемые угрозы.

На рисунке выше видно, что первоначальный дроппер осуществляет установку в систему двух других угроз, которые называются Agent.NJK и Terminator RAT.

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

Исследование направленной атаки

Исследование направленной атаки
Рис. Замаскированные под документы MS Word исполняемые файлы угрозы.

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

Исследование направленной атаки
Рис. Псевдокод алгоритма шифрования и формат служебной структуры.

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

Исследование направленной атаки

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

Исследование направленной атаки
Рис. Выполняемые дроппером операции.

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

Исследование направленной атаки
Рис. Фишинговый документ на вьетнамском языке.

Исследование направленной атаки
Рис. Схожий документ для пользователей, проживающих на Тайване.

Дроппер использует два различных метода для сокрытия вызовов API-функций: содержит собственную реализацию GetProcAddress с открытыми строками имен функций в коде, а также использует стандартную реализацию функции с зашифрованными именами. При анализе кода видно, что он не написан на языке высокого уровня: некоторые объекты используются с максимальными правами доступа, copy-paste различных частей кода в его теле.

Исследование направленной атаки
Рис. Метаданные вьетнамского и тайваньского документов.

Win32/TrojanProxy.Agent.NJK

Первый исполняемый файл, который мы проанализировали, обнаруживается нашими продуктами как Win32/TrojanProxy.Agent.NJK. Эта вредоносная программа написана на Visual C++ и способна взаимодействовать с удаленными C&C серверами через HTTP протокол. В анализируемой модификации было обнаружено использование трех адресов управляющих серверов, которые используют один и тот же доменный адрес vietnam.vnptnet.info, но с подключением к разным портам (80, 443 и 5050).

Работа с C&C организована через цикл с 15-минутной задержкой, в процессе которого вредоносный код пытается контактировать с сервером используя три вышеуказанных порта. Интересно, что угроза не предпринимает никаких действий для обеспечения своей выживаемости после перезагрузки, т. е. на скомпрометированном компьютере она будет активна только до завершения работы или перезагрузки. Сам вредоносный файл не содержит какой-либо обфускации используемых им строк.

Исследование направленной атаки
Рис. Основной цикл работы вредоносного кода.

При взаимодействии с управляющим сервером вредоносный код отправляет некоторую информацию о системе через GET запрос HTTP протокола, используя для этого специальную строку для поля User-Agent. Пользовательские данные составляют 105 байт и будут отправлены в компоненте строки запроса GET метода как hex-последовательность. Эти данные содержат следующую информацию: идентификатор вредоносной кампании; внутренний IP-адрес хоста; имя компьютера; Windows Version ID; название учетной записи, под которой исполняется процесс вредоносного кода. Странным является и тот факт, что к передаваемым данным не применяется шифрование, они передаются в открытом виде.

Исследование направленной атаки
Рис. Формат данных, отправляемых вредоносным кодом на удаленный сервер.

Передаваемые данные вместе с запросом выглядят так.

Исследование направленной атаки
Рис. Пример GET-запроса с передаваемыми данными.

На этот запрос сервер ответит обычным заголовком, за исключением добавленного к нему поля Accept со значением «x-wav/y-img». Вредоносная программа не примет ответ от сервера, если в заголовке ответа не будет этого поля. Заметьте, что поле Accept обычно используется в заголовках запросов от клиента в обычных HTTP запросах, но в этом случае все наоборот, сервер должен ответить с заголовком, который содержит данное поле. Мы заметили, что посылаемые C&C команды всегда имеют размер 796 байт, при этом первое целочисленное значение в данных команды является ее идентификатором (command ID). Следующие команды поддерживаются вредоносным кодом.

Исследование направленной атаки

В коде Agent.NJK присутствует забавная строка «I want to go to THE GREAT WALL, inner Mongolia very much» и учетные данные для доступа к прокси-сервису somnuek.bu / 044253516. В то же время по анализу вредоносного кода видно, что эти учетные данные нигде не используются. Поиск в Google предоставил нам некоторую информацию, которая ведет к человеку с таким именем в социальной сети. У нас нет данных о том какое отношение он имеет к данной кампании.

Следует отметить, что строка CPT-NMC, которая идентифицирует саму кампанию (идентификатор кампании), отправляется на удаленный сервер в дальнейшем еще раз. CPT расшифровывается как Central Post and Telecommunications Department, это учреждение является отделением вьетнамского правительства. Также можно увидеть, что домен верхнего уровня для URL C&C сервера (vnptnet.info) очень похож на вьетнамский адрес vnpt.nv, который принадлежит тому же учреждению CPT. Вероятно такое название было выбрано для маскировки домена в журналах систем типа Intrusion Detection System (IDS), которые фиксируют трафик, проходящий через компьютер или компьютеры в сети. Фишинговые документы, о которых мы писали в начале и которые используются для заманивания пользователей, содержат текст, в котором идет речь о системах телекоммуникации. Сами документы содержат в себе различные графики и диаграммы, пытаясь максимально возможно усыпить внимание потенциальной жертвы и убедить в том, что документ настоящий. Похоже, что эта атака была направлена на вьетнамское учреждение CPT и вьетнамские официальные лица сообщали об атаке на их инфраструктуру в этом году.

Мы наблюдали каким образом оператор взаимодействует с зараженной системой. Ниже приводятся несколько доказательств (лог) такого взаимодействия.

Исследование направленной атаки
Рис. Команды, посылаемые оператором боту Agent.NJK.

Эти выполняемые операции похожи на разведывательные, т. е. относятся к сбору данных о скомпрометированной системе: netsta(t) используется для просмотра текущих сетевых подключений, далее происходит получение информации о логических дисках в системе, просмотр переменных окружения, получение информации о расположении некоторых файлов. Опечатка в слове netsta, вместо netstat, во второй команде, свидетельствует о том, что эти команды боту подаются не автоматизированной системой, а за ними стоит физический оператор. Мы наблюдали такой подход и прежде в случае с направленной атакой Syndicasec.

Исследование направленной атаки
Рис. Бот передает данные о текущих сетевых подключениях в открытом виде.

Исследование направленной атаки
Рис. Закрытие сессии работы C&C с ботом.

На последнем скриншоте под пунктом 2 видно, что сервер разрывает соединение отправляя команду RST (reset). После отправки команды reset поведение сервера изменяется и как только его получит клиент, он в дальнейшем уже не сможет подключиться ни к одному из трех портов.

Исследование направленной атаки
Рис. Сервер отказывает в подключении клиенту, если перед этим им была отправлена команда сброса TCP-соединения.

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

Terminator RAT (aka FAKEM RAT)

Обнаруживается нашими антивирусными продуктами как Win32/Protux.NAR. На момент анализа части этого вредоносного ПО, которое реализует шифрование и отвечает за работу с C&C, мы обнаружили, что эта угроза анализировалась ранее malware.lu и Trend Micro с названиями Terminator RAT и FAKEM RAT. В то же время анализируемые нами образцы отличались от тех, с которыми имели дело эти компании. Еще нужно отметить, что компания FireEye также выпустила свой анализ одной из модификаций этого вредоносного ПО.

По сравнению с Agent.NJK, эта угроза является более сложной. Во-первых, данные конфигурации и строки зашифрованы с использованием несколько модифицированной версии алгоритма XTEA. XTEA использует 128-битный ключ и работает с блоками длиной 64 бита.

Исследование направленной атаки
Рис. XTEA как оно реализовано в исследуемой модификации Terminator RAT.

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

Исследование направленной атаки
Рис. Пример зашифрованного текста, который начинается по адресу 0x404198 и содержит очевидный шаблон.

Исследование направленной атаки
Рис. Расшифрованный текст по тому же адресу.

Исследование направленной атаки
Рис. Часть конфигурации вредоносного кода в зашифрованном виде.

(1) ключ XTEA, (2) два номера портов (9000, 9090) и некоторые другие данные, (3) обфусцированные промежуточными нулями различные строки.

Исследование направленной атаки
Рис. Расшифрованные данные конфигурации.

(1) директория, в которую была установлена вредоносная программа (располагается в %APPDATA%), (2) имена файлов, которые даны установленным компонентам, (3) домен C&C, (4) название директории в секции ресурсов, где хранится полезная нагрузка, (5) раздел реестра, который используется для запуска после перезагрузки (обеспечивает выживаемость).

После старта Protux.NAR динамически заполняет переменные адресов функций в теле своего файла (адреса функций, которые не декларировались в таблице импорта). Для этого используется своя реализация функции GetProcAddress, как и в случае с TrojanProxy.Agent.NJK. Строки, которые используются для получения адресов функций, не зашифрованы и хранятся в теле вредоносного кода в открытом виде.

Далее Win32/Protux.NAR изменяет в системном реестре значение переменной, которая задает путь к Startup Folder (директория «Автозагрузка», используется для организации автозапуска) на новое значение «%APP_DATA%2019», копирует существующие файлы по старому пути в новое расположение и обеспечивает перемещение своего тела в то же новое расположение («%APP_DATA%2019) под именем «svchost .exe» через MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT. Кроме этого, он достает из своего тела еще один PE-файл и копирует его в каталог под именем «winslogon.ini», задавая его отложенное переименование через MOVEFILE_DELAY_UNTIL_REBOOT в файл «winslogon.exe» (используется как компонент для организации proxy tunnel).

Исследование направленной атаки
Рис. Поток выполнения кода, который демонстрирует вышеописанные операции.

Как можно увидеть вредоносный код в значительной степени опирается на флаг MOVEFILE_DELAY_UNTIL_REBOOT функции MoveFileEx. Этот способ используется как механизм ОС для перемещения исполняемых файлов, которые запущены на момент вызова функции. Также этот способ помогает предотвратить активацию эвристики антивирусного продукта или прочих технологий обнаружения вредоносного кода.

Для того, чтобы избежать своего обнаружения со стороны security-продуктов при последующих запусках он будет пытаться копировать свой файл в каталог со временными файлами (GetTempPath() + "~7ti2") и записывать несколько случайных байт в конец файла. После этих операций файл осуществляет свою перезапись с использованием функции MoveFileEx и флагов MOVEFILE_DELAY_UNTIL_REBOOT, MOVEFILE_REPLACE_EXISTING.

Исследование направленной атаки
Рис. Более наглядное представление операций вредоносного кода, описанных выше.

После перезагрузки, когда Windows запускает каждый исполняемый файл из каталога Автозагрузки, будут исполнены два файла вредоносной программы «svchost .exe» (основной компонент) и «winslogon.exe» (компонент proxy tunnel). Основной компонент выполняет расшифровку конфигурации и строк, а также запускает вспомогательный поток, который исполняет разные функции в зависимости от того, из какой директории оригинальный файл был запущен.

Далее вредоносный код выделяет блок памяти, копирует элемент секции ресурсов с идентификатором 0x8A в директории (ресурсов) под именем ACCELORATOR в выделенный блок памяти и расшифровывает его через байтовый XOR с ключом 0x32. Отметим, что название указанной директории ресурсов именно ACCELORATOR, а не ACCELERATOR. Эти расшифрованные данные представляют из себя исполняемый код, который может исполняться вне зависимости от своего первоначального расположения (position-independent code). Перед непосредственной передачей управления на этот блок памяти, вредоносный код получает текущий IP-адрес компьютера, шифрует через XOR его и копирует вместе с номером порта 8000 по заданному смещению в коде. Операции шифрования с использованием XOR выполняются с использованием того же статического ключа 0x32.

Исследование направленной атаки
Рис. Процесс загрузки и исполнения кода из секции ресурсов.

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

Следующим действием, которое выполняет Protux.NAR, является создание события с именем «sxX5{c4», что позволяет ему фиксировать запуск вредоносного кода для предотвращения активности нескольких его копий. Организация работы с управляющими C&C серверами организована через три домена, которые опрашиваются с 30-ти секундным таймаутом в цикле. Два домена располагаются в данных конфигурации, которые зашифрованы с использованием XTEA, как было показано на скриншоте выше. Третий адрес представляет из себя пару: IP скомпрометированной системы и порт 8000 (используется для операций proxy tunneling). Как только соединение с C&C установлено, вредоносный код отправляет туда информацию о скомпрометированной системе в пакете размером 1024 байта. Формат такого пакета представлен ниже.

Исследование направленной атаки
Рис. Отправляемые ботом на удаленный сервер данные о скомпрометированном компьютере.

Основными полями в пакете являются Username и Computer name, размер каждого из которых составляет 128 байт. Другое интересное поле – текущая кодовая страница (Codepage), используемая в системе, размером 4 байта. В пакете также присутствуют еще три целочисленных поля: два из них принимают значения 0x130, 0 (1), а другое принимает значение 0x30005 (2). Эти значения совпадают со значениями аналогичных полей из образцов вредоносного кода, которые анализировались FireEye. Поле 3 содержит строку и, возможно, является идентификатором кампании (campaign ID).

Взаимодействие с C&C зашифровано с использованием простой схемы: к каждому байту из потока применяются байты ключа XOR, а затем применяется операция циклического сдвига вправо (ROR) на три позиции. Ключ является статическим и выглядит как «YHCRA». Алгоритм представлен ниже.

Исследование направленной атаки
Рис. Шифрование при работе с управляющим сервером, используемое в Terminator RAT.

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

Исследование направленной атаки

Нашим коллегам из Trend Micro удалось зафиксировать сам факт атаки и какие вспомогательные операции управляющий сервер передает боту по команде 0x211. Речь идет о выполнении операций с использованием: командной строки, файлового менеджера, диспетчера процессов, редактора реестра, модуля захвата скриншотов, модуля кражи паролей и модуля загрузки файлов. Как видно, спектр выполняемых действий весьма обширен.

Нами были обнаружены следующие домены C&C в этом вредоносном коде.

Исследование направленной атаки

Как видно выше в таблице, домен (1) содержит пробел в конце, это значит, что служба DNS не сможет преобразовать такой домен в соответствующий ему IP-адрес. Домен (2), как мы отмечали выше, был получен с использованием функций gethostname и gethostbyname. Домены 25u.com и 4dq.com управляются через сервис динамического DNS changeip.com, расположенного в США. Адрес 123.51.208.142 принадлежит Тайваню.

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

Исследование направленной атаки

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

  • Один и тот же алгоритм шифрования трафика (“ARCHY”[::-1] xor/ror3).
  • Такой же набор данных, передаваемых в качестве полезной нагрузки по сети (1024-х байтный блок).
  • Одни и те же команды C&C (0x211 и др.).
  • Большинство C&C опираются на сервис динамического DNS.

Можно констатировать, что в Terminator RAT отсутствует последовательный дизайн в реализации вредоносного кода. Очевидно, что атакующие многократно изменяли его для достижения выбранных ими целей или использования в соответствующих атаках. Наличие нескольких механизмов шифрования и двух методов загрузки адресов функций, очевидно, оправдывают это предположение. Кроме этого вредоносный код использует шифрование для информации, передаваемой на C&C, но в то же время хранит их в открытом виде в position-independent коде. Это не свидетельствует о правильности выбранного подхода. Наконец, некоторые функции неловко исправлены через добавление в них вспомогательных возможностей, таких как шифрование/дешифрование, как показано ниже на скриншоте.

Исследование направленной атаки
Рис. Функция шифрования в Terminator RAT.

Переменная xtea_flag (1) используется для определения того, с какой целью вызвана сама функция: для выполнения XTEA шифрования (2) или шифрования через XOR с фиксированным однобайтовым ключом (3). Очевидно, что один из фрагментов кода, который реализует данный алгоритм был встроен позднее.

На самом деле полезно иметь несколько анализов одного семейства вредоносного кода, так как мы можем видеть изменения в различных модификациях и в каких кампаниях они были использованы. В случае с Terminator RAR видно, что в различных атаках компоненты вредоносного кода и компоненты инфраструктуры были изменены. Такие компоненты как ключи XTEA, заголовки сетевых пакетов, название исполняемого файла, который отвечает за реализацию proxy tunnel, были изменены. С точки зрения инфраструктуры изменению подверглись провайдер DDNS и IP адреса C&C.

Теперь мы остановимся более подробно на компоненте proxy tunnel, который уже был детально описан FireEye как sss.exe. Он используется в тех случаях, когда вредоносный код оказался в сети, которая не позволяет устанавливать исходящие соединения напрямую с сервером (т. е. в сети используется прокси). В таком случае модуль резервирует порт 8000 и будет перебрасывать через него соединения, которые используют легитимный прокси, сконфигурированный для компьютера. Для выполнения задачи подключения к C&C через этот прокси, используется метод CONNECT HTTP-протокола.

В исследуемой нами модификации файл этого proxy tunnel модуля называется winslogon.exe. Мы также обнаружили зашифрованный лог-файл, оставляемый этим компонентом по жестко зашитому пути %TEMP%~DF3bbs.tmp. Файл может быть расшифрован с помощью XOR с ключом 0xAB как показано ниже.

Исследование направленной атаки
Рис. Функция расшифровки лога компонента proxy tunnel.

Для предотвращения запуска нескольких копий этого модуля в памяти, он использует объект события, в имени которого фигурирует непечатный символ с кодом 0x13. Добавление такого компонента к Terminator RAT расширяет возможности этой угрозы в области механизмов похищения данных (exfiltration) и поскольку он является фактически независимым от RAT компонентом, то может быть легко использован повторно в другой модификации вредоносного кода. Видно, что этот компонент не легко сразу обнаружить как вредоносный поскольку он не выполняет явных вредоносных функций. К тому же тот факт, что полезная нагрузка вредоносного кода скрыта в position-independent коде, делает статический RAT анализ довольно проблематичным.

Заключение

В процессе анализа файлов вредоносной программы стало очевидно, что ни один из них не был упакован для того, чтобы помешать анализу вредоносного кода. Мы также не увидели ни одного эксплойта, который мог бы помочь злоумышленникам достичь поставленных целей лучшим образом. Кроме этого, сам вредоносный код написан не самым лучшим образом, что свидетельствует о не совсем профессиональном уровне подготовки самих злоумышленников. Список недочетов можно продолжать: плохо реализованные алгоритмы криптографии, ошибки в командах при их вводе оператором, ошибки в конфигурации доменов C&C. Складывается впечатление, что заказчики подобной атаки выделили весьма малый бюджет на организационные нужды нападения.

Win32/TrojanDropper.Small.NNK
58e1dfa7ace03a408d2b20c1fab6e127acbdc71f492366622cd5206484443ed7
3f58a0ea8958c5bf88aa9cfcefe457393f0a96bba9f05f301ba6a15b65d5b64a

Win32/TrojanProxy.Agent.NJK
54c5517541187165fd9720dfe8cff67498d912d189d649cc652d8b113bae8802

Win32/Protux.NAR (Terminator RAT)
425a919cb5803ce8fabb316f5e1be611f88f5c3813fffd2b40f2369eb7074da9

Win32/Protux.NAR (Terminator RAT) с proxy tunnel
a6cc9fbcb3d806fefb4d0f2f6d1c04b81316593dfe926b4477ca841ac17354e2

Автор: esetnod32

Источник


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


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