Positive Technologies
PT Expert Security Center

Орлиный глаз снова в игре: уже известные и новые бэкдоры группы APT30

Орлиный глаз снова в игре: уже известные и новые бэкдоры группы APT30

Восьмого апреля 2020 года наши специалисты из экспертного центра безопасности (PT Expert Security Center) обнаружили активность хорошо известной киберпреступной группы. На популярном ресурсе для динамического анализа вредоносного ПО сработали сетевые сигнатуры, описывающие активность APT30, о которой уже давно ничего не было слышно. Это послужило отправной точкой нашего исследования.

Срабатывание сетевых сигнатур на активность APT30

Про APT30 известно со времен отчета наших коллег из FireEye в 2015 году. Злоумышленники атакуют преимущественно государственные структуры в Южной и Юго-Восточной Азии (в Индии, Таиланде, Малайзии и др. странах) с целью кибершпионажа, а их инструментарий разрабатывается по крайней мере с 2005 года. Любопытно, что хакеры не только продолжают поддерживать свои старые, хорошо известные инструменты десятилетней давности, но и придерживаются своих подходов к организации сетевых ресурсов.

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

Бэкдоры BACKSPACE и NETEAGLE

Двадцать пятого августа 2019 года на VirusTotal был загружен файл (MD5: f4f8f64fd66a62fc456da00dd25def0d) с названием AGENDA.scr из Малайзии. Это исполняемый PE-файл на платформе x86, упакованный UPX. Образец имеет иконку офисного документа с целью обмануть пользователя, а в ресурсах содержатся еще два зашифрованных объекта.

Иконка PE-файла и объекты в ресурсах

Оба ресурса расшифровываются следующим алгоритмом:

for i, c in enumerate(buffer): d = c - (i & 0xFF) d ^= 0xEF d &= 0xFF buffer[i] = ((d >> 6) | (d << 2)) & 0xFF

Первый файл (MD5: 634e79070ba21e1e8f08aba995c98112) записывается в каталог с шаблонами Microsoft Office — %APPDATA%\Microsoft\Windows\Templates\AGENDA.docx — и запускается. Это офисный документ, который содержит план совещания в одном из департаментов правительства Малайзии. Цель документа — привлечь внимание пользователя.

Содержание фишингового документа

Документ был создан 2 августа 2019 года пользователем Norehan Binti Nordin.

Свойства фишингового документа

Второй файл (MD5: 56725556d1ac8a58525ae91b6b02cf2c) помещается в каталог автозагрузки %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\WINWORD.EXE. В момент создания файл не запускается (злоумышленники рассчитывают на его работу, например, после перезагрузки системы, чтобы не привлекать внимания). Это бэкдор семейства NETEAGLE, модификации которого подробно рассмотрены в отчете наших коллег из FireEye. Любопытно, что характерная строка NetEagle из образцов 2015 года (которая и послужила названием семейства вредоносов) теперь заменена на JokerPlay.

Строка «NetEagle» в образце 2015 года
Строка «JokerPlay» в образце 2019 года

Особенности работы вредоноса NETEAGLE представлены в отчете FireEye, и мы не будем повторяться. Приведем в таблице ниже строки, которые были закодированы шифром Цезаря с ключом ‘-4’.

Расшифрованные строки и их смещения в бэкдоре NETEAGLE
Смещение Строка
0x40b02c msmsgr.exe
0x40b038 msmsgr
0x40b040 pic4.bmp
0x40b04c pic2.bmp
0x40b058 pic1.bmp
0x40b064 http://www.gordeneyes.com/photo/
0x40b1ac SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run

По полученным индикаторам были обнаружены еще два бэкдора (MD5: d9c42dacfae73996ccdab58e429548c0 и MD5: 101bda268bf8277d84b79fe52e25fee4). Согласно дате компиляции, они созданы 21 октября 2019 года, а один из них был тоже загружен на VirusTotal из Малайзии, причем только в мае 2020 года. Эти вредоносы относятся к семейству BACKSPACE, модификации которого также рассмотрены в отчете специалистов из FireEye. Приведем расшифрованные строки для каждого образца вместе с алгоритмом декодирования.

Алгоритм расшифровки строк в d9c42dacfae73996ccdab58e429548c0:

for i, c in enumerate(buffer): d = c - i - 7 buffer[i] = d & 0xFF
Расшифрованные строки и их смещения в бэкдоре BACKSPACE (d9c42dacfae73996ccdab58e429548c0)
Смещение Строка
0x40c048 *lecnaC*
0x40c054 Software\Microsoft\\PnpSetup
0x40c070 Mutex_lnkword_little
0x40c088 /b.ini
0x40c090 /a.ini
0x40c098 /a1.ini
0x40c0a0 /l.ini
0x40c0a8 \WordPlug.exe
0x40c0cc /z.ini
0x40c0d4 \WINWORD.EXE
0x40c0b8 \WordForVista.exe
0x40c0e4 /d.jpg
0x40c0ec /l.jpg
0x40c0f4 www.kabadefender.com
0x40c10c www.gordeneyes.com
0x40c120 /LGroup1

Алгоритм расшифровки строк в 101bda268bf8277d84b79fe52e25fee4:

for i, c in enumerate(buffer): d = c ^ 0x37 d -= i + 27 buffer[i] = d & 0xFF
Расшифрованные строки и их смещения в бэкдоре BACKSPACE (101bda268bf8277d84b79fe52e25fee4)
Смещение Строка
0x41104c Compumter
0x411058 *lecnaC*
0x411064 Software\Microsoft\Core
0x41107c Mutex_lnkch
0x411088 Event__lnkch__end
0x41109c Event__lnkch__ended
0x4110b0 EventAck__lnkch
0x4110c0 /b.ini
0x4110c8 /c.ini
0x4110d0 /a.ini
0x4110d8 /a1.ini
0x4110e0 /l.ini
0x4110e8 /k.txt
0x4110f0 /l1.ini
0x4110f8 /b1.ini
0x411100 /c1.ini
0x41110f www.gordeneyes.com
0x41118f www.kabadefender.com
0x41120f chrome.exe
0x41128f /group1
0x41130f /d.jpg
0x41138f /l.jpg
0x411408 System Idle Process
0x41141c \t.ini
0x411424 \t.exe
0x41142c \ue.exe
0x411434 \ue1.exe
0x411440 Chrome\BIN
0x41144c chrome.lnk
0x411458 Google Chrome
0x411490 /n09230945.asp
0x4114a0 automation.whatismyip.c\xffm
0x4114c8 hideipexcept=
0x4114d8 hideip=
0x4114e0 hidehostexcept=
0x4114f0 hidehost=
0x4114fc hidedirexcept=
0x41150c hidedir=
0x411518 hidewebexcept=
0x411528 hideweb=
0x411534 hideall=1
0x411540 killpath=
0x41154c /some/edih.txt
0x41155c www.appsecnic.com
0x411570 www.km153.com
0x411580 www.newpresses.com
0x41159c runipexcept=
0x4115bc runhostexcept=
0x4115cc runhost=
0x4115d8 rundirexcept=
0x4115e8 runwebexcept=
0x4115f8 runall=1
0x411604 /http/nur.txt

Отметим, что часть строк в бэкдоре 101bda268bf8277d84b79fe52e25fee4 зашифрованы тем же алгоритмом, что использовался для шифрования ресурсов в дроппере NETEAGLE. Изменены лишь значения констант.

Кроме инструментов, относящихся к уже известным семействам вредоносного ПО, мы обнаружили еще несколько образцов, ранее неизвестных. Подробно рассмотрим их возможности.

Бэкдор RHttpCtrl

MD5: ed09b0dba74bf68ec381031e2faf4448

Представляет собой исполняемый PE-файл на платформе x86. Имеет корректную дату сборки:

Дата компиляции образца RHttpCtrl

Содержит внутри часть отладочной информации в виде пути до проекта:

D:\WorkSources\RHttpCtrl\Server\Release\svchost.pdb

Похоже, что подстрока RHttpCtrl и есть название инструмента, данное злоумышленниками.

Первым делом вредонос пытается извлечь значение ключа random ветки реестра HKCU\Software\HttpDiv. Если это не удалось, средствами WinAPI-функции GetSystemTimeAsFileTime будет получено системное время — и затем использовано в качестве seed генератора произвольных чисел. Сгенерированное произвольное число будет сохранено в реестр и использовано позднее. Создается отдельный поток, в котором будут происходить дальнейшие действия.

Вызов API GetSystemTimeAsFileTime

С помощью GET-запроса к адресу hxxp://www.kabadefender.com/plugins/r.exe вредонос получает и сохраняет легитимный архиватор WinRAR (его CLI-составляющую, 4fdfe014bed72317fa40e4a425350288). Затем создает фингерпринт системы, собирая имя компьютера, IP-адрес и версию системы, и отправляет POST-запросом по адресу hxxp://www.kabadefender.com/clntsignin.php.

Отправка фингерпринта системы

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

Журналирование действий

Поле id остается пустым. Параметр random содержит произвольное число, о котором мы говорили ранее. Отметим, что здесь используется заданный User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0.

Затем инициируется обработка поступающих команд средствами класса KernelManager. Благодаря RTTI мы можем предугадать действия вредоноса по названиям объектов.

Названия объектов из RTTI

Возможности бэкдора невелики:

Команды RHttpCtrl и их описания
Команда Тип Описание
0 shell Выполнить команду средствами cmd.exe
3 download Загрузить файл с сервера злоумышленников
4 snap Сделать и отправить скриншот рабочего стола
5 upload Загрузить файл на сервер злоумышленников

Обращаем внимание, что обработка команд 1 и 2 отсутствует. Для всех команд ожидается маркер REP, который выполняет роль разделителя номера команды и необходимых параметров. Результаты выполнения команд отправляются по адресу hxxp://www.kabadefender.com/clntcmd.php с выставленным параметром type в соответствии с типом команды.

Команда shell

За обработку данного типа команд отвечает компонент ShellManager. Он создает процесс cmd.exe, с которым обеспечивает взаимодействие, поставляя команды на вход и получая результаты на выходе. Результаты считываются порциями и дополняются количеством считанных байтов — и отправляются в качестве значения параметра output.

Создание потоков ввода, вывода и запуск cmd.exe
Запись команд в поток ввода
Считывание результатов выполнения команды

Команда download

За обработку данного типа команд отвечает компонент Download. По указанному адресу средствами URLDownloadToFileA он загружает дополнительный компонент с сервера злоумышленников и записывает в файл.

Загрузка файла с сервера злоумышленников

Команда snap

За обработку данного типа команд отвечает компонент Download. Средствами API библиотеки gdiplus.dll он создает снимок экрана, записывает в файл и отправляет на сервер злоумышленников.

Сохранение скриншота экрана в файл
Отправка скриншота на сервер злоумышленников

Команда upload

За обработку данного типа команд отвечает компонент Upload. С помощью загруженной ранее утилиты Rar.exe от WinRAR он упаковывает указанный файл в архив и отправляет на сервер злоумышленников.

Упаковка файла в архив перед отправкой

Бэкдор RCtrl

MD5: 95fde34187552a2b0b7e3888bfbff802

Представляет собой исполняемый PE-файл на платформе x86, разработанный с применением библиотеки MFC и упакованный с помощью UPX. Имеет корректную дату сборки:

Дата компиляции образца RCtrl

Содержит внутри часть отладочной информации в виде пути до проекта:

D:\WorkSources\MyProjects\RCtrl\Release\Server.pdb

Как и в случае с RHttpCtrl, мы взяли название для вредоноса из названия проекта злоумышленников.

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

Часть структуры конфигурационного файла. Поля field_* не используются

С помощью однобайтового XOR с числом 0x23 вредонос расшифровывает адрес основного сервера злоумышленников: 103.233.10\.152. Обратившись к нему по TCP на порт 4433, проверяет успешность соединения. Если соединиться не удалось, использует дополнительные данные для получения адреса сервера.

Дополнительные данные — это адреса hxxp://www.gordeneyes.com/infos/p и hxxp://www.techmicrost.com/infos/p, закодированные однобайтовым XOR с числом 0x25. Расшифровав адреса, вредонос пробует соединиться с ними поочередно посредством GET-запроса. В ответе сервера ожидаются 8 байт: IP-адрес сервера и порт. На рисунке ниже это 172.247.197\.189 и 443 соответственно:

Получение адреса сервера злоумышленников: ‘0xAC 0xF7 0xC5 0xBD’ → ‘172 247 197 189’, ‘0xBB 0x01 0x00 0x00’ → 0x1BB → 443

Добавим, что попытка получить адрес сервера злоумышленников с помощью вторичных адресов фиксируется в реестре в ветке HKCU\Software\PickMill сохранением текущей даты в ключах Y, M и D.

Фиксация текущей даты в реестре

Получив действующий IP-адрес сервера злоумышленников, вредонос повторно соединяется с сервером и ожидает получить от него строку Jo*Po*Hello. Эта строка закодирована в теле вредоноса однобайтовым XOR с числом 0x24. Любопытный прием: как правило, трояны сами инициируют обмен данными.

