malware · cryptojacking · crypto-stealer · rust · docker · worm · honeypot · monero

godhive: un nuevo framework Rust de robo de criptomonedas y minería

Kinryū Labs analizó godhive, un framework ofensivo Rust nuevo y sin documentar, sorprendido abusando de una Docker API expuesta en nuestra red de honeypots. Mina Monero, vacía carteras de criptomonedas a través de los principales exchanges y más de ocho blockchains, se propaga como un gusano y se oculta tras un canal de mando construido para sobrevivir a un intento de desmantelamiento. Valoramos con confianza alta que es crimeware creado a medida, y que fue desplegado por un único desarrollador probando su propia herramienta en el terreno desde una conexión móvil de consumo.

Por Davis Zheng·

TLP:CLEAR. Autorizado para publicación. Capturado por la red de sensores honeypot de Kinryū Labs. Los indicadores de abajo están neutralizados (defanged).

Resumen ejecutivo

  • 6.946eventos de Docker API en una sola ráfaga automatizada
  • 946módulos fuente Rust en el binario
  • 8+blockchains a los que apunta su vaciador de carteras
  • 9tipos de canal de mando

godhive es un framework compilado en Rust que combina gusano, ladrón de criptomonedas y minero, y que llegó a nuestra red de honeypots a través de una Docker Remote API expuesta. Un único operador lanzó una campaña automatizada de alto volumen contra el honeypot de Docker, y su instrumental se autoinformó de una intrusión de extremo a extremo 21 veces. Kinryū Labs valora con confianza alta que godhive es crimeware creado a medida y no un minero de serie: lleva su propia marca, su nombre está ausente de la inteligencia de amenazas pública, y el binario recuperado contiene 946 módulos fuente Rust distintos y meses de desarrollo.

El operador nunca descargó el framework desde una URL. Metió el ELF en un contenedor en línea con printf y base64, trozo a trozo. Como el honeypot registró cada trozo, reconstruimos el binario por completo a partir de nuestra propia captura: 215 trozos reensamblados en un ELF x86-64 de 6,2 MB (SHA-256 4194f2337c2b261ed6e1fd0b6d18f0ba75388bdc91a2658eb827a154ed784f36), que no está presente en VirusTotal.

El hallazgo distintivo es que godhive no es principalmente un minero. La minería es su plan B. Su negocio principal es el robo: retiradas automatizadas en seis exchanges importantes y barrido de fondos a través de más de ocho blockchains, con minería de Monero solo cuando no se encuentran carteras.

Valoraciones clave
  • godhive es crimeware Rust nuevo y creado a medida. Lleva marca propia, está ausente de los informes públicos y está construido a partir de 946 módulos Rust con más de 18 dependencias de crates. El binario recuperado es un amplio kit de herramientas ofensivas y no un simple dropper.
  • Su objetivo es la monetización, y el robo va primero. El binario automatiza retiradas en exchanges (Binance, Coinbase, Kraken, Bybit, OKX, KuCoin) y el vaciado DeFi a través de Ethereum, BSC, Polygon, Arbitrum, Optimism, Base, Avalanche, Cronos y Solana, priorizando las stablecoins. La minería de Monero con XMRig es el plan B para hosts sin carteras.
  • Lo que observamos, de extremo a extremo. La cadena observada fue una Docker API expuesta, un contenedor privilegiado con el sistema de archivos del host montado en lectura-escritura, escape del host, robo de /etc/shadow y claves SSH, despliegue de XMRig, un túnel ngrok para acceso fuera de banda y exfiltración a un bot de Telegram, seguido de SSRF a los metadatos de la nube y escaneo en busca de Kubernetes y Elasticsearch.
  • El canal de mando está construido para sobrevivir a un intento de desmantelamiento. godhive superpone una malla Kademlia peer-to-peer, C2 alojado en blockchain (EtherHiding), un relé de Cloudflare Workers en vivo, dominios de respaldo algorítmicos y Telegram, con migración automática cuando un canal se queda en silencio.
  • El oficio del operador es lo contrario del instrumental. Se desplegó crimeware de nivel de producción desde una conexión móvil de consumo, con un token de Telegram en texto plano incrustado y un servidor público de archivos, y fue a dar de lleno en un honeypot pese a incluir un módulo antihoneypot. Valoramos que lo más probable es que se trate de un único desarrollador probando su propio framework en el terreno.

Entrega: una Docker API expuesta

