El fingerprint que lo delata todo
La primera señal de que esta campaña es diferente es el campo client_version del handshake SSH. Este identificador lo establece el cliente al conectar — es la "firma de cliente" que el servidor ve antes de cualquier autenticación. En tráfico legítimo, verías una mezcla de OpenSSH_9.x, PuTTY_Release_X.XX, paramiko y similares.
En nuestro honeypot, durante los tres días de observación, el 99,5% de las conexiones presentaron exactamente el mismo identificador:
SSH-2.0-Go — 26.225 conexiones de 26.353 totales (99,5%)
Este identificador corresponde a la librería SSH nativa de Go (golang.org/x/crypto/ssh). No es un cliente SSH para uso humano. Es la huella de un scanner o bot personalizado escrito en Go.
Los 359 clientes legítimos restantes: paramiko 2.12 (44), PuTTY 0.83 (44), paramiko 5.0 (21), libssh2 (9).
Distribución de la carga entre IPs
Las 53 IPs no actúan de forma independiente. La distribución de intentos por IP revela una arquitectura de campaña con roles diferenciados:
| IP | Intentos | Patrón observado |
|---|---|---|
| 45.148.[REDACTED].183 | 5.173 | Alta frecuencia, diccionario pequeño (51 creds únicas) |
| 2.57.[REDACTED].177 | 4.403 | Alta frecuencia, diccionario pequeño (37 creds únicas) |
| 45.148.[REDACTED].240 | 3.402 | Alta frecuencia, diccionario mediano (101 creds únicas) |
| 83.168.[REDACTED].99 | 1.524 | Frecuencia media, diccionario amplio (379 creds únicas) |
| 91.92.[REDACTED].61 | 1.522 | Frecuencia media, diccionario amplio (761 creds únicas) |
| 192.109.[REDACTED].78 | 1.520 | Frecuencia media |
| 92.118.[REDACTED].62 | 1.407 | Frecuencia media |
| 195.178.[REDACTED].30 | 1.365 | Frecuencia media |
La lectura táctica: las tres IPs superiores actúan como "arietes" — prueban las credenciales más probables (123456, solana, root/sol) a máxima velocidad. Las IPs de frecuencia media hacen un barrido más amplio del espacio de credenciales. División de trabajo clásica de botnet.
Sesiones exec: 996 intentos sin abrir shell
Una parte de la campaña usa el canal exec de SSH en lugar del canal shell interactivo. Esto permite ejecutar comandos directamente sin abrir una sesión de terminal — más rápido y potencialmente más difícil de detectar por herramientas que solo registran shells interactivas.
996 intentos de exec bloqueados por el honeypot. Los comandos exec más frecuentes son idénticos al patrón GPU hunter: uname -s -v -n -r -m, lspci | grep VGA, uptime -p.
El uso de exec en lugar de shell es coherente con un scanner que solo necesita detectar si la máquina tiene GPU — no necesita una sesión interactiva completa.
Por qué el cliente Go importa
Los clientes SSH legítimos —OpenSSH, PuTTY, WinSCP— son herramientas diseñadas para uso humano. La librería SSH de Go es exactamente lo contrario: una API de bajo nivel que permite escribir clientes SSH programáticos con control total sobre el handshake, los canales y la gestión de errores.
Usar golang.org/x/crypto/ssh directamente tiene implicaciones concretas para el atacante:
- Alta concurrencia: Go maneja goroutines nativamente. Un scanner Go puede abrir miles de conexiones simultáneas con overhead mínimo.
- Control del identificador: el campo
client_versiones configurable. Si no lo cambian, es porque no les importa o no conocen que es un indicador visible. - Portabilidad: un binario Go compilado estáticamente funciona en cualquier Linux sin dependencias. Fácil de distribuir en la botnet.
Qué añadir a tu blocklist
Las IPs observadas en esta campaña durante el periodo de análisis. Cualquier blocklist basada en IPs tiene vida corta — los atacantes rotan infraestructura — pero puede comprar tiempo.
Datos recopilados con fines de investigación en ciberseguridad. Toda la información procede de actividad no solicitada registrada en infraestructura propia.
honeypot CipherSentry · 2026-06-11 a 2026-06-13