Black Lotus Labs недавно обнаружила серию вредоносных файлов, которые вызвали расследование недокументированного кластера активности, использующего маршрутизаторы DrayTek. В настоящее время мы не можем определить первоначальный вектор доступа; однако после эксплуатации угроза запускает сценарий bash, который загружает и исполняет два вредоносных двоичных файла - HiatusRAT и двоичный файл перехвата пакетов - на скомпрометированном узле.
HiatusRAT Malware
После заражения целевой системы HiatusRAT позволяет субъекту угрозы удаленно взаимодействовать с системой и использует встроенные функции - некоторые из которых весьма необычны - для превращения зараженной машины в скрытый прокси-сервер для субъекта угрозы. Двоичный модуль захвата пакетов позволяет агенту отслеживать трафик маршрутизатора на портах, связанных с электронной почтой и передачей файлов.
Используя собственную телеметрию с глобальной IP-магистрали Lumen, мы перечислили командно-контрольную (C2) инфраструктуру, связанную с этой деятельностью, и выявили не менее 100 зараженных жертв, преимущественно в Европе и Латинской Америке. Последняя версия вредоносной программы, версия 1.5, стала активной в июле 2022 года.
Угрожающие субъекты, стоящие за кампанией Hiatus, в основном использовали отслужившие свой срок DrayTek Vigor моделей 2960 и 3900, работающие на архитектуре i386. Наше расследование также выявило предварительно собранные двоичные файлы, нацеленные на архитектуры MIPS, i386 и ARM.
Затронутые модели представляют собой маршрутизаторы с высокой пропускной способностью, которые могут поддерживать VPN-подключения для сотен удаленных работников и предлагают идеальные возможности для среднего бизнеса. Мы подозреваем, что злоумышленник заражает интересующие его объекты для сбора данных, а также объекты с целью создания скрытой прокси-сети.
Эта кампания состоит из трех основных компонентов. К ним относятся:
- bash-скрипт, который развертывается после эксплойта, и два исполняемых файла, извлекаемых bash-скриптом.
- HiatusRAT
- вариант tcpdump, позволяющий перехватывать пакеты.
Анализ HiatusRAT показал, что он служит двум целям:
- для удаленного взаимодействия с пораженным устройством, что позволяет агенту загружать файлы или выполнять произвольные команды
- для работы в качестве SOCKS5-прокси на маршрутизаторе. Это, вероятно, позволяет агенту передавать командный и управляющий трафик через маршрутизатор, чтобы скрыть команды и управление от дополнительного агента в другом месте.
Двоичный файл tcpdump, позволяющий перехватывать пакеты, позволяет агенту отслеживать трафик на портах, связанных с электронной почтой и передачей файлов из соседней локальной сети.
Анализ Black Lotus Labs показывает, что последняя кампания Hiatus началась в июле 2022 года, но мы подозреваем, что этот кластер активности возник еще до 2022 года. С помощью глобальной телеметрии мы обнаружили около 100 ботов, связанных с Hiatus. Это примерно 2% от общего числа маршрутизаторов DrayTek 2960 и 3900, которые в настоящее время подключены к Интернету. Это говорит о том, что угрожающий субъект намеренно поддерживает минимальный след, чтобы ограничить свое воздействие и сохранить критические точки присутствия.
Имеется небольшое количество сообщений о том, что взломанные маршрутизаторы используются в качестве прокси-инфраструктуры, а также для скрытого сбора данных и обфускации вредоносного ПО c2. Например, команда Microsoft Threat Intelligence Team (MSTIC) недавно опубликовала отчет, в котором говорится, что китайские субъекты используют уязвимые маршрутизаторы SOHO для поддержания устойчивости и сбора разведданных для шпионажа. Это последовало за нашим собственным обнаружением ZuoRAT - ранее неизвестной кампании вредоносного ПО, которая начала нацеливаться на маршрутизаторы SOHO для развертывания вредоносного ПО в соседней локальной сети.
Поскольку мы не наблюдали совпадений или корреляций между HiatusRAT и какими-либо публичными сообщениями, мы считаем, что HiatusRAT - это уникальный кластер.
После выполнения HiatusRAT выполняет две функции:
Он проверяет наличие существующих процессов на порту 8816 и открывает слушателя на этом порту. Если на порту 8816 уже запущена служба, вредоносная программа сначала убивает существующий процесс, чтобы убедиться, что на зараженном устройстве запущен только один экземпляр трояна.
После включения слушателя на порту 8816 второй процесс собирает дополнительную информацию о зараженном хосте и помещает ее в файл перечисления, который отправляется на heartbeat C2. Это позволяет субъекту угрозы отслеживать, является ли устройство все еще зараженным и доступным, пока он регистрирует информацию о скомпрометированном узле.
Перечисление на основе хоста можно разделить на четыре основные категории: информация системного уровня, сетевая информация, информация о файловой системе и список процессов.
1. Информация системного уровня
Информация системного уровня содержала следующую информацию о зараженном маршрутизаторе:
- MAC-адрес
- версия ядра
- Архитектура
- Версия выпуска микропрограммы
2. Сетевая информация
Сетевая информация, которую собирает агент, включает в себя результаты команды ifconfig и кэш ARP. Первый показывает публичный IP-адрес маршрутизатора, второй - локальные IP-адреса и MAC-адреса устройств в соседней локальной сети (LAN). Такая видимость прилегающей сети маршрутизатора является потенциальным доказательством дополнительных возможностей таргетинга.
3. Информация о файловой системе
Чтобы оценить наличие любых других файлов, запущенных на маршрутизаторе, агент перечисляет монтирования файловой системы. Цель - собрать все имена точек монтирования, расположение путей на уровне каталога, тип файловой системы, а также проверить 'fstab' для получения дополнительной информации о файловой системе виртуальной памяти. Мы подозреваем, что это позволяет агенту идентифицировать другие исполняемые файлы, которые выполнялись исключительно в памяти и не соответствовали файлу, записанному на диск, что является механизмом, связанным с некоторыми семействами вредоносных программ.
4. Список процессов
HiatusRAT собирает информацию о запущенных процессах, такую как имя процесса, ID, UID, аргументы, а также информацию о самом HiatusRAT.
Как только агент получает всю информацию о хосте, он считывает данные из JSON-файла, называемого конфигурационным файлом, чтобы определить, где находится сервер сердцебиения для отправки информации обратно агенту угрозы. При анализе конфигурационного файла мы также обнаружили второй C2-сервер, обозначенный как "Upload", который используется двоичным файлом захвата пакетов.
В наблюдаемом примере через заданный интервал в 28 000 секунд (8 часов) информация о файле перечисления собиралась и становилась частью маячка сердцебиения, отправляемого на heartbeat C2 через HTTP POST. Это включало заголовок, содержащий дополнительную информацию о состоянии маршрутизатора.
Запрос heartbeat POST содержит множество полей заголовка, которые, вероятно, используются для того, чтобы помочь субъекту угрозы тщательно отслеживать статус каждого скомпрометированного маршрутизатора. Некоторые поля интуитивно понятны, например, X_UTIME (обозначается как текущее время в эпоху) и X_UUID (обозначается как MAC-адрес). Другие значения, такие как X_TOKEN, вероятно, обозначают тип контрольной суммы полей, чтобы убедиться, что активность исходит от взломанного узла. Заголовок X_TOKEN вычисляется как: Md5(time[:time % 10] + MAC-адрес + time[time % 10:]). Значение времени обозначается в эпохах.
В то время как такие функции, как config и shell, являются обычными командами для RAT, SOCKS5 и tcp_foward предназначены для обеспечения обфусцированной связи с другими машинами (например, зараженными другой RAT) через жертвы Hiatus. Функция TCP, однако, более проста. Она открывает слушателя на порту, а затем пересылает данные TCP на другой IP-адрес и порт. По нашей оценке, это, скорее всего, было сделано для пересылки маячков или эксфоллов от другой РАТ на другой зараженной машине, что позволило бы маршрутизатору стать IP-адресом C2 для вредоносного ПО на отдельном устройстве.
Согласно информации, содержащейся в документации по SOCKS 5, на которую ссылается RFC 1928, эта функция отличается тем, что обеспечивает большую гибкость. Это означает, что SOCKS 5 может поддерживать соединения на основе UDP, соединения IPv6 и необязательное поле аутентификации, такое как имя пользователя и пароль или маркер. Угрожающий агент может использовать SOCKS-прокси для получения маячков от маячка или для пересылки команд, отправленных пассивному агенту, например, веб-оболочке. Это позволит агенту угрозы взаимодействовать с другим агентом со скомпрометированного IP-адреса и более точно имитировать легитимное поведение. Такая тактика позволит агенту обойти некоторые возможности обнаружения, основанные на геозонировании или соединениях, связанных с пуленепробиваемыми хостинг-провайдерами.
В дополнение к HiatusRAT сценарий bash устанавливает второй двоичный файл для перехвата пакетов данных, проходящих через маршрутизатор. Мы нашли четыре варианта двоичного файла tcpdump, который обеспечивает захват пакетов с одинаковой функциональностью, скомпилированных для ARM, i386, MIPS64 big endian и MIPS32 little endian. Этот файл, по-видимому, является скомпилированной версией трех общих библиотек: tcpdump, libpcap и openSSL. Сценарий bash также указывает, что инструмент захвата пакетов собирает исходящие соединения, связанные со следующими портами:
- Порт 21 - связан с протоколом передачи файлов (FTP)
- Порт 25 - связан с протоколом простой передачи почты (SMTP)
- Порт 110 - связан с протоколом почтового отделения 3 (POP3)
- Порт 143 - связан с протоколом доступа к интернет-почте (IMAP).
Как только данные захвата пакетов достигают определенной длины файла, они отправляются на "upload C2", расположенный по адресу 46.8.113[.]227, вместе с информацией о маршрутизаторе хоста. Это позволяет субъекту угрозы пассивно перехватывать трафик электронной почты, проходящий через маршрутизатор, и некоторый трафик передачи файлов. Хотя именно эти порты указаны в восстановленном bash-скрипте, для угрожающего субъекта не составит труда указать дополнительные порты через оболочку, порожденную HiatusRAT. Мы подозреваем, что если угрожающий агент обнаружит жертву, представляющую большой интерес, он может установить последующие модули для расширения функциональности.
Indicators of Compromise
IPv4
- 104.250.48.192
- 149.248.0.203
- 46.8.113.227
- 66.42.108.185
SHA1
- 167ea14b961877bec689cf8714b450e55a8033bd
- 22ff6af7256397267d1919cbb78bfdcccb6e5e39
- 2a770ad9d8e34b71323f026dcbe6b70b67e415db
- 525c04e97a0e2b38243f11debec9e100cc51fb15
- 5ec68cd73e3ca516b2518bc3307f5381bcc52b20
- a80c9729984976eeb6b20a48a5dae8b10e4dc724
- c55a8c027482ce281903f4b6b0b370a6efc7252c
- cb01eb90c2c968a1d1e17136ba8609ff1eafb9eb
- da1cd4b75787d8c3079ca4b7709bf788e7e2021e
SHA256
- 07cc70b287cbed13ef965c5a9815e1e2dcb7bfa4664beafdc7b57b5af3a8dd12
- 15960d2d7584ff90922e1c69f33c00508de4caa8b05a1341142b31f1661dd56f
- 193481c4e2cbd14a29090f500f88455e1394140b9c5857937f86d2b854b54f60
- 27b957fe2c5e9f3c98cfae5e90a2cd90a9adb8c9ac9de21118a751d9679bc4af
- 36f6045fac9289df716ea9f3f657fd9c560660bfc70bebd0e07c1d42025f9a3a
- 382d64d5943001a1df569f8ddae9490509ed96ba8128de6e74acff6d879d7035
- 4877bdc4fa80ad8e38600d1e0f3e9fdfbce2a6658ba050347281842345c5dd5e
- 6e21e42cfb93fc2ab77678b040dc673b88af31d78fafe91700c7241337fc5db2
- 6eb7357c0492960150286418e2a2f18513f50e925630bf2e6235422143f2e6c6