Positive Technologies
PT Expert Security Center

Hellhounds: Операция Lahat. Часть 2

Hellhounds: Операция Lahat. Часть 2

Введение

В ноябре 2023 года специалисты экспертного центра безопасности Positive Technologies (PT Expert Security Center, PT ESC) выпустили свое первое исследование об атаках ранее неизвестной группировки Hellhounds на инфраструктуру российских компаний — «Операция Lahat». Отчет был посвящен атакам группировки на узлы под управлением ОС Linux с использованием нового бэкдора Decoy Dog. Hellhounds продолжили атаки на организации на территории России, и ко второму кварталу 2024 года число подтвержденных жертв группировки составило по меньшей мере 48 организаций.

Помимо уже известных TTPs (Tactics, Techniques, and Procedures) и атак на узлы под управлением ОС Linux, команде PT ESC CSIRT в процессе реагирования на инцидент в компании в сфере транспорта и перевозок удалось обнаружить успешные атаки на Windows-инфраструктуру, о которых ранее не сообщалось. Кроме того, в ходе нового исследования было установлено, что группировка Hellhounds успешно атакует инфраструктуры отечественных организаций как минимум с 2021 года. Помимо этого, достоверно известно, что разработка ВПО велась как минимум с 2019 года.

Полагаясь на широкое разнообразие первичных векторов компрометации — от уязвимых веб-сервисов до проникновения в инфраструктуру жертвы через стороннего подрядчика (trusted relationship), — Hellhounds компрометируют избранные организации и закрепляются в их сети, годами оставаясь незамеченными. Предположительно, злоумышленники проникали в инфраструктуры через атаки типа supply chain.

Зачастую в своих атаках злоумышленники маскировали инструменты под процессы легитимного ПО, в том числе продуктов Positive Technologies.

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

Расширенная версия исследования впервые была представлена на международном киберфестивале по информационной безопасности Positive Hack Days 2.

First Stage (Decoy Dog Loader for Windows)

После успешной компрометации Linux-инфраструктуры, о которой мы подробно рассказывали в прошлом году, злоумышленники предприняли успешную попытку компрометации критически важных узлов под управлением Windows. Получив доступ в систему, атакующие устанавливали сервис с именем Microsoft Account Service или Microsoft Viewer Service, который запускал исполняемый PE-файл с именем AccSrvX64__STABLE__2016-11-10.exe или R_TARIF.VIEWS_X86.EXE. Пример сервисов.

 

{
"Name": "Microsoft Account Service",
"Caption": "Microsoft Account Service",
"Description": "",
"DisplayName": "Microsoft Account Service",
"PathName": "C:\\[REDACTED]\\accounts64\\AccSrvX64__STABLE__2016-11-10.exe",
"ProcessId": 5092,
"Started": true,
"State": "Running",
"SystemName": "[REDACTED]",
"TimeLine": "2024-01-02T21:14:53.132165Z",
"ModuleName": "Win32_Service"
}
{
"Name": "Microsoft Viewer Service",
"Caption": "Microsoft Viewer Service",
"Description": "",
"DisplayName": "Microsoft Viewer Service",
"PathName": "C:\\[REDACTED] \\R_TARIF.VIEWS_X86.EXE",
"ProcessId": 5548,
"Started": true,
"State": "Running",
"SystemName": "[REDACTED]",
"TimeLine": "2024-01-03T22:04:30.5586058Z",
"ModuleName": "Win32_Service"
}

Интересно, что злоумышленники начали предпринимать активные действия в Windows-инфраструктуре скомпрометированной организации в новогодние праздники — второго и третьего января.

Размер исполняемого файла составляет 17 КБ. После успешного запуска сервиса образец расшифровывает список доменов, которые содержатся в секции .rdata, и затем пытается резолвить полученные доменные имена.

Каждый зашифрованный домен начинается с байта FF. Используется простой алгоритм шифрования на основе двух операций: xor и вычитания. В расшифровке участвует номер символа в строке и номер строки (символы в строках нумеруются с нуля).

Рисунок 1. Алгоритм шифрования

Рисунок 1. Алгоритм шифрования

Домены имеют следующий формат:

[-][!][!][...]<domain>

Параметр «-» означает, что домен успешно резолвить необязательно. Если его разрезолвить не удалось, то загрузчик переходит к следующему домену из списка. Параметр «!» используется только совместно с параметром «-» и показывает количество попыток резолвов, перед тем как домен будет пропущен. Количество попыток резолва рассчитывается следующим образом: 2^n, где n — это количество указанный подряд «!». Если параметр не указан, то будет сделана всего одна попытка резолва.

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

