malware · cryptojacking · crypto-stealer · rust · docker · worm · honeypot · monero
godhive: новый фреймворк для кражи криптовалюты и майнинга на Rust
Kinryū Labs разобрала godhive — новый и ранее не описанный наступательный фреймворк на Rust, пойманный за злоупотреблением открытым Docker API в нашей сети ловушек. Он майнит Monero, опустошает криптокошельки на крупных биржах и более чем в восьми блокчейнах, распространяется как червь и прячется за командным каналом, построенным так, чтобы пережить блокировку. Мы с высокой уверенностью оцениваем, что это специально созданное киберпреступное ПО и что его развернул один разработчик, испытывавший собственный инструмент с потребительского мобильного подключения.
Автор Davis Zheng·
TLP:CLEAR. Согласовано к публикации. Получено из сети сенсоров-ловушек Kinryū Labs. Индикаторы ниже обезврежены.
Краткое резюме
- 6,946событий Docker API в одном автоматизированном всплеске
- 946исходных модулей Rust в бинарнике
- 8+блокчейнов, по которым бьёт его дрейнер кошельков
- 9типов командных каналов
godhive — это скомпилированный на Rust фреймворк-червь, крадущий криптовалюту и майнящий её, который добрался до нашей сети ловушек через открытый Docker Remote API. Один оператор вёл высокообъёмную автоматизированную кампанию против Docker-ловушки, и инструментарий сам отчитался о сквозной компрометации 21 раз. Kinryū Labs с высокой уверенностью оценивает, что godhive — это специально созданное киберпреступное ПО, а не рядовой майнер: он несёт собственный бренд, его имя отсутствует в публичной threat intelligence, а восстановленный бинарник содержит 946 отдельных исходных модулей Rust и месяцы разработки.
Оператор ни разу не тянул фреймворк по URL. Он вставлял ELF в контейнер напрямую, через base64-printf, кусок за куском. Поскольку ловушка залогировала каждый кусок, мы полностью восстановили бинарник из собственного захвата: 215 кусков, собранных в 6,2-МБ x86-64 ELF (SHA-256 4194f2337c2b261ed6e1fd0b6d18f0ba75388bdc91a2658eb827a154ed784f36), которого нет на VirusTotal.
Отличительный вывод в том, что godhive — прежде всего не майнер. Майнинг — это его запасной вариант. Его основное дело — кража: автоматизированные выводы средств на шести крупных биржах и опустошение фондов более чем в восьми блокчейнах, а майнинг Monero включается, только когда никаких кошельков не найдено.
- godhive — это новое, специально созданное киберпреступное ПО на Rust. Оно несёт собственный бренд, отсутствует в публичных отчётах и собрано из 946 модулей Rust с более чем 18 зависимостями-крейтами. Восстановленный бинарник — это широкий наступательный инструментарий, а не простой дроппер.
- Его цель — монетизация, и кража на первом месте. Бинарник автоматизирует выводы с бирж (Binance, Coinbase, Kraken, Bybit, OKX, KuCoin) и опустошение DeFi в сетях Ethereum, BSC, Polygon, Arbitrum, Optimism, Base, Avalanche, Cronos и Solana, отдавая приоритет стейблкоинам. Майнинг Monero через XMRig — это запасной вариант для хостов без кошельков.
- Что мы наблюдали от начала до конца. Наблюдаемая цепочка — это открытый Docker API, привилегированный контейнер с примонтированной на чтение-запись файловой системой хоста, побег на хост, кража
/etc/shadowи SSH-ключей, развёртывание XMRig, ngrok-туннель для внеполосного доступа и эксфильтрация в Telegram-бота, за которыми следуют SSRF к облачным метаданным и сканирование в поисках Kubernetes и Elasticsearch. - Командный канал построен так, чтобы пережить блокировку. godhive наслаивает одноранговую сеть Kademlia, размещённый в блокчейне C2 (EtherHiding), «живой» релей на Cloudflare Workers, алгоритмически генерируемые резервные домены и Telegram, с автоматической миграцией, когда канал замолкает.
- Уровень исполнения у оператора противоположен уровню инструмента. Киберпреступное ПО промышленного качества развёрнуто с потребительского мобильного подключения, с зашитым в открытом виде Telegram-токеном и публичным файлохостингом, и оно угодило прямиком в ловушку, несмотря на встроенный антиловушечный модуль. Мы оцениваем, что это, скорее всего, один разработчик, испытывающий собственный фреймворк.
Доставка: открытый Docker API
Точка входа — самая старая в мире контейнеров: Docker Remote API без аутентификации на TCP/2375. Оттуда цепочка — хрестоматийный захват хоста, восстановленный из захваченных событий docker_*.
Оператор создаёт из alpine:latest контейнер, который privileged: true, использует network_mode: host и bind-монтирует всю файловую систему хоста на чтение-запись (/:/host:rw). Именно эта одна конфигурация контейнера и есть побег: монтирование корня хоста в привилегированный контейнер равнозначно root-контролю над машиной. Затем он вычищает конкурирующих майнеров (pkill -9 xmrig; pkill -9 lolMiner; pkill -9 minerd; pkill -9 godhive_c2), пишет свой каталог закрепления на хост в /etc/godhive и читает секреты хоста прямо через монтирование, выгружая /etc/shadow и /root/.ssh/authorized_keys.
Только после этого появляется узнаваемый криптоджекинг. godhive тянет сборку XMRig с анонимного файлохостинга, разворачивает её, открывает ngrok-туннель для внеполосного доступа и отправляет результаты в Telegram-бота. Он завершает работу запросом к сервису облачных метаданных (169.254.169.254) за учётными данными и зондированием Kubernetes, Elasticsearch и Kibana, чтобы расширить охват. Собственный инструментарий оператора залогировал docker_attack_chain_complete 21 раз против нашего сенсора.
Майнинг — это наименьшее из всего
Восстановленный бинарник намного больше той цепочки, что мы наблюдали в работе. Его 946 модулей Rust и их сборочные строки очерчивают широкий наступательный инструментарий. Часть из этого подкреплена скомпилированным кодом (продублированные литералы от мономорфизации Rust, пути обработки ошибок и сборочные каталоги крейтов); другие части — это лишь имена модулей и заготовки конфигурации, так что читайте список ниже как намерение в той же мере, что и как доказанную функциональность.
Конвейер монетизации — это ядро. harvester обходит файловую систему в поисках wallet.dat, .env, SSH-ключей и wp-config.php; scorer оценивает BTC, XMR, ETH и Ravencoin по CoinGecko и ранжирует жертв по стоимости; стадия работы с учётными данными подставляет украденные логины с интеграцией 2CAPTCHA, чтобы обойти проверки при входе; а дрейнер вытягивает средства через биржевую библиотеку CCXT и ончейн-зачистки DeFi, выводя ключи из украденных сид-фраз и выбирая самую дешёвую сеть для каждого вывода. Оставленный в бинарнике комментарий разработчика оптимизирует выводы стейблкоинов, чтобы избежать комиссий за газ в Ethereum, — а это тот уровень тщательности, что отличает рабочий дрейнер от proof of concept.
Вокруг этого ядра расположено остальное содержимое комплекта: червь, который сканирует с помощью Masscan и Nuclei и эксплуатирует Docker, Redis, Kubernetes, Elasticsearch, WordPress и набор уязвимостей Windows и Java, включая Log4Shell; убийца EDR, бьющий по девяти вендорам защиты конечных точек по имени процесса; пять слоёв закрепления вплоть до UEFI-буткита с манипуляцией TPM; система WASM-плагинов для доставки новых возможностей парку без обращения к C2; программа-вымогатель, срабатывающая только выше порога стоимости в 1 000 долларов США; перехватчик буфера обмена; DDoS-модуль; и антифорензика, которая удаляет wtmp, btmp и журнальные логи и подсаживает фальшивый syslog-шум, чтобы тратить время аналитика. Он маскирует каждый модуль под фальшивое имя процесса sysd, а собственный трафик выдаёт за стриминг YouTube, заимствуя настоящие SNI-имена хостов googlevideo.com.
Две детали смягчают картину. Фреймворк обнаруживает пятнадцать платформ-ловушек и целую стойку песочниц и гипервизоров, но нашу он проглядел. И несколько его конфигураций не доведены до конца: майнинг-пул по умолчанию закрылся в 2022 году, ENS-имя для буфера обмена так и не было зарегистрировано, а ключ шифрования до сих пор остаётся заглушкой CHANGE_ME. Возможность скомпилирована и реальна; часть её ещё не подключена.
ngrok и почему это хактул
Образец, который первым отметил эту кампанию, — легитимный, подписанный бинарник ngrok, стянутый с собственного CDN ngrok. Это не малварь. Это коммерческий инструмент обратного туннелирования, и антивирусные движки помечают его как хактул именно потому, что он настолько полезен после компрометации. Как только godhive получает выполнение кода внутри привилегированного контейнера, ngrok дозванивается до облака ngrok и выставляет выбранный локальный сервис через публичный URL, не открывая ни одного входящего порта и не оставляя ничего, что мог бы остановить периметровый фаервол или egress-only NAT. Оператор подтвердил туннель, опросив локальный agent-API ngrok (127.0.0.1:4040/api/tunnels), и отправил полученный публичный URL своему Telegram-боту, превращая каждый свежезахваченный хост в готовую к подключению зацепку по клику.
Командный канал, построенный так, чтобы пережить блокировку
godhive не полагается на единственный C2. Он складывает каналы в порядке того, насколько трудно удалить каждый. В самом низу — одноранговая сеть Kademlia с proof-of-work-испытаниями при вступлении и обходом NAT, у которой нет центральной точки для захвата. Над ней стоит EtherHiding, где текущий адрес бэкенда хранится в смарт-контракте блокчейна, который нельзя отозвать, и резолвится во время выполнения через «живой» релей Cloudflare Workers (c2-proxy.operator.workers[.]dev), скрывающий бэкенд от защитников. Над этим — алгоритмически генерируемые резервные домены, получаемые по DNS-over-HTTPS с подделанным SNI, скрытый сервис Tor, тайники в GitHub gists, восемь каналов software-as-a-service и Telegram как основной канал оператора. Детектор «прожига» следит за серией пустых опросов команд и автоматически мигрирует оператора на свежую инфраструктуру с зашифрованной резервной копией конфига, а функция федерации поддерживает координацию между несколькими ботами.
Мы сняли отпечаток релея Cloudflare Workers снаружи и подтвердили, что он «живой» и обрабатывает запросы: эндпоинты регистрации, раздачи задач и панели управления маршрутизируются на бэкенд, тогда как неаутентифицированный ввод отклоняется, что согласуется с AEAD-шифрованными токенами, которые бинарник использует для аутентификации в C2. Оператор также держит за ним закалённую админ-панель с хешированием паролей Argon2, многофакторной аутентификацией, доступом на основе ролей и даже постквантовыми опциями в конфигурации TLS. Это кто-то, кто относится к ботнету как к промышленной инфраструктуре, вплоть до экспорта для него метрик Prometheus.
Другая половина: любительские операции
При всей этой инженерии развёртывание небрежно в тех местах, которые важны. Кампания шла с единственного потребительского мобильного подключения Verizon Wireless в США (174.230.35[.]232, обратный DNS 232.sub-174-230-35.myvzw.com, Гейнсвилл, Флорида), а не с bulletproof-хоста или VPS, в плотном автоматизированном всплеске без переиспользования инфраструктуры. Токен Telegram-бота зашит в открытом виде — единственная точка для блокировки. Полезная нагрузка XMRig отдавалась с публичного анонимного файлохостинга. И фреймворк прогнал всю свою цепочку против ловушки, неся при этом модуль, единственная задача которого — обнаруживать ловушки.
Бинарник был собран на macOS под пользователем dev в каталоге research/godhive. Прочитанное вместе с намеренной анонимизацией Telegram-личности оператора, недоделанными конфигурациями и самоатрибутирующим развёртыванием, самое экономное прочтение — это умелый разработчик-одиночка, тестирующий и запускающий собственный фреймворк, а не клиент платформы malware-as-a-service. Бренд отполирован — с кастомным золотым логотипом-ульем и слоганом «one mind, one purpose, one hive»; операции — нет.
Атрибуция
Кампания связана с единственным оператором через его инфраструктуру Telegram. godhive отправляет украденные учётные данные, URL туннелей и подтверждения заражения зашитому боту @godhive_bot (id бота 8836117161). Захваченный chat_id разрешается в личный аккаунт @godhive77 (id пользователя 7659611777) с подчёркиваниями вместо отображаемого имени и без фото профиля — попытка анонимности, которую сам хендл godhive77 сводит на нет. Тот же оператор держит соответствующий зарезервированный канал @godhive (один подписчик, никаких публичных постов, пересылка отключена), а последовательный id пользователя Telegram датирует аккаунт концом 2024 года. Хендл godhive77 — самая сильная зацепка для дальнейшей атрибуции.
Индикаторы компрометации
Инфраструктура атакующего обезврежена. Легитимные сторонние сервисы, которыми злоупотребляет малварь, оставлены нетронутыми для обнаружения.
Сеть и хост
| Индикатор | Контекст |
|---|---|
c2-proxy.operator.workers[.]dev | «Живой» релей C2 на Cloudflare Workers (сообщить в Cloudflare) |
hxxps://files.catbox.moe/p46h39.gz | Полезная нагрузка XMRig на анонимном файлохостинге (SHA-256 cb49ae0793b2…) |
bin.equinox.io/c/.../ngrok-v3-stable-linux-amd64.tgz | Загрузка ngrok (легитимный CDN); egress на bin.equinox.io с сервера — это и есть сигнал |
127.0.0.1:4040/api/tunnels | Опрос локального агента ngrok (читает назначенный публичный URL туннеля) |
169.254.169.254/latest/meta-data/ | SSRF к облачным метаданным для кражи учётных данных |
api.telegram.org | C2 и эксфильтрация через Telegram-бота; egress с серверных нагрузок — это сигнал для охоты |
gitlab.com/nzyme/ | Стейджинг статических инструментов (sshpass, redis-cli, wget, tor, proxychains) |
2captcha.com, hashes.org, nitrxgen.net | Сервисы решения CAPTCHA и взлома хешей, используемые в конвейере учётных данных |
r[1-20]---sn-*.googlevideo.com, manifest.googlevideo.com | Настоящие имена хостов CDN YouTube, используемые для подделки TLS SNI; поднимайте тревогу, когда они разрешаются в не-Google IP |
Актор, идентичность C2 и выплаты
| Индикатор | Контекст |
|---|---|
174.230.35[.]232 | Источник кампании (мобильный Verizon Wireless, 232.sub-174-230-35.myvzw.com, Гейнсвилл, Флорида); динамический адрес оператора связи с низкой ценностью для блокировки |
@godhive_bot (id Telegram-бота 8836117161) | Бот C2 и эксфильтрации малвари; токен зашит в бинарнике (секрет здесь скрыт; сообщено в Telegram для блокировки) |
@godhive77 (id пользователя Telegram 7659611777) | Аккаунт оператора для эксфильтрации и самая сильная зацепка для атрибуции |
@godhive (id канала Telegram -1002105830453) | Зарезервированный канал оператора |
49aXwwgXBKRKTUVgYuLy3fZkTeLP3PWgMhwiyK55Ur7WhgYXJ33N8JZG87vzUV1UyVdZzPGLvx1w9YQHk7faWPn1UzJte2R | Подтверждённый кошелёк для выплат Monero (в паре с «живым» конфигом XMRig) |
pool.minexmr.com:4444 | Пул из конфига XMRig; учтите, что minexmr закрылся в 2022 году, так что этот дефолт не сработал бы |
Файлы и артефакты
- Бинарник godhive (восстановленный): SHA-256
4194f2337c2b261ed6e1fd0b6d18f0ba75388bdc91a2658eb827a154ed784f36(6,2-МБ x86-64 ELF, отсутствует на VirusTotal). Заголовки его ELF намеренно повреждены, чтобы заявлять ~106 МБ и указывать на код за концом файла, ломая стандартные инструменты. - Закрепление на хосте:
/etc/godhive,/host/usr/local/bin/sysd(фальшивый бинарник systemd),/host/tmp/godhive_deployed.txt, процессgodhive_c2, кастомный внутриконтейнерный образgodhive:latest. - Сигнатура побега из контейнера: контейнер, созданный с
Privileged:true,network_mode:hostи bind-монтированием/:/host:rw. - Сборочный артефакт: cargo-пути под
/Users/dev/.cargo/registry/src/и сборочный каталогresearch/godhive(разработчик на macOS). - Признак закалки хоста: пароль Redis установлен в
CHANGED_BY_GODHIVE; вебшеллb374k.phpна хостах, где наблюдался брутфорс WordPress.
Поведенческие
pkill -9 xmrig|lolMiner|minerd|godhive_c2, за которым следуетmkdir /host/etc/godhive.- Чтение
/host/etc/shadowи/host/root/.ssh/authorized_keysиз монтирования контейнера. - Процесс
sysd, который не является настоящим systemd; записиefibootmgr, создающие EFI-загрузочную запись с меткой «System Core». - Рабочий каталог Nuclei
/tmp/.nuclei_assault-t*.
Обнаружение
- Поднимайте тревогу на исходящий трафик на
bin.equinox.ioи любой хост*.ngrok*с серверов, а также на опрос agent-API ngrok127.0.0.1:4040/api/tunnels. - Поднимайте тревогу на любой контейнер, созданный с
Privileged:trueи bind-монтированием/:/host; эта пара — почти верная попытка побега. - Поднимайте тревогу на egress на
api.telegram.org,c2-proxy.operator.workers[.]dev,gitlab.com/nzyme/,2captcha.comи сервисы взлома хешей с серверных нагрузок. - Поднимайте тревогу на процесс
sysd, на убийство или остановку EDR-агентов (falcon-sensor,SentinelOne,cbdefense,sophos-edr,cylancesvc) и наCONFIG SET requirepass CHANGED_BY_GODHIVE. - Считайте TLS с SNI
googlevideo.com, который разрешается в не-Google IP, иmanifest.googlevideo.comот не-браузерных процессов, за формирование трафика.
Меры противодействия
- Никогда не выставляйте Docker API на 2375 без аутентификации. Привяжите его к localhost с клиентской TLS-аутентификацией. Это первопричина.
- Принудительно включите
no-new-privileges, откажитесь от--privilegedи ограничьте bind-монтирования хоста, либо запускайте rootless Docker или gVisor. - Заблокируйте доступ к сервису облачных метаданных (
169.254.169.254) из контейнеров и требуйте IMDSv2. - Фильтруйте egress: серверные нагрузки не должны дотягиваться до анонимных файлохостингов, ngrok, Telegram, решателей CAPTCHA или путей стейджинга статических инструментов выше.
- Включите Secure Boot, чтобы притупить UEFI-закрепление, и включите защиту от вмешательства на агентах конечных точек, которые godhive пытается убить.
- Если какой-либо хост мог быть скомпрометирован, немедленно ротируйте API-ключи бирж; godhive автоматизирует выводы.
Сопоставление с MITRE ATT&CK
| Тактика | Техника |
|---|---|
| Initial Access | T1190 Exploit Public-Facing Application (Docker API; Redis, Kubernetes, WordPress, Log4Shell в арсенале) |
| Execution | T1610 Deploy Container; T1059.004 Unix Shell |
| Privilege Escalation | T1611 Escape to Host (привилегированный контейнер, монтирование хоста) |
| Persistence | T1543 Create or Modify System Process (sysd); T1542.003 Bootkit (UEFI); T1014 Rootkit |
| Defense Evasion | T1562.001 Impair Defenses (убийца EDR); T1070 Indicator Removal (удаление логов); T1497 Virtualization/Sandbox Evasion (обнаружение ловушек/ВМ); T1036 Masquerading (sysd, YouTube SNI); T1027 Obfuscated Files (повреждённый ELF) |
| Credential Access | T1003.008 /etc/passwd and /etc/shadow; T1552.004 Private Keys; T1552.005 Cloud Instance Metadata API |
| Discovery | T1046 Network Service Scanning (Masscan, Nuclei) |
| Command and Control | T1572 Protocol Tunneling (ngrok); T1090 Proxy; T1071.001 Web Protocols (Telegram, Cloudflare Workers); T1102 Web Service (GitHub gists, SaaS-каналы) |
| Impact | T1496 Resource Hijacking (XMRig); T1486 Data Encrypted for Impact (программа-вымогатель); T1657 Financial Theft (опустошение бирж и DeFi); T1498 Network Denial of Service |
Методология и заметки
- Анализ — статический анализ бинарника ELF, который был полностью восстановлен из собственных inline-кусков base64 оператора, захваченных ловушкой, вместе с разбором захваченного трафика Docker API и санкционированной внешней разведкой «живого» релея Cloudflare Workers оператора. Малварь не запускалась, и попыток аутентификации в C2 не предпринималось.
- Индикаторы обезврежены, а легитимные сторонние сервисы, которыми злоупотребляет малварь, оставлены нетронутыми для обнаружения.
- Образцы доступны другим исследователям и защитникам по запросу. Напишите на [email protected] с короткой запиской о том, кто вы и зачем они вам.