
Ingeniería inversa de Rusty Stealer: un RAT basado en Rust que incluye keylogging avanzado, transmisión de pantalla en vivo y una agresiva evasión de defensas (matando Windows Defender y secuestrando servicios) para mantener la persistencia.
La ingeniería inversa inicial de la muestra de Rusty Stealer en Ghidra revela un módulo keylogger dedicado compilado en Rust. La vista descompilada muestra claramente cómo el malware se engancha a la entrada del usuario resolviendo códigos de tecla y asignándolos a acciones específicas. Esto confirma que el stealer registra activamente las pulsaciones de teclas para recolectar credenciales, chats y datos sensibles del usuario.
Lógica del keylogger (vista pseudo-C): FUN_140020ffe(&Var29, pHVar44, "key_press", 9) – resuelve dinámicamente la cadena de evento "key_press". Comprobaciones de condición para teclas específicas: "Enter", "Escape", "Esc", "Tab", "Backspace", "Back". *HKEY__ pHVar37 = ... – resolución del handle del registro (potencialmente leyendo la distribución del teclado o la persistencia) Vista de ensamblador (desensamblado): LEA R8, [local_4a8] / MOV qword ptr [R8], RAX – carga la estructura del evento de tecla en memoria. CALL FUN_140020ffe – función principal de procesamiento de teclas. JZ LAB_14000f309 – saltos condicionales basados en códigos de tecla (comprobando teclas específicas).
Captura activa de pulsaciones de teclas: Las comprobaciones explícitas de "Enter", "Tab", "Backspace", etc., demuestran que el malware registra cada pulsación de tecla, incluidas las teclas especiales, para reconstruir contraseñas y mensajes. Interacción con el registro: El handle HKEY__ sugiere que el keylogger podría estar leyendo configuraciones del sistema o almacenando sus registros en el registro de Windows. Recolección de credenciales: Registrar eventos "key_press" junto con los títulos de las ventanas (visto en etapas posteriores) permite al atacante asignar las pulsaciones de teclas a aplicaciones específicas (p. ej., navegadores, aplicaciones bancarias).

La segunda vista de descompilación de Ghidra de Rusty Stealer revela una capacidad que lo lleva más allá de un info-stealer estándar al territorio de RAT (Remote Access Trojan, troyano de acceso remoto). El malware incluye rutinas para la captura de pantalla y el streaming en vivo, lo que permite al atacante monitorear visualmente el escritorio de la víctima en tiempo real, además de robar archivos y pulsaciones de teclas.
Lógica de captura de pantalla: FUN_140020ffe(..., "screen_stream", 0xd) – inicializa explícitamente el módulo de streaming de pantalla. FUN_14000d9eb7("fps", 3, ...) – establece una tasa de fotogramas (FPS) para el stream en vivo, probablemente para equilibrar el uso de CPU y la calidad de vídeo. FUN_14000c87a(..., "done", 4) / FUN_14000c87a(..., "streaming", 9) – marcadores de estado para las operaciones de inicio/parada del streaming. Gestión de memoria y búfer: if (uVar69 < 5) { uVar47 = uVar69; } – lógica interna de almacenamiento en búfer para los fotogramas de pantalla. Referencias de ensamblador (referencias cruzadas): LEA R8, [s_screen_stream_14001592a] – carga la cadena "screen_stream" en memoria para su comparación. CALL FUN_140020ffe – manejador principal de la lógica de streaming.
Vigilancia en vivo: Las cadenas "screen_stream" y "fps" demuestran que el malware puede transmitir en vivo la pantalla de la víctima. Esto es un sello distintivo de los RAT completos (como njRAT o Quasar), no solo de simples stealers. Exfiltración de datos (visual): Mientras que los keyloggers capturan texto, el streaming de pantalla captura visualmente sesiones bancarias, carteras de criptomonedas y mensajes privados, eludiendo por completo el cifrado. Optimización de recursos: Establecer un FPS específico (p. ej., 3 FPS) significa que el malware está diseñado para ejecutarse silenciosamente en segundo plano sin alertar al usuario mediante un alto uso de CPU.

La tercera vista descompilada de Rusty Stealer expone rutinas altamente agresivas de evasión de defensas y secuestro de sesiones. El malware incluye funciones específicas para matar Windows Defender y secuestrar sesiones activas de red/streaming (probablemente para interceptar tráfico o interrumpir la monitorización de seguridad). Esto confirma que Rusty Stealer está diseñado no solo para robar datos, sino para cegar activamente las herramientas de seguridad.
Windows Defender eliminado: FUN_140020ffe(..., "kill_defender", 0xd) – resuelve dinámicamente la cadena para terminar los procesos de Defender. FUN_14001add55() – probablemente la rutina de ejecución que detiene por la fuerza los servicios o procesos de Defender. Secuestro de flujos: FUN_140020ffe(..., "hijack_stream", 0xc) – resuelve la lógica para secuestrar flujos activos (tráfico de red o uso compartido de pantalla). Manipulación y ejecución de memoria: MOVUPS xmmword ptr [R12] / MOVUPS xmmword ptr [RDX + local_550] – instrucciones SIMD utilizadas para la copia rápida de memoria (probablemente preparando shellcode o búferes de flujo). CALL FUN_14000d55() – ejecuta la rutina de secuestro o eliminación.
Cegar al Defender: kill_defender demuestra que el stealer ataca activamente la seguridad integrada de Windows. Si tiene éxito, desactiva la protección en tiempo real, permitiendo que el resto del malware (keylogger, transmisor de pantalla) opere sin interferencias. Secuestro de sesión: hijack_stream sugiere que el malware puede interceptar o tomar el control de flujos de red activos. Esto podría usarse para robar cookies de sesión en vivo, interceptar transacciones bancarias o interrumpir herramientas de administración remota. Evasión por diseño: la presencia de error_pinned muestra que el malware anticipa defensas en las que los procesos críticos no pueden terminarse. Probablemente reintenta o cambia de técnica.

La cuarta vista descompilada de Rusty Stealer expone su módulo de reconocimiento del sistema. Antes de robar datos o exfiltrar archivos, el malware recopila información detallada sobre la máquina de la víctima, incluidos el nombre de host, el nombre de usuario, la versión del sistema operativo y las direcciones IP locales/externas. Es probable que estos datos de perfilado se envíen al servidor C2 para categorizar a la víctima y adaptar la siguiente etapa del ataque.
Cadenas de perfilado del sistema:
"hostname" – recupera el nombre del equipo de la víctima. "username" – recupera la cuenta de usuario con sesión iniciada. "os_ver" – captura la versión y compilación exactas de Windows. "local_ip" – identifica la dirección IP de la red interna de la víctima. "external_ip" – resuelve la dirección IP pública (probablemente mediante una API externa). "stream_id" – genera un identificador único para la sesión de transmisión de pantalla.
Lógica descompilada: