В апреле 2017 года хакерская группировка ShadowBrokers опубликовала свою пятую утечку «Lost in translation», которая, среди прочего, содержала интересный скрипт, проверяющий наличие следов других APT в скомпрометированной системе.
В 2018 году аналитики «Лаборатории Касперского» обнаружили APT, описанную 27-й функцией этого скрипта. Мы назвали эту APT «DarkUniverse», она была активна по крайней мере 8 лет — с 2009 по 2017 годы. Из-за наличия в ее коде уникальных пересечений мы со средней степенью достоверности можем говорить о том, что DarkUniverse является частью активности ItaDuke (эта APT и стоящая за ней хакерская группа известны с 2013 года; в ее атаках использовались PDF с эксплойтами для доставки зловредов и учетные записи Twitter для хранения адресов C2-серверов).
Технические детали
Вектор заражения
Для распространения DarkUniverse использовались фишинговые сообщения. Для каждой жертвы письмо специально подготавливалось так, чтобы привлечь ее внимание и побудить открыть вложенный документ Microsoft Office, содержащий зловред.
Каждый изученный нами образец был скомпилирован непосредственно перед отправкой и включал последнюю доступную версию исполняемого файла вредоносного ПО. Инфраструктура APT развивалась с 2009 по 2017 год, последние образцы полностью отличаются от старых вариантов, поэтому в текущем отчете рассмотрены только самые последние версии вредоносного ПО, использовавшиеся до 2017 года.
Встроенный в документы исполняемый файл извлекал из себя два вредоносных файла, updater.mod и glue30.dll и сохранял их в каталоге %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Reorder. После этого он копировал легальное приложение rundll32.exe в ту же папку и использовал его для старта библиотеки updater.mod.
Модуль updater.mod
Этот модуль реализован в виде динамической библиотеки с единственной экспортируемой функцией callme@16. Он отвечает за обеспечение связи с сервером C&C, реализацию механизмов закрепления и обеспечения целостности зловреда, а также за управление остальными вредоносными модулями.
Для закрепления в системе updater.mod размещает символьную ссылку в папке автозагрузки, что обеспечивает запуск вредоносной активности после перезагрузки. Если ссылка повреждается, updater.mod восстанавливает ее.
Взаимодействие с C&C
В данной кампании C&C-серверы кампании были в основном расположены в облачном хранилище на mydrive.ch. Для каждой жертвы операторы создавали там новую учетную запись, после чего загружали дополнительные вредоносные модули и файл конфигурации с командами для исполнения. Как только updater.mod запускался, он подключался к C&C и выполнял следующие действия:
- скачивал конфигурационный файл с командами в свою рабочую директорию;
- загружал файлы, собранные и подготовленные другими вредоносными модулями (при наличии) на управляющий сервер. Собранные файлы располагались в подпапке с названием ‘queue’ или ‘ntfsrecover’ в рабочей директории. Файлы в этой подпапке могли иметь одно из двух расширений – .d или .upd – в зависимости от того, были ли они уже загружены на сервер или нет.
- скачивал дополнительные вредоносные модули:
- dfrgntfs5.sqt – модуль для исполнения команд, поступающих с C&C;
- msvcrt58.sqt – модуль для сбора учетных записей жертв и электронных писем;
- zl4vq.sqt – легальная библиотека zlib, используемая модулем dfrgntfs5.sqt;
- %victim_ID%.upe – опциональный плагин для dfrgntfs5.sqt. К сожалению, нам не удалось получить этот файл.
Все вредоносные модули были зашифрованы самописным алгоритмом:
Данные для авторизации на C&C помещались в настройки, сохраненные в реестре, но модуль updater.mod также содержал в себе копию в виде зашифрованной строки. Также настройками определялось, как часто updater.mod обращается к серверу C&C: поддерживались как активный, так и частично активный режимы.
Сохраненные в реестре настройки вредоносного ПО
Настройки вредоносного ПО сохранялись в реестре в ключе SOFTWARE\AppDataLow\GUI\LegacyP. Различные возможные значения настроек приведены в следующей таблице:
Имя | Описание |
C1 | Домен C&C. |
C2 | Путь на сервере C&C. |
C3 | Имя учетной записи C&C. |
C4 | Пароль учетной записи C&C. |
install | Если зловред установлен, принимает значение 1. |
TL1 | DESACTIVAR | HABILITAR – определяет, активны ли модули msvcrt58 и glue. |
TL2, TL3 | Если значение TL1 отлично от NULL, определяют временные рамки, в которых применяется опция TL1. |
«kl» | Принимает значение 1, если модулю updater.mod требуется заново скачать модуль msvcrt58.sqt с C&C. |
«re» | Принимает значение 1, если модулю updater.mod требуется заново скачать модуль dfrgntfs5.sqt с C&C. |
«de» | Если значение отлично от 0, фреймворк должен удалить все свои компоненты из системы. |
«cafe» | REDBULL | SLOWCOW определяет, как часто updater.mod обращается к C&C. |
«path» | Путь к папке, из которой файлы отсылаются на C&C. |
Модули glue30.dll и msvcrt58.sqt
Модуль glue30.dll представляет собой кейлоггер. С помощью WinAPI функции SetWindowsHookExW модуль updater.mod устанавливает клавиатурные хуки, после чего внедряет glue30.dll в процессы, получающие ввод с клавиатуры. После этого glue30.dll загружается и начинает перехватывать ввод в контексте каждого подключенного процесса.
Модуль msvcrt58.sqt перехватывает незашифрованный POP3-трафик для сбора учетных записей жертв и электронных писем. Этот модуль отслеживает трафик следующих процессов:
- outlook.exe;
- winmail.exe;
- msimn.exe;
- nlnotes.exe;
- eudora.exe;
- thunderbird.exe;
- thunde~1.exe;
- msmsgs.exe;
- msnmsgr.exe.
Зловред разбирает перехваченный трафик и отправляет результат в основной модуль (updater.mod) для отправки на C&C. Перехват осуществляется с помощью установки хуков в следующих сетевых функциях WinAPI:
- ws2_32.connect;
- ws2_32.send;
- ws2_32.recv;
- ws2_32.WSARecv;
- ws2_32.closesocket.
Модуль dfrgntfs5.sqt
Модуль dfrgntfs5.sqt представляет собой наиболее функциональный компонент фреймворка Dark Universe. Он отвечает за обработку длинного списка команд, приведенного в следующей таблице:
Команда | Описание |
VER | Отправить на сервер версию вредоносного ПО. |
DESINSTALAR | Удалить фреймворк из системы. |
PANTALLA | Сделать снимок экрана и сохранить его в папке \queue. |
CAN_TCP, CAN_HTTP, CAN_HTTPS | Внедрить в Internet Explorer шеллкод, который устанавливает прямое соединение с C&C, скачивает дополнительный код, посылает информацию о результатах скачивания обратно на сервер и исполняет скачанный код. |
MET_TCP, MET_HTTPS | Также внедрить shell-код в IE. Единственное отличие от предыдущей команды состоит в том, что в данном случае shell-код не отправляет никакой дополнительной информации на сервер, он только устанавливает подключение, скачивает дополнительный код и исполняет его. |
CAN_HTTP_LSASS | Выполнить те же действия, что и в случае команды CAN_HTTP, но внедрение происходит в процесс LSASS.exe. |
SCAN/STOPSCAN | Начать/остановить сканирование сети. В процессе сканирования происходит сбор массы различной информации о локальной сети. |
CREDSCAN | Попытаться подключиться ко всем подряд хостам в локальной сети с определенными учетными данными. |
ACTUALIZAR | Обновить dfrgntfs5.sqt. |
ACTUALIZARK | Обновить msvcrt58.sqt. |
SYSINFO | Собрать полную информацию о системе. |
REDBULL | Установить значение 1 для флага «cafe» в реестре – активный режим. |
SLOWCOW | Установить значение 0 для флага «cafe» в реестре – медленный режим. |
X | Выполнить указанный процесс и собрать его вывод. Затем подготовить лог вывода к загрузке на C&C. |
T | Получить список файлов для определенной директории. |
TAUTH | Получить список файлов на удаленном сервере в случае, если учетные данные подходят. |
G | Отправить файл на C&C. |
GAUTH | Скачать указанный файл с общего ресурса в случае, если учетные данные подходят. |
SPLIT | Разбить файл на части по 400 KB и залить их на C&C. |
FLUSH | Отослать на C&C файл с данными, собранными всеми компонентами за целый день, после чего удалить этот файл. |
C1 — C4 | Обновить данные о конфигурации C&C в реестре (C1-C4). |
TL1 — TL3 | Обновить настройки активности модулей в реестре (T1-T3). |
ONSTART | Установить модуль, стартующий при каждом запуске. |
CLEARONSTART | Отменить предыдущую команду ONSTART. |
ARP | Запустить ARP-модуль (uncparse.dll – не удалось получить этот файл), который сохраняет данные в файле с именем arpSniff.pcap. |
AUTO | Автоматически проверять обновления определенных файлов. |
MANUAL | Осуществить в определенных директориях поиск файлов по маске *.upd, удалить все найденные файлы. |
REGDUMP | Собрать определенную информацию из реестра. |
PWDDUMP | Собрать и расшифровать учетные данные из Outlook Express, Outlook, Internet Explorer, Windows Mail и Windows Live Mail, Windows Live Messenger, а также из кэша Internet Cache; |
LOGHASH | Внедриться в процесс lsass.exe и начать процесс сбора и сохранения найденных хэшей паролей в файл checksums.bk. |
SENDLOGHASH | Отправить собранные с помощью предыдущей команды хэши на C&C. |
PROXYINFO | Проверить валидность учетных данных для прокси. |
DHCP | Установить локальные настройки DHCP. |
DNS | Установить локальные настройки DNS. |
FAKESSL | Начать перехват зашифрованного трафика (базовая функциональность MITM). |
Найденные жертвы
Мы обнаружили около 20 жертв, расположенных в Сирии, Иране, Афганистане, Танзании, Эфиопии, Судане, России, Республике Беларусь и ОАЭ. Среди жертв были как гражданские, так и военные организации. Мы считаем, что число жертв в течение основного периода активности данной APT между 2009 и 2017 годами было намного больше.
Выводы
DarkUniverse представляет собой интересный пример полноценного фреймворка, используемого по крайней мере на протяжении восьми лет. Зловред содержит все необходимые модули для сбора всей возможной информации о пользователе и зараженной системе и, похоже, разработан полностью с нуля. Из-за уникальных пересечений в коде мы предполагаем со средней достоверностью, что создатели DarkUniverse’а были связаны с активностью ItaDuke. Злоумышленники были изобретательны и продолжали обновлять свои вредоносные программы в течение всего жизненного цикла своих операций, поэтому исследованные образцы 2017 года совершенно не похожи на первоначальные образцы 2009 года. Приостановка данной активности может быть связана с публикацией утечки «Lost in translation» или, возможно, злоумышленники просто решили перейти на более современные подходы и начать использовать более широко доступные артефакты для своих операций.
Приложение 1 – Индикаторы заражения
Хэши модулей
- 1addee050504ba999eb9f9b1ee5b9f04
- 4b71ec0b2d23204e560481f138833371
- 4e24b26d76a37e493bb35b1a8c8be0f6
- 405ef35506dc864301fada6f5f1d0711
- 764a4582a02cc54eb1d5460d723ae3a5
- c2edda7e766553a04b87f2816a83f563
- 71d36436fe26fe570b876ad3441ea73c
Дополнительная информация о DarkUniverse, а также полный набор индикаторов заражения и YARA-правил предоставляется клиентам сервиса Kaspersky Intelligence Reporting по запросу на intelreports@kaspersky.com.
DarkUniverse – загадочный APT-фреймворк #27