Если строка получена, создается фингерпринт системы: версия системы, IP-адрес, информация о марке и частоте процессора, объеме дискового пространства. Собранные данные шифруются уникальным алгоритмом на базе побитовых циклических сдвигов и XOR (а именно, циклического сдвига влево на 4 + 3 = 7 бит и XOR с 0x23) и отправляются на сервер злоумышленников.

Алгоритм шифрования данных

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

  • выделяется память размером в 4100 байт,
  • первый байт принимает значение 0x25,
  • остальные байты — нули,
  • результат кодируется рассмотренным выше алгоритмом.

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

Затем управление получает функция обработки команд, которая расшифровывает принятые данные (алгоритм расшифровки состоит из действий, обратных рассмотренному алгоритму шифрования) и извлекает номер команды.

Алгоритм расшифровки данных
Команды RCtrl и их описания
Команда Описание
3 Получить информацию о диске
4 Получить листинг каталога
5 Прочитать файл
6 Открыть файл на чтение и запись
7 Записать в файл
8 Запустить файл
9 То же, что 4
16 Создать директорию
17 Отчистить директорию
18 Очистить конфигурационный файл
19 Скопировать файл
20 Переместить файл
21 Получить информацию о файле
22 Прочитать pipe
23 Записать результат в журнал
25 Получить список процессов
32 Завершить процесс
33 Сделать скриншот экрана
36 Выключить ПК
39 Считать буфер обмена
40 Записать в реестр
41 Скопировать файл в каталог автозагрузки

Мы не будем останавливаться на реализации каждой из команд, так как используемые для этого приемы атомарны и ничем не примечательны. Отметим лишь, что обработка ряда команд пропущена (1–2, 10–15, 24, 26–31, 34–35, 37–38), а результаты выполнения шифруются рассмотренным способом и отправляются на сервер злоумышленников.

Сетевая инфраструктура

Среди расшифрованных строк одного из свежих бэкдоров BACKSPACE можно встретить ряд доменов (newpresses\.com, appsecnic\.com, km153\.com), которые использовались группой более 10 лет назад. Соберем некоторые наиболее интересные WHOIS-данные в таблице ниже:

WHOIS-данные доменов newpresses\.com, appsecnic\.com и km153\.com
WHOIS-поле newpresses\.com appsecnic\.com km153\.com
Name yuefen che heng cai Zhong yong
Organization cheyuefen Trade Client Ministry of Kunming Telecom,Yunnan
City kunming Kun ming
State yunnan Yunnan
Street SongMingrenmingroad panlongqubeichengzhonglu Yunnan Wenshan WenBi lu 241 hao
Country CN
WHOIS-данные домена newpresses\.com

Несложно выделить повторяющиеся паттерны: строки yunnan, kunming, cheyuefen в разных вариациях.

У свежих доменов (gordeneyes\.com, kabadefender\.com, techmicrost\.com) можно выделить идентичные поля:

  • Registrar: Alibaba Cloud Computing (Beijing) Co., Ltd.,
  • State: yun nan,
  • Country: CN.

Значение yun nan отсылает нас к хорошо известным доменам.

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

  • CNSERVERS LLC (40065),
  • ABCDE GROUP COMPANY LIMITED (133201),
  • Zenlayer Inc (21859).

Заключение

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

Автор: Алексей Вишняков, Positive Technologies

IOCs

f4f8f64fd66a62fc456da00dd25def0d — дроппер NETEAGLE
634e79070ba21e1e8f08aba995c98112 — AGENDA.docx
56725556d1ac8a58525ae91b6b02cf2c — NETEAGLE
hxxp://www.gordeneyes.com/photo/
d9c42dacfae73996ccdab58e429548c0 — BACKSPACE
101bda268bf8277d84b79fe52e25fee4 — BACKSPACE
ed09b0dba74bf68ec381031e2faf4448 — RHttpCtrl
hxxp://www.kabadefender.com/plugins/r.exe
4fdfe014bed72317fa40e4a425350288 — WinRAR, Rar.exe
hxxp://www.kabadefender.com/clntsignin.php
kabadefender\.com
95fde34187552a2b0b7e3888bfbff802 — RCtrl
103.233.10\.152:4433
hxxp://www.gordeneyes.com/infos/p
hxxp://www.techmicrost.com/infos/p
172.247.197\.189:443
gordeneyes\.com
techmicrost\.com
9cb8a0cb778906c046734fbe67778c61
c9b1c8b51234265983cf8427592b0a68
newpresses\.com
km153\.com
appsecnic\.com