El "súper ofuscador" no bastó: cómo huellas rusas en el código delataron a hackers chinos

El "súper ofuscador" no bastó: cómo huellas rusas en el código delataron a hackers chinos

Las herramientas PassiveNeuron dejaron más pistas de las que sus creadores pretendían.

image

Durante los últimos dos años, los especialistas de Kaspersky Lab observaron la actividad de una campaña de espionaje poco conocida denominada PassiveNeuron. Las primeras infecciones de servidores de organizaciones gubernamentales se registraron ya en 2024; sin embargo, durante mucho tiempo permanecieron poco claros tanto los mecanismos de la intrusión inicial como la pertenencia de los componentes maliciosos utilizados.

Un nuevo repunte de actividad se detectó en diciembre de 2024 y se prolongó hasta agosto de 2025, afectando a entidades gubernamentales, financieras e industriales en Asia, África y América Latina. Los casos nuevos permitieron a los investigadores subsanar lagunas en el panorama técnico del ataque y acercarse a una posible identificación de su origen.

La gran mayoría de las máquinas comprometidas ejecutaban Windows Server. En uno de los episodios, los atacantes obtuvieron acceso remoto aprovechando vulnerabilidades en Microsoft SQL. Aunque no se pudo establecer el método exacto de penetración, se sabe que este tipo de servidores con frecuencia son comprometidos por fallos en SQL, inyecciones SQL en aplicaciones o por adivinación de la contraseña del administrador de la base de datos. Tras obtener la capacidad de ejecutar comandos de forma remota, los atacantes intentaron desplegar un web shell ASPX, pero la solución de seguridad instalada en el servidor objetivo bloqueó ese intento.

Para eludir la protección, los atacantes cambiaron la codificación del web shell de Base64 a hexadecimal, sustituyeron PowerShell por VBScript y escribieron el script línea por línea, pero todas esas variantes también fueron neutralizadas. Entonces pasaron a un esquema de carga de módulos maliciosos más complejo.

En distintas fases del ataque se emplearon tres tipos de componentes maliciosos: la plataforma modular propia Neursite en C++, el cargador para la plataforma .NET NeuralExecutor y el conocido framework Cobalt Strike. En todos los casos se observó una cadena de varias bibliotecas DLL cargadas de forma secuencial.

La primera etapa consistió en colocar una biblioteca en el directorio del sistema de Windows; su nombre imitaba componentes legítimos, lo que garantizaba su ejecución automática gracias a la técnica conocida como Phantom DLL Hijacking. El tamaño de los archivos se infló artificialmente con datos basura, lo que dificultaba su detección.

Al inicio, la DLL verificaba las direcciones MAC de todos los adaptadores de red y continuaba su ejecución solo si coincidían con un valor codificado de forma rígida, un método que evita que el malware funcione fuera de la máquina objetivo. A continuación se activaban de forma secuencial los cargadores de segundo y tercer nivel, incluyendo el descifrado del contenido y el lanzamiento de shellcode en procesos separados como WmiPrvSE.exe. En la fase final, el módulo ejecutable principal se cargaba en la memoria en un formato no estándar.

La herramienta más potente entre las empleadas resultó ser Neursite. Su configuración permitía un ajuste detallado de la comunicación con servidores C2: lista de direcciones, proxy, cabeceras, intervalos temporales e incluso horarios de actividad. Soportaba TCP, SSL, HTTP y HTTPS, además de la opción de esperar una conexión entrante. Neursite permitía gestionar archivos, ejecutar comandos, trabajar con sockets y usar el sistema comprometido como proxy para moverse dentro de la red.

El implante NeuralExecutor, a su vez, era un cargador .NET con el ofuscador de código abierto ConfuserEx, capaz de establecer conexiones por TCP, WebSocket, canales con nombre y HTTP(S). Su función era recibir y ejecutar componentes .NET adicionales descargados desde el servidor de control.

Los intentos de atribuir PassiveNeuron a un grupo concreto se complican por la presencia de señuelos. En versiones tempranas de NeuralExecutor hubo cadenas en ruso con la frase «Súper ofuscador», pero luego desaparecieron. En las variantes más recientes se aplicó el método Dead Drop Resolver: carga de la configuración desde GitHub usando cadenas separadoras únicas y su posterior descifrado mediante AES. Este enfoque se había observado antes en campañas de EastWind vinculadas a APT31 y APT27.

Un argumento adicional a favor de una posible atribución china fue el hallazgo en uno de los servidores atacados de la biblioteca maliciosa imjp14k.dll con una ruta de compilación que coincidía con artefactos descritos en los informes de Cisco Talos sobre la actividad de APT41. El comportamiento de esa DLL también coincidía con las características señaladas en esos informes.

Aunque la determinación definitiva del grupo detrás de PassiveNeuron resulta difícil, el conjunto de técnicas y los recursos técnicos recurrentes empleados durante el ataque permiten, con cautela, suponer la participación de operadores de habla china. La campaña se orienta exclusivamente a la infraestructura de servidores, un punto de entrada vulnerable para operaciones APT, especialmente cuando existen inyecciones SQL y una protección débil frente a componentes web shell.

Las huellas digitales son tu debilidad, y los hackers lo saben

¡Suscríbete y descubre cómo borrarlas!