В результате поверхностного динамического анализа образца можно подумать, что домены, которые используются на этом этапе, являются управляющими серверами. Но детальный анализ показывает, что домены и впоследствии полученные IP-адреса используются только для генерации ключа и, предположительно, для маскировки под легитимные утилиты. Кроме того, любопытно, что ВПО может использовать несуществующие поддомены, но на реально существующих доменах (например, mp0.ptsecurity.com). Это может создавать видимость легитимности, но при этом поддомен гарантированно не будет разрезолвен.

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

После расшифровки и резолва всех доменов в конфигурации загрузчик расшифровывает следующий блок.

Рисунок 2. Блок в секции .rdata

Рисунок 2. Блок в секции .rdata

Блок имеет фиксированный размер 256 байт и зашифрован алгоритмом CLEFIA в режиме сцепления блоков (CBC). Он содержит путь к основному бэкдору. Ключ формируется следующим образом: имя исполняемого файла без завершающего нуля приводится к верхнему регистру, затем к нему добавляется IP-адрес в байтовом представлении. После этого от получившейся байтовой строки считается 256-байтовый хеш SHA-3, первые 16 байт которого используются как ключ, а байты с 5 по 20 используются в качестве вектора инициализации. Пример формирования ключа.

Рисунок 3. Алгоритм расшифровки пути Second Stage (Decoy Dog for Windows)

Рисунок 3. Алгоритм расшифровки пути Second Stage (Decoy Dog for Windows)

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

В бэкдоре сигнатура MZ заменена на сигнатуру HE, а сигнатура PE перезаписывается в виде случайной 4-байтной последовательности.

Рисунок 4. Фрагмент Decoy Dog

Рисунок 4. Фрагмент Decoy Dog

Злоумышленники прикладывали много усилий, чтобы замаскировать свою активность на скомпрометированных узлах. Для этого они, например, мимикрировали под MaxPatrol SIEM и сервисы Microsoft.

Рисунок 5. Информация о файлах Decoy Dog Loader for Windows

Рисунок 5. Информация о файлах Decoy Dog Loader for Windows

Примечательно, что образцы под ОС Linux фактически не работали, если не проходили проверку идентификатора machine-id, то есть воспроизвести запуск ВПО без корректного идентификатора не представляется возможным. При этом в образцах под ОС Windows такая проверка отсутствует, хотя при этом присутствует проверка имени исполняемого файла, которое никогда не совпадает с original filename из метаданных, но это более слабая проверка. В случае изменения IP-адреса исследователи могут воспользоваться PDNS-сервисами (Passive DNS).

Second Stage (Decoy Dog for Windows)

Расшифрованная нагрузка практически не отличается от рассмотренной ранее версии Decoy Dog под ОС Linux. Бэкдор основан на open-source-проекте Pupy RAT.

Все образцы, которые нам удалось обнаружить, имели управляющий сервер net-sensors[.]net и DGA-домен dynamic-dns[.]net. Динамическая конфигурация отсутствовала во всех образцах.

Пример конфигурации:

 

{'debug': False, 'launcher': 'dnscnc', 'launcher_args': ['--domain', 'net-sensors.net', '-E', 'dynamic-dns.net'], 'delays': [(10, 5, 10), (50, 30, 50), (-1, 150, 300)] [REDACTED] 'cid': 61336226}

Детальная схема работы Decoy Dog на узлах под управлением Windows.

Рисунок 6. Детальная схема работы Decoy Dog (Windows)

Рисунок 6. Детальная схема работы Decoy Dog (Windows)

В ходе нашего исследования были выявлены образцы под Windows, самый старый из которых был скомпилирован 29.11.2019, а самый новый — 03.01.2024. Помимо Decoy Dog, злоумышленники использовали хорошо известный фреймворк Sliver с управляющим сервером 31.184.204[.]42 (ns2.maxpatrol[.]net). Детальный разбор аналогичных образцов представлен в материале «Импланты Sliver под микроскопом: извлечение конфигурации и других полезных данных». В таблице ниже представлены все полученные нами образцы под ОС Windows.

Примечательно, что большинство образцов содержат в конфигурации домен dns.msftncsi.com, который является тестовым сервером компонента индикатора состояния сетевого подключения (Network Connectivity Status Indicator, NCSI) в ОС Windows.