El punto de entrada es el más viejo del mundo de los contenedores: una Docker Remote API sin autenticación en TCP/2375. A partir de ahí la cadena es una toma de control del host de manual, extraída de los eventos docker_* capturados.

El operador crea un contenedor a partir de alpine:latest que es privileged: true, usa network_mode: host y monta por bind todo el sistema de archivos del host en lectura-escritura (/:/host:rw). Esa única configuración de contenedor es el escape: montar la raíz del host dentro de un contenedor privilegiado equivale a un control root de la máquina. Luego elimina los mineros rivales (pkill -9 xmrig; pkill -9 lolMiner; pkill -9 minerd; pkill -9 godhive_c2), escribe su directorio de persistencia en el host en /etc/godhive y lee los secretos del host directamente a través del montaje, volcando /etc/shadow y /root/.ssh/authorized_keys.

Solo entonces aparece el cryptojacking reconocible. godhive descarga una compilación de XMRig desde un servidor anónimo de archivos, la despliega, abre un túnel ngrok para acceso fuera de banda y publica los resultados en un bot de Telegram. Termina consultando el servicio de metadatos de la nube (169.254.169.254) en busca de credenciales y sondeando en busca de Kubernetes, Elasticsearch y Kibana para ampliar su alcance. El propio instrumental del operador registró docker_attack_chain_complete 21 veces contra nuestro sensor.

La minería es lo de menos

El binario recuperado es mucho más grande que la cadena que vimos ejecutarse. Sus 946 módulos Rust y sus cadenas de compilación despliegan un amplio kit de herramientas ofensivas. Parte de ello está respaldado por código compilado (literales duplicados por la monomorfización de Rust, rutas de manejo de errores y directorios de compilación de crates); otras partes son solo nombres de módulos y esbozos de configuración, así que lee la lista de abajo tanto como intención como función probada.

La cadena de monetización es el núcleo. Un harvester recorre el sistema de archivos en busca de wallet.dat, .env, claves SSH y wp-config.php; un scorer valora BTC, XMR, ETH y Ravencoin contra CoinGecko y clasifica a las víctimas por valor; una etapa de credenciales hace credential stuffing con inicios de sesión robados e integración de 2CAPTCHA para superar los retos de inicio de sesión; y un drainer extrae fondos a través de la librería de exchanges CCXT y barridos DeFi on-chain, derivando claves a partir de frases semilla robadas y eligiendo la cadena más barata para cada retirada. Un comentario del desarrollador dejado en el binario optimiza las retiradas de stablecoins para evitar las comisiones de gas de Ethereum, que es el nivel de cuidado que separa un drainer funcional de una prueba de concepto.

Alrededor de ese núcleo se sitúa el resto del kit: un gusano que escanea con Masscan y Nuclei y explota Docker, Redis, Kubernetes, Elasticsearch, WordPress y un conjunto de vulnerabilidades de Windows y Java incluida Log4Shell; un asesino de EDR que apunta a nueve fabricantes de endpoints por nombre de proceso; cinco capas de persistencia hasta un bootkit UEFI con manipulación del TPM; un sistema de plugins WASM para enviar nuevas capacidades a la flota sin tocar el C2; ransomware condicionado a dispararse solo por encima de un umbral de valor de 1.000 dólares estadounidenses; un secuestrador del portapapeles; un módulo de DDoS; y antiforense que borra los registros wtmp, btmp y del journal y siembra ruido falso en syslog para hacer perder el tiempo a un analista. Enmascara cada módulo bajo un nombre de proceso sysd falso y disfraza su propio tráfico como streaming de YouTube tomando prestados nombres de host SNI reales de googlevideo.com.

Dos detalles matizan el cuadro. El framework detecta quince plataformas de honeypot y un buen surtido de sandboxes e hipervisores, y aun así no detectó el nuestro. Y varias de sus configuraciones están sin terminar: el pool de minería por defecto cerró en 2022, un nombre ENS del portapapeles nunca se registró y una clave de cifrado sigue siendo un marcador de posición CHANGE_ME. La capacidad está compilada y es real; partes de ella todavía no están conectadas.

ngrok, y por qué es una hacktool

