Восьмого апреля 2020 года наши специалисты из экспертного центра безопасности (PT Expert Security Center) обнаружили активность хорошо известной киберпреступной группы. На популярном ресурсе для динамического анализа вредоносного ПО сработали сетевые сигнатуры, описывающие активность APT30, о которой уже давно ничего не было слышно. Это послужило отправной точкой нашего исследования.
Про APT30 известно со времен отчета наших коллег из FireEye в 2015 году. Злоумышленники атакуют преимущественно государственные структуры в Южной и Юго-Восточной Азии (в Индии, Таиланде, Малайзии и др. странах) с целью кибершпионажа, а их инструментарий разрабатывается по крайней мере с 2005 года. Любопытно, что хакеры не только продолжают поддерживать свои старые, хорошо известные инструменты десятилетней давности, но и придерживаются своих подходов к организации сетевых ресурсов.
В этой статье мы рассмотрим новые версии уже известных троянов, возможности вновь обнаруженных вредоносных программ и особенности сетевой инфраструктуры.
Бэкдоры BACKSPACE и NETEAGLE
Двадцать пятого августа 2019 года на VirusTotal был загружен файл (MD5: f4f8f64fd66a62fc456da00dd25def0d) с названием AGENDA.scr из Малайзии. Это исполняемый PE-файл на платформе x86, упакованный UPX. Образец имеет иконку офисного документа с целью обмануть пользователя, а в ресурсах содержатся еще два зашифрованных объекта.
Оба ресурса расшифровываются следующим алгоритмом:
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 представлены в отчете FireEye, и мы не будем повторяться. Приведем в таблице ниже строки, которые были закодированы шифром Цезаря с ключом ‘-4’.
Смещение | Строка |
---|---|
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
Смещение | Строка |
---|---|
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
Смещение | Строка |
---|---|
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. Имеет корректную дату сборки:
Содержит внутри часть отладочной информации в виде пути до проекта:
D:\WorkSources\RHttpCtrl\Server\Release\svchost.pdb
Похоже, что подстрока RHttpCtrl и есть название инструмента, данное злоумышленниками.
Первым делом вредонос пытается извлечь значение ключа random ветки реестра HKCU\Software\HttpDiv. Если это не удалось, средствами WinAPI-функции GetSystemTimeAsFileTime будет получено системное время — и затем использовано в качестве seed генератора произвольных чисел. Сгенерированное произвольное число будет сохранено в реестр и использовано позднее. Создается отдельный поток, в котором будут происходить дальнейшие действия.
С помощью 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 мы можем предугадать действия вредоноса по названиям объектов.
Возможности бэкдора невелики:
Команда | Тип | Описание |
---|---|---|
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.
Команда download
За обработку данного типа команд отвечает компонент Download. По указанному адресу средствами URLDownloadToFileA он загружает дополнительный компонент с сервера злоумышленников и записывает в файл.
Команда snap
За обработку данного типа команд отвечает компонент Download. Средствами API библиотеки gdiplus.dll он создает снимок экрана, записывает в файл и отправляет на сервер злоумышленников.
Команда upload
За обработку данного типа команд отвечает компонент Upload. С помощью загруженной ранее утилиты Rar.exe от WinRAR он упаковывает указанный файл в архив и отправляет на сервер злоумышленников.
Бэкдор RCtrl
MD5: 95fde34187552a2b0b7e3888bfbff802
Представляет собой исполняемый PE-файл на платформе x86, разработанный с применением библиотеки MFC и упакованный с помощью UPX. Имеет корректную дату сборки:
Содержит внутри часть отладочной информации в виде пути до проекта:
D:\WorkSources\MyProjects\RCtrl\Release\Server.pdb
Как и в случае с RHttpCtrl, мы взяли название для вредоноса из названия проекта злоумышленников.
Прежде всего формируется буфер данных размером около 200 байт, который будет выполнять роль конфигурационного файла. Отметим, что заполняться он будет не последовательно, порциями, оставляя множество полей неиспользуемыми.
С помощью однобайтового 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 соответственно:
Добавим, что попытка получить адрес сервера злоумышленников с помощью вторичных адресов фиксируется в реестре в ветке HKCU\Software\PickMill сохранением текущей даты в ключах Y, M и D.
Получив действующий IP-адрес сервера злоумышленников, вредонос повторно соединяется с сервером и ожидает получить от него строку Jo*Po*Hello. Эта строка закодирована в теле вредоноса однобайтовым XOR с числом 0x24. Любопытный прием: как правило, трояны сами инициируют обмен данными.
Если строка получена, создается фингерпринт системы: версия системы, IP-адрес, информация о марке и частоте процессора, объеме дискового пространства. Собранные данные шифруются уникальным алгоритмом на базе побитовых циклических сдвигов и XOR (а именно, циклического сдвига влево на 4 + 3 = 7 бит и XOR с 0x23) и отправляются на сервер злоумышленников.
Затем создается отдельный поток, который каждые 30 секунд отправляет на сервер один и тот же буфер данных. Формируется он следующим образом:
- выделяется память размером в 4100 байт,
- первый байт принимает значение 0x25,
- остальные байты — нули,
- результат кодируется рассмотренным выше алгоритмом.
Таким образом, сколько-нибудь существенное изменение претерпит только первый байт, а остальные примут значения 0x23, так как побитовые сдвиги на нулевые байты не повлияют.
Затем управление получает функция обработки команд, которая расшифровывает принятые данные (алгоритм расшифровки состоит из действий, обратных рассмотренному алгоритму шифрования) и извлекает номер команды.
Команда | Описание |
---|---|
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 |
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 |
Несложно выделить повторяющиеся паттерны: строки 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 — дроппер NETEAGLE634e79070ba21e1e8f08aba995c98112 — 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