Изучив конфигурации всех полученных в ходе исследования образцов, мы выявили SSL-сертификаты, которые используются в бэкдоре для шифрования соединений с удаленными узлами. Сертификаты содержали самые ранний параметр notBefore в конце 2021 года (26.12.2021 21:51:52), а самый новый параметр — 08.11.2023 13:48:36. Поэтому можно предположить, что кампания началась как минимум в конце 2021 года. Сертификаты выпускали на один и три года с момента генерации образцов, такой алгоритм генерации сертификатов реализован в публичном проекте Pupy RAT.

Рисунок 7. Примеры сертификатов

Рисунок 7. Примеры сертификатов

Проанализировав все найденные нами образцы, мы сравнили их функции, дату выпуска используемых сертификатов из конфигурации и дату загрузки на VirusTotal (соответствующий набор функций появился между этими датами, этот отрезок отмечен на рисунке тускло-синим). На основе этих данных можно условно выделить две версии Decoy Dog. В самой ранней версии по сравнению с Pupy RAT проект был перенесен на Python 3.8, добавлены новые транспорты и появился механизм резервных доменов (DGA). Во второй версии, разработанной между апрелем 2022-го и февралем 2023 года, появляется скриплет для отправки телеметрии, подробно описанный в прошлой статье, динамическая конфигурация и лончер Special для работы в качестве сервера на локальной машине.

Рисунок 8. Таймлайн появления новых функций

Рисунок 8. Таймлайн появления новых функций

Особого внимания заслуживает самый ранний образец загрузчика Decoy Dog с именем testvec.exe, который был скомпилирован в конце 2019 года (29.11.2019). Образец представляет собой первоначальную версию загрузчика и содержит ряд отладочных строк в коде. Таким образом, можно предположить, что разработка загрузчика Decoy Dog велась с 2019 года.

Рисунок 9. Формирование пути к журналу

Рисунок 9. Формирование пути к журналу

Рисунок 10. Загрузка payload

Рисунок 10. Загрузка payload

3snake

Для получения учетных записей на узлах под управлением Linux злоумышленники использовали модифицированную open-source-утилиту 3snake. Для сокращения избыточной функциональности и ухода от сигнатурного детектирования в утилите исключили возможность терминального режима запуска и оставили только режим демона. Кроме того, утилита игнорирует значения параметра «-o» и использует захардкоженный путь /var/log/apt/term.log.gz для вывода скомпрометированных учетных записей. 

В отличие от оригинальной утилиты, путь до файла в образце и перехваченные учетные данные шифруются алгоритмом RC4. Утилита перехватывает системные прерывания SIGINT, SIGQUIT, SIGHUP, SIGPIPE, SIGTERM, SIGSEGV, SIGBUS, SIGILL, SIGCHLD. Кроме этого, в утилиту к уже имеющимся intercept_ssh, intercept_sudo, intercept_su, intercept_ssh_client и intercept_passwd была добавлена функция intercept_openldap. Таким образом, злоумышленникам удалось похитить ряд учетных записей для дальнейшего продвижения по сети.

Рисунок 11. Функции intercept в 3snake

Рисунок 11. Функции intercept в 3snake

Рисунок 12. Функция main модифицированной утилиты 3snake

Рисунок 12. Функция main модифицированной утилиты 3snake

Initial Access

В двух инцидентах атакующим удалось проникнуть в инфраструктуру жертв через подрядчика. Скомпрометировав учетные данные для входа по протоколу SSH, злоумышленники осуществили вход и установили бэкдор Decoy Dog.

Нам также удалось получить содержимое с управляющего сервера net-sensor[.]net и обнаружить, что злоумышленники маскировали образцы Decoy Dog под ISO-образы сервиса iMind для проведения онлайн-встреч, видеоконференций и вебинаров. К сожалению, нам не удалось выяснить, под каким именно предлогом и каким образом злоумышленники вынуждали жертв запустить один из ISO-образов. Стоит обратить внимание, что в сентябре 2023 года НКЦКИ уведомляли об участившихся компьютерных инцидентах, связанных с эксплуатацией уязвимости в сервисе видеоконференций iMind, и рекомендовали обновить программное обеспечение iMind до версии 3.19.

Рисунок 13. Листинг папок на C2

Рисунок 13. Листинг папок на C2

Рисунок 14. Содержимое папки imind, ISO-образы, которые содержат Decoy Dog

Рисунок 14. Содержимое папки imind, ISO-образы, которые содержат Decoy Dog

Жертвы