La muestra que hizo saltar la alarma sobre esta campaña es el binario ngrok legítimo y firmado, descargado del propio CDN de ngrok. No es malware. Es una herramienta comercial de túnel inverso, y los motores antivirus la etiquetan como hacktool precisamente porque es muy útil tras una intrusión. Una vez que godhive tiene ejecución de código dentro de un contenedor privilegiado, ngrok marca hacia la nube de ngrok y expone un servicio local elegido a través de una URL pública, sin abrir ningún puerto entrante y sin nada que un cortafuegos perimetral o un NAT de solo salida pueda detener. El operador confirmó el túnel consultando la API del agente local de ngrok (127.0.0.1:4040/api/tunnels) y envió la URL pública resultante a su bot de Telegram, convirtiendo cada host recién comprometido en un enlace de conexión con un clic.

Un canal de mando construido para sobrevivir a un intento de desmantelamiento

godhive no depende de un único C2. Apila canales en orden de lo difícil que es eliminar cada uno. En la base hay una malla Kademlia peer-to-peer con retos de incorporación por prueba de trabajo y atravesamiento de NAT, que no tiene ningún punto central que confiscar. Por encima se sitúa EtherHiding, donde la dirección actual del backend se almacena en un contrato inteligente de blockchain que no puede revocarse, resuelta en tiempo de ejecución a través de un relé de Cloudflare Workers en vivo (c2-proxy.operator.workers[.]dev) que oculta el backend a los defensores. Por encima de eso hay dominios de respaldo generados algorítmicamente y obtenidos por DNS-over-HTTPS con SNI falsificado, un servicio oculto de Tor, buzones muertos en gists de GitHub, ocho canales de software como servicio y Telegram como canal principal del operador. La detección de quema vigila una racha de sondeos de comandos vacíos y migra automáticamente al operador a infraestructura nueva con una copia de seguridad cifrada de la configuración, y una función de federación permite la coordinación entre múltiples bots.

Tomamos la huella del relé de Cloudflare Workers desde fuera y confirmamos que está en vivo y procesando peticiones: los endpoints de registro, de despacho de tareas y de panel de control enrutan a un backend, mientras que la entrada sin autenticar se rechaza, algo coherente con los tokens cifrados con AEAD que el binario usa para la autenticación del C2. El operador también mantiene tras él un panel de administración endurecido, con hashing de contraseñas Argon2, autenticación multifactor, acceso basado en roles e incluso opciones poscuánticas en su configuración TLS. Esto es alguien que trata una botnet como infraestructura de producción, hasta el punto de exportar métricas de Prometheus para ella.

La otra mitad: operaciones de aficionado

Para toda esa ingeniería, el despliegue es descuidado en aspectos que importan. La campaña provino de una única conexión móvil de consumo de Verizon Wireless en Estados Unidos (174.230.35[.]232, DNS inverso 232.sub-174-230-35.myvzw.com, Gainesville, Florida), no de un host a prueba de balas ni de un VPS, en una ráfaga automatizada y compacta sin reutilización de infraestructura. El token del bot de Telegram está incrustado en texto plano, un único punto de desmantelamiento. La carga útil de XMRig se sirvió desde un servidor público anónimo de archivos. Y el framework ejecutó toda su cadena contra un honeypot mientras llevaba un módulo cuyo único trabajo es detectar honeypots.

El binario se compiló en macOS, bajo un usuario llamado dev, en un directorio llamado research/godhive. Leído junto a la anonimización deliberada de la identidad de Telegram del operador, las configuraciones sin terminar y el despliegue autoatribuido, la lectura más económica es la de un hábil desarrollador en solitario que prueba y ejecuta su propio framework y no la de un cliente de una plataforma de malware como servicio. La marca está pulida, con un logo de colmena dorada a medida y el lema “one mind, one purpose, one hive”; las operaciones no lo están.

El escudo de godhive: un emblema hexagonal dorado de abeja y corona sobre el logotipo GODHIVE y el lema one mind, one purpose, one hive
El escudo propio de godhive, recuperado del canal del operador. La marca es la mitad terminada de la operación.

Atribución

La campaña se vincula a un único operador a través de su infraestructura de Telegram. godhive envía credenciales robadas, URLs de túneles y confirmaciones de infección a un bot incrustado, @godhive_bot (bot id 8836117161). Su chat_id capturado resuelve a una cuenta personal, @godhive77 (user id 7659611777), con guiones bajos por nombre visible y sin foto de perfil, un intento de anonimato que el propio identificador godhive77 echa por tierra. El mismo operador mantiene un canal de reserva a juego, @godhive (un suscriptor, sin publicaciones públicas, reenvío desactivado), y el user id secuencial de Telegram data la cuenta a finales de 2024. El identificador godhive77 es el punto de pivote más fuerte para una atribución posterior.

Indicadores de compromiso

La infraestructura del atacante está neutralizada (defanged). Los servicios legítimos de terceros de los que abusa el malware se dejan intactos para la detección.

Red y host

IndicadorContexto
c2-proxy.operator.workers[.]devRelé C2 de Cloudflare Workers en vivo (repórtalo a Cloudflare)
hxxps://files.catbox.moe/p46h39.gzCarga útil de XMRig en un servidor anónimo de archivos (SHA-256 cb49ae0793b2…)
bin.equinox.io/c/.../ngrok-v3-stable-linux-amd64.tgzDescarga de ngrok (CDN legítimo); el egress a bin.equinox.io desde un servidor es la señal
127.0.0.1:4040/api/tunnelsSondeo del agente local de ngrok (lee la URL pública del túnel asignada)
169.254.169.254/latest/meta-data/SSRF a los metadatos de la nube para robo de credenciales
api.telegram.orgC2 y exfiltración por bot de Telegram; el egress desde cargas de trabajo de servidor es la señal de caza
gitlab.com/nzyme/Staging de herramientas estáticas (sshpass, redis-cli, wget, tor, proxychains)
2captcha.com, hashes.org, nitrxgen.netServicios de resolución de CAPTCHA y de cracking de hashes de los que se abusa en la cadena de credenciales
r[1-20]---sn-*.googlevideo.com, manifest.googlevideo.comNombres de host reales del CDN de YouTube usados para la falsificación de SNI en TLS; alerta cuando resuelvan a IPs que no sean de Google

Actor, identidad de C2 y cobro

IndicadorContexto
174.230.35[.]232Origen de la campaña (móvil de Verizon Wireless, 232.sub-174-230-35.myvzw.com, Gainesville FL); una dirección dinámica de operadora con bajo valor de bloqueo
@godhive_bot (Telegram bot id 8836117161)Bot de C2 y exfiltración del malware; token incrustado en el binario (secreto redactado aquí; reportado a Telegram para su desmantelamiento)
@godhive77 (Telegram user id 7659611777)Cuenta de exfiltración del operador y punto de pivote de atribución más fuerte
@godhive (Telegram channel id -1002105830453)Canal de reserva del operador
49aXwwgXBKRKTUVgYuLy3fZkTeLP3PWgMhwiyK55Ur7WhgYXJ33N8JZG87vzUV1UyVdZzPGLvx1w9YQHk7faWPn1UzJte2RCartera de cobro de Monero confirmada (emparejada con la config de XMRig en vivo)
pool.minexmr.com:4444Pool de la config de XMRig; nótese que minexmr cerró en 2022, así que este valor por defecto fallaría

Archivos y artefactos

  • binario de godhive (reconstruido): SHA-256 4194f2337c2b261ed6e1fd0b6d18f0ba75388bdc91a2658eb827a154ed784f36 (ELF x86-64 de 6,2 MB, no está en VirusTotal). Sus cabeceras ELF están corrompidas deliberadamente para declarar ~106 MB y apuntar el código más allá del final del archivo, dejando fuera de juego a las herramientas estándar.
  • Persistencia en el host: /etc/godhive, /host/usr/local/bin/sysd (binario que suplanta a systemd), /host/tmp/godhive_deployed.txt, proceso godhive_c2, imagen a medida dentro del contenedor godhive:latest.
  • Firma de escape del contenedor: un contenedor creado con Privileged:true, network_mode:host y un bind /:/host:rw.
  • Artefacto de compilación: rutas de cargo bajo /Users/dev/.cargo/registry/src/ y un directorio de compilación research/godhive (desarrollador en macOS).
  • Indicio de endurecimiento del host: contraseña de Redis fijada a CHANGED_BY_GODHIVE; una webshell b374k.php en hosts donde se observó fuerza bruta contra WordPress.

De comportamiento

  • pkill -9 xmrig|lolMiner|minerd|godhive_c2 seguido de mkdir /host/etc/godhive.
  • Lecturas de /host/etc/shadow y /host/root/.ssh/authorized_keys desde un montaje de contenedor.
  • Un proceso sysd que no es el systemd real; escrituras de efibootmgr que crean una entrada de arranque EFI etiquetada como “System Core”.
  • Directorio de trabajo de Nuclei /tmp/.nuclei_assault-t*.

Detección

  • Alerta sobre el tráfico saliente a bin.equinox.io y cualquier host *.ngrok* desde servidores, y sobre el sondeo de la API del agente ngrok 127.0.0.1:4040/api/tunnels.
  • Alerta sobre cualquier contenedor creado con Privileged:true y un bind /:/host; esa combinación es un intento de escape casi seguro.
  • Alerta sobre el egress a api.telegram.org, c2-proxy.operator.workers[.]dev, gitlab.com/nzyme/, 2captcha.com y servicios de cracking de hashes desde cargas de trabajo de servidor.
  • Alerta sobre un proceso sysd, sobre agentes EDR que sean eliminados o detenidos (falcon-sensor, SentinelOne, cbdefense, sophos-edr, cylancesvc) y sobre CONFIG SET requirepass CHANGED_BY_GODHIVE.
  • Trata como camuflaje de tráfico (traffic-shaping) el TLS con SNI googlevideo.com que resuelva a IPs que no sean de Google, y manifest.googlevideo.com desde procesos que no sean navegadores.

Mitigación

  • Nunca expongas la Docker API en el 2375 sin autenticación. Vincúlala a localhost con autenticación de cliente TLS. Esta es la causa raíz.
  • Aplica no-new-privileges, elimina --privileged y restringe los bind mounts del host, o ejecuta Docker rootless o gVisor.
  • Bloquea el servicio de metadatos de la nube (169.254.169.254) desde los contenedores y exige IMDSv2.
  • Filtra el egress: las cargas de trabajo de servidor no deberían alcanzar servidores anónimos de archivos, ngrok, Telegram, resolutores de CAPTCHA ni las rutas de staging de herramientas estáticas de arriba.
  • Activa Secure Boot para mermar la persistencia UEFI, y activa la protección contra manipulaciones en los agentes de endpoint, que godhive intenta eliminar.
  • Si algún host puede haber sido comprometido, rota de inmediato las claves de API de los exchanges; godhive automatiza las retiradas.

Mapeo de MITRE ATT&CK

TácticaTécnica
Initial AccessT1190 Exploit Public-Facing Application (Docker API; Redis, Kubernetes, WordPress, Log4Shell en el arsenal)
ExecutionT1610 Deploy Container; T1059.004 Unix Shell
Privilege EscalationT1611 Escape to Host (contenedor privilegiado, montaje del host)
PersistenceT1543 Create or Modify System Process (sysd); T1542.003 Bootkit (UEFI); T1014 Rootkit
Defense EvasionT1562.001 Impair Defenses (asesino de EDR); T1070 Indicator Removal (borrado de registros); T1497 Virtualization/Sandbox Evasion (detección de honeypot/VM); T1036 Masquerading (sysd, SNI de YouTube); T1027 Obfuscated Files (ELF corrompido)
Credential AccessT1003.008 /etc/passwd y /etc/shadow; T1552.004 Private Keys; T1552.005 Cloud Instance Metadata API
DiscoveryT1046 Network Service Scanning (Masscan, Nuclei)
Command and ControlT1572 Protocol Tunneling (ngrok); T1090 Proxy; T1071.001 Web Protocols (Telegram, Cloudflare Workers); T1102 Web Service (gists de GitHub, canales SaaS)
ImpactT1496 Resource Hijacking (XMRig); T1486 Data Encrypted for Impact (ransomware); T1657 Financial Theft (vaciado de exchanges y DeFi); T1498 Network Denial of Service

Metodología y notas

  • El análisis es un análisis estático del binario ELF, que se reconstruyó por completo a partir de los propios trozos base64 en línea del operador capturados por el honeypot, junto con la revisión del tráfico de la Docker API capturado y el reconocimiento externo autorizado del relé de Cloudflare Workers en vivo del operador. No se ejecutó ningún malware y no se intentó ninguna autenticación de C2.
  • Los indicadores están neutralizados (defanged), y los servicios legítimos de terceros de los que abusa el malware se dejan intactos para la detección.
  • Las muestras están disponibles para otros investigadores y defensores que las soliciten. Escribe a [email protected] con una breve nota sobre quién eres y para qué las necesitas.
Sample
godhive · 4194f2337c2b261e…
How to cite
Kinryū Labs (2026). godhive: un nuevo framework Rust de robo de criptomonedas y minería. https://kinryu.sh/es/reports/godhive-rust-crypto-stealer/