В результате исследования деятельности группировки нам удалось выявить ряд ранее неизвестных атак на организации на территории России: число подтвержденных жертв возросло более чем в два раза и достигло 48. На момент подготовки первой части исследования нам было известно о 20 жертвах Hellhounds. Анализ новых атак показывает, что атакующие не только фокусируются на государственном секторе, но и активно атакуют российские IT-компании, большинство из которых являются подрядчиками критически важных организаций. Предположительно, атакующие нацелены на эти компании для проведения атак типа trusted relationship. Актуальное распределение жертв по отраслям выглядит следующим образом.

Рисунок 15. Распределение жертв по отраслям

Заключение

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

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

Авторы: Александр Григорян, Станислав Пыжов (Positive Technologies)

Авторы благодарят за помощь в подготовке статьи команды Incident Response и Threat Intelligence экспертного центра Positive Technologies (PT Expert Security Center).

Следующие разделы содержат информацию о всех полученных образцах и обновленных TTPs.

Вердикты наших продуктов

MaxPatrol SIEM

Modify_and_Start_Remote_Service
Service_Created_or_Modified

PT Sandbox

apt_linux_ZZ_DecoyDog__Trojan__FirstStage
apt_linux_ZZ_DecoyDog__Backdoor__Pupy
apt_linux_ZZ_DecoyDog__Backdoor__EncryptedPayload
apt_mem_ZZ_DecoyDog__Backdoor
apt_win_ZZ_DecoyDog__Trojan__FirstStage
tool_multi_ZZ_3snake__HackTool
tool_win_ZZ_Sliver__Backdoor
tool_multi_ZZ_Sliver__Backdoor

PT Network Attack Discovery

SUSPICIOUS [PTsecurity] Possible DecoyDog DNS Tunneling sid: 10010052
SUSPICIOUS [PTsecurity] Possible DecoyDog DNS Tunneling sid: 10010053
REMOTE [PTsecurity] Possible PupyRAT TLS JA3 fingerprint sid: 10011346
REMOTE [PTsecurity] Possible PupyRAT sid: 10008450-10008452
REMOTE [PTsecurity] PupyRAT HTTP Echo Scan sid: 10006391
REMOTE [PTsecurity] PupyRAT HTTP sid: 10006389
REMOTE [PTsecurity] PupyRAT TCP ping sid: 10006390
REMOTE [PTsecurity] PupyRAT SSL Cert 10011347-10011351, 10004069, 10008396-10008397, 10008449

Для поиска обращений к вредоносным индикаторам группировки Hellhounds в PT NAD воспользуйтесь следующим фильтром:

alert.msg == "SUSPICIOUS [PTsecurity] Possible DecoyDog DNS Tunneling"

rpt.cat ~ "*-hellhounds-*"

rpt.type == "dga"

rpt.cat == "dynamic_dns"

Инструменты для анализа

Разработанные нами инструменты для анализа Decoy Dog доступны на GitHub.

IOCs

Файловые индикаторы

Сетевые индикаторы

31.184.204.42
beacon.net.eu.org
c.glb-ru.info
claudfront.net
maxpatrol.net
nsdps.cc
rcsmf100.net
wmssh.com
dw-filter.com
net-sensors.net
mvs05.zyns.com

Файловые сигнатуры

rule PTESC_apt_multi_ZZ_DecoyDog__Trojan__FirstStage__v2{
	strings:
		$clefia_sbox = {57 49 D1 C6 2F 33 74 FB 95 6D 82 EA 0E B0 A8 1C}
		$linux = "machine-id"
		$windows1 = "\x00http\x00"
		$windows2 = "getaddrinfo"
		$windows3 = "VirtualProtect"
		$windows4 = "GetModuleFileNameA"
		$windows5 = "ReadFile"
	condition:
		( uint16be ( 0 ) == 0x4d5a and all of ( $windows* ) or uint32be ( 0 ) == 0x7F454C46 and $linux ) and $clefia_sbox and filesize < 100KB
}

rule PTESC_tool_multi_ZZ_3snake__HackTool{
	strings:
		$a1 = "/proc/%d/cmdline"
		$a2 = "/proc/%d/status"
		$a3 = "/proc/%d/exe"
		$a4 = "/usr/bin/ssh"
		$a5 = "/usr/local/bin/"
		$a6 = "/usr/local/sbin/"
		$b1 = "intercept_ssh"
		$b2 = "sshd: [net]"
		$b3 = "sshd: [accepted]"
		$b4 = "[-] Plisteneter %d has been killed %d"
	condition:
		( uint32be ( 0 ) == 0x7F454C46 ) and 4 of ( $a* ) and 2 of ( $b* )
}

MITRE TTPs