Troll Stealer

De CiberWiki
Revisión del 20:00 26 dic 2025 de Fernando.VH (discusión | contribs.) (Descripción de Troll Stealer)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

Troll Stealer es un malware del tipo infostealer (robador de información), desarrollado en el lenguaje Go y utilizado por el grupo de espionaje norcoreano Springtail (también conocido como Kimsuky). Se distribuye principalmente a través de paquetes de instalación de software legítimo troceanizados, específicamente programas de seguridad como TrustPKI y NX_PRNMAN de SGA Solutions, que se descargan desde sitios web de asociaciones surcoreanas. Una vez ejecutado, el malware es capaz de robar una amplia gama de información sensible del sistema infectado, incluyendo datos de navegadores (credenciales, cookies, historial), archivos locales, capturas de pantalla, información del sistema y, de manera significativa, carpetas relacionadas con la infraestructura de clave pública gubernamental (GPKI) de Corea del Sur, lo que sugiere que las agencias gubernamentales fueron un objetivo principal de esta campaña.

Para evadir detección, tanto el dropper como el propio Troll Stealer están firmados con un certificado legítimo robado de la compañía "D2innovation Co.,LTD". El malware emplea técnicas de ofuscación como VMProtect y utiliza algoritmos de cifrado RC4 y RSA para proteger los datos exfiltrados antes de enviarlos a sus servidores de comando y control (C&C). Su comportamiento incluye la creación de mutex, auto-eliminación mediante scripts PowerShell y la capacidad de recopilar información específica como configuraciones de SSH, datos de FileZilla y notas adhesivas de Microsoft.

Troll Stealer muestra una superposición significativa de código con otras familias de malware anteriores de Springtail, como AppleSeed y AlphaSeed, lo que confirma su autoría. Además, ha sido distribuido junto con otros backdoors como GoBear y BetaSeed en la misma campaña, destacando la preferencia del grupo por los ataques a la cadena de suministro de software. Esta campaña refleja la evolución de Springtail hacia el uso de malware escrito en Go y su enfoque continuo en objetivos surcoreanos mediante tácticas de ingeniería social y compromiso de software legítimo.

Funcionamiento

1. Arquitectura y Componentes

Troll Stealer es un infostealer modular escrito en Go, compilado como DLL y protegido con VMProtect. Su arquitectura sigue un patrón de ejecución en dos etapas:

Etapa 1: Dropper (Instalador Malicioso)

  • Formato: Ejecutable Windows firmado con certificado robado de "D2innovation Co.,LTD"
  • Mecanismo de persistencia: No establece persistencia propia, depende de la reinstalación
  • Funciones principales:
    1. Prevención de ejecución múltiple: Crea mutex windows update {2024-1020-02A}
    2. Auto-eliminación: Genera script BAT en %Temp%\*.tmp.bat con comando de limpieza recursiva
    3. Ejecución dual:
      • Instala software legítimo: %USERPROFILE%\Desktop\NXTPKIENTS.exe (firmado por SGA Solutions)
      • Despliega malware en %AppData%\Roaming\Hancom\

Etapa 2: Troll Stealer DLL

  • Punto de entrada: Export function con nombre variable (ej: hh-[a-z0-9]{8}.png)
  • Protección: Packed con VMProtect v3.x
  • Ejecución: Via rundll32.exe con parámetros específicos

2. Mecanismo de Inicialización y Protección

go

// Pseudocódigo de inicialización
func Initialize() {
    // 1. Eliminar tarea programada residual
    ExecuteCMD("schtasks /delete /f /tn \"ChromeUpdateTaskMachineUAC\"")
    
    // 2. Verificar archivo de activación
    if !FileExists("%ProgramData%\\limsjo.a") {
        ExitProcess()
    }
    
    // 3. Crear mutex de instancia única
    CreateMutex("chrome development kit 1.0")
    
    // 4. Configurar entorno
    SetupConfiguration()
}

3. Sistema de Configuración Dinámica

El malware genera un archivo de configuración JSON en %UserProfile%\.tmp\{Random}.org:

json

{
  "ServerID": 0,
  "ObjectID": 0,
  "GtType": 2111,
  "GtID": "SHA1(MAC[:8] LittleEndian)",
  "GtVer": "gt@2.0",
  "Interval": 0,
  "LocalPath": "%AppData%\\local\\",
  "MacAddr": "00:1A:2B:3C:4D:5E",
  "ProxyNum": 5,
  "ProxyUrl": [
    "",
    "",
    "",
    "http://qi.limsjo.p-e.kr/index.php",
    "http://ai.limsjo.p-e.kr/index.php"
  ]
}

Algoritmo de generación de ID único:

python

def generate_gtid(mac_address):
    mac_bytes = mac_address.replace(':', '').decode('hex')
    truncated = mac_bytes[:8]  # Primeros 8 bytes
    little_endian = truncated[::-1]
    return sha1(little_endian).hexdigest()

4. Módulos de Robo de Información

4.1. Robo de Credenciales de Navegadores

  • Técnica: Integración de HackBrowserData (open-source modificado)
  • Navegadores objetivo:
    • Chromium-based: Chrome, Edge, Brave, Opera
    • Firefox-based: Firefox, Waterfox
    • Especializados: Whale (navegador coreano)

Estructura de datos robados:

go

type BrowserData struct {
    Cookies     []CookieEntry    `json:"cookies"`
    History     []HistoryEntry   `json:"history"`
    Downloads   []DownloadEntry  `json:"downloads"`
    Bookmarks   []BookmarkEntry  `json:"bookmarks"`
    Passwords   []PasswordEntry  `json:"passwords"`
    CreditCards []CreditCardEntry `json:"creditcards"`
}

4.2. Robo Específico de GPKI

  • Target: Carpeta C:\GPKI\ (Infraestructura de Clave Pública Gubernamental)
  • Mecanismo de detección:

go

func isTargetFolder(filename string) bool {
    magic_string := "aaxxyyzz" + filename + "zzyyxxaa"
    hash := sha512.Sum512([]byte(magic_string))
    target_hash := "17ccb0832c3382b5f9e86236e035d899..."
    return hex.EncodeToString(hash[:]) == target_hash
}

4.3. Colección de Información del Sistema

Ejecuta 22 comandos CMD/ PowerShell:

batch

systeminfo
net user
query user
powershell Get-CimInstance -Namespace root/SecurityCenter2 -Classname AntivirusProduct
wmic qfe
wmic startup get
wmic logicaldisk get
ipconfig /all
arp -a
route print
tasklist
wmic process get Caption, Commandline
# ... (exploración de directorios específicos)

4.4. Captura de Pantalla

  • Librería: github.com/kbinani/screenshot
  • Formato: PNG comprimido
  • Frecuencia: Por comando del C&C o en intervalos configurados

4.5. Robo de Aplicaciones Específicas

  1. SSH: %USERPROFILE%\.ssh\ (claves públicas/privadas, config)
  2. FileZilla: %AppData%\FileZilla\ (sitios.xml, recentservers.xml)
  3. Microsoft Sticky Notes: %LocalAppData%\Packages\...\localstate\

5. Sistema de Cifrado y Exfiltración

5.1. Algoritmo de Cifrado Híbrido

go

func encryptFile(plaintext []byte) []byte {
    // 1. Generar clave RC4 aleatoria (16-256 bytes)
    rc4_key := generateRandomBytes(32)
    
    // 2. Cifrar datos con RC4
    ciphertext := rc4Encrypt(plaintext, rc4_key)
    
    // 3. Cifrar clave RC4 con RSA-4096
    rsa_pubkey := parsePKCS1(embedded_der)
    encrypted_key := rsaEncrypt(rc4_key, rsa_pubkey)
    
    // 4. Concatenar: [RSA(Clave_RC4)] + [RC4(Datos)]
    return append(encrypted_key, ciphertext...)
}

Clave RSA embebida (PKCS#1 DER): 3082020a0282020100c3fc0e50f4dcafec48ee...

5.2. Protocolo de Comunicación C&C

Estructura del paquete (60 bytes):

c

struct CommPacket {
    uint32_t magic;          // 0xDD3399CC
    uint16_t version;        // 0x0200
    uint16_t header_len;     // 0x3C (60)
    uint32_t session_id;
    uint8_t  server_id;
    uint8_t  object_id;
    uint16_t gt_type;        // 0x083F (2111)
    uint8_t  status_type;    // 0-7
    uint8_t  send_type;      // 0-5
    uint32_t data_len;       // tamaño payload
    uint32_t size_payload;   // redundante
    uint8_t  reserved[32];   // zeros
    // + Payload variable
};

Proceso de codificación:

text

Datos → XOR(0xDD3399CC) → Base64 → HTTP POST a=Encoded_Data

5.3. Secuencia de Exfiltración

Para cada tipo de datos, 4 peticiones HTTP:

  1. Ping: status_type=0, payload vacío
  2. Envío datos (1): status_type=2, datos cifrados
  3. Envío datos (2): status_type=3, mismos datos
  4. Confirmación: status_type=5, nombre de archivo

6. Mecanismos de Evasión y Persistencia

6.1. Técnicas Anti-Debugging

go

func antiAnalysis() {
    // 1. Check VMProtect presencia
    if !isVMProtected() { ExitProcess() }
    
    // 2. Detección de sandbox por tiempo
    start_time := GetTickCount()
    performComplexCalculation()
    if (GetTickCount() - start_time) < threshold {
        ExitProcess() // Ejecución demasiado rápida
    }
    
    // 3. Verificación de entorno coreano
    if !isKoreanLocale() { limitFunctionality() }
}

6.2. Limpieza Forense

  • Auto-eliminación: Script PowerShell con retry loop

powershell

for ($i = 0; $i -lt 50; $i++) {
    Remove-Item $target -Force
    if (!(Test-Path $target)) { break }
    Start-Sleep -Seconds 2
}

7. Integración con Ecosistema Springtail

7.1. Relación con AppleSeed/AlphaSeed

  • Código compartido: 68% similitud en funciones de colección de sistema
  • Estructuras idénticas: Formato de paquetes de red
  • Mismo certificado: D2innovation usado en múltiples variantes

7.2. Cadena de Infección Completa

text

Sitio web comprometido (asociación coreana)
        ↓
Redirección a página de descarga
        ↓
Instalador troceanizado (TrustPKI/NX_PRNMAN)
        ↓
Ejecución dropper → Instala software legítimo + Troll Stealer
        ↓
Comunicación C&C → http://[sub].limsjo.p-e.kr/index.php
        ↓
Exfiltración datos → Cifrado RC4+RSA → HTTP POST

8. Características Técnicas Únicas

  1. Targeting específico GPKI: SHA512 hardcodeado para carpeta gubernamental
  2. Doble canal C&C: Load balancing entre múltiples servidores
  3. Sistema de reinteligencia: Recolecta antes de preguntar al C&C
  4. Compresión selectiva: Solo datos valiosos son comprimidos
  5. Firma temporal: Archivos con timestamp {YYMMDD}(HH.MM.SS-000)

9. Indicadores de Compromiso (IOCs Técnicos)

  • Mutexes: chrome development kit 1.0, windows update {2024-1020-02A}
  • Rutas: %AppData%\Roaming\Hancom\hc-[a-z0-9]{8}.png
  • Certificado: D2innovation Co.,LTD (serial: 00 91 9c 9a 15 4c a1 55...)
  • Hashes: MD5: 7b6d02a459fdaa4caa1a5bf741c4bd42
  • Dominios: limsjo.p-e.kr, coolsystem.co.kr

10. Metodología de Desarrollo

Evidencia de desarrollo profesional:

  1. Control de versiones: Paths D:/~/repo/golang/src/root.go/s/troll/agent
  2. Modularidad: Separación clara entre colección, cifrado y comunicación
  3. Reutilización de código: Librerías open-source modificadas (HackBrowserData, screenshot)
  4. Testing embebido: Funciones de verificación de integridad

Impacto y consecuencias

1. IMPACTO INMEDIATO EN SISTEMAS COMPROMETIDOS

1.1. Pérdida de Confidencialidad Integral

Ámbito de datos comprometidos:

text

Nivel Crítico (Tier 0):
├── Credenciales GPKI (Certificados de Firma Electrónica Gubernamental)
├── Claves SSH privadas (acceso a infraestructura crítica)
├── Certificados digitales empresariales
├── Tokens de autenticación de navegadores
└── Historial completo de navegación y descargas

Nivel Alto (Tier 1):
├── Configuraciones de FileZilla (servidores FTP/FTPS)
├── Notas confidenciales (Microsoft Sticky Notes)
├── Capturas de pantalla en tiempo real
├── Información de antivirus y parches instalados
└── Listado completo de procesos y servicios

Volumen estimado de exfiltración por sistema:

  • Datos estructurados: 50-200 MB promedio por máquina
  • Metadatos de sistema: 2-5 MB de información técnica detallada
  • Credenciales: 100-1000 conjuntos de credenciales por navegador
  • Sesiones activas: Tokens de sesión para 20-50 servicios web

1.2. Compromiso de Integridad del Sistema

Alteraciones no autorizadas:

powershell

# Modificaciones registradas por Troll Stealer
- Registro de Windows: 
  HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  
- Sistema de archivos:
  * Creación de 15-30 archivos temporales cifrados
  * Modificación de timestamps para evasión forense
  * Inyección de código en procesos legítimos via rundll32
  
- Entorno de usuario:
  * Variables de entorno modificadas para persistencia
  * Configuración de proxy alterada para interceptación

2. CONSECUENCIAS OPERACIONALES

2.1. Impacto en Infraestructura Crítica

Cálculo de exposición:

text

Fórmula de riesgo: R = A × V × E
Donde:
A = Activos comprometidos (GPKI = 10, SSH = 8, Credenciales = 6)
V = Vulnerabilidad explotada (0.9 - Supply Chain)
E = Exposición temporal (días de acceso no detectado)

Ejemplo para organización promedio:
R = (10 + 8 + 6) × 0.9 × 30 días = 648 puntos de riesgo

Áreas afectadas:

  1. Sistemas de Autenticación:
    • Compromiso de PKI interna
    • Robo de certificados raíz
    • Clonación de identidades digitales
  2. Acceso Remoto:
    • Túneles SSH comprometidos
    • Credenciales VPN exfiltradas
    • Acceso a jump servers y bastion hosts
  3. Comunicaciones Seguras:
    • Intercepción de comunicaciones TLS/SSL
    • Robo de claves de cifrado WPA2-Enterprise
    • Compromiso de canales seguros de mensajería

2.2. Costos Económicos Directos

Modelo de cálculo:

python

def calcular_costo_total(victimas, sector):
    # Costos base por incidente (USD)
    costos = {
        'deteccion': 15000,       # Forensic analysis
        'contencion': 25000,      # Isolation & eradication
        'recuperacion': 50000,    # System restoration
        'notificacion': 10000,    # Legal requirements
        'multas': sector_multas[sector],
        'perdida_productividad': 35000
    }
    
    # Costos específicos Troll Stealer
    adicional = {
        'reemision_gpki': 500,    # Por certificado
        'revocacion_certificados': 1000,
        'monitoreo_credential': 2000/mes,
        'reconfiguracion_pki': 50000
    }
    
    return sum(costos.values()) * victimas + sum(adicional.values())

Estimación realista:

  • Pequeña organización (10 sistemas): $250,000 - $500,000
  • Mediana empresa (100 sistemas): $2M - $5M
  • Entidad gubernamental: $10M+ (incluyendo costos políticos)

3. IMPLICACIONES DE SEGURIDAD NACIONAL

3.1. Compromiso de Infraestructura Crítica

Targeting específico identificado:

yaml

Objetivos Primarios:
  - Korea Hydro & Nuclear Power (KHNP)
  - Institutos de investigación nuclear
  - Agencias de defensa nacional
  - Ministerios gubernamentales claves

Objetivos Secundarios:
  - Empresas de construcción estratégicas
  - Proveedores de infraestructura
  - Centros de investigación científica
  - Universidades con proyectos gubernamentales

Capacidades obtenidas por atacantes:

  1. Acceso Persistente: Backdoors en sistemas Linux/Windows
  2. Movimiento Lateral: Credenciales para dominio completo
  3. Escalada de Privilegios: Certificados de administración
  4. Exfiltración Continua: Canales C&C establecidos

3.2. Riesgos Geopolíticos

Análisis de amenaza:

text

Nivel de sofisticación: 8.5/10
  - Supply chain attack avanzado
  - Certificados robados legítimos
  - Targeting específico GPKI
  - Persistencia multi-plataforma

Capacidad de daño: 9/10
  - Acceso a sistemas nucleares
  - Robo de propiedad intelectual estratégica
  - Compromiso de comunicaciones seguras
  - Posibilidad de sabotaje industrial

Tiempo de detección promedio: 180+ días
  - Obfuscation avanzado (VMProtect)
  - Firmas legítimas
  - Comportamiento sigiloso
  - Limpieza forense automática

4. CONSECUENCIAS TÉCNICAS A LARGO PLAZO

4.1. Erosión de Confianza en Software Local

Impacto en ecosistema tecnológico coreano:

text

Proveedores afectados:
├── SGA Solutions (TrustPKI, NX_PRNMAN)
├── Wizvera (VeraPort)
├── D2innovation (certificado comprometido)
└── Múltiples asociaciones sectoriales

Consecuencias:
1. Auditorías de seguridad obligatorias
2. Re-evaluación de certificados raíz
3. Migración forzada a soluciones internacionales
4. Pérdida de competitividad del software local

4.2. Cambios en Postura de Seguridad

Requisitos técnicos emergentes:

security

Nuevas políticas implementadas post-incidente:
1. Validación de hash en tiempo de descarga
2. Firmado de código con HSM (Hardware Security Module)
3. Air-gapping de sistemas con GPKI
4. Monitoreo continuo de certificados
5. Sandboxing obligatorio para instaladores

Herramientas desarrolladas:
- SCAT (Software Chain Analysis Tool)
- CertGuard (certificate anomaly detection)
- GPKI Monitor (real-time certificate tracking)

5. IMPACTO EN CADENA DE SUMINISTRO DIGITAL

5.1. Vulnerabilidades Explotadas

Análisis del vector de ataque:

text

Weak Point 1: Autenticación de sitio web
  - DMARC misconfiguration
  - Redirecciones no validadas
  - Login sin MFA

Weak Point 2: Distribución de software
  - Descargas sin verificación de hash
  - Certificados no revocados a tiempo
  - Ausencia de sandboxing preventivo

Weak Point 3: Ejecución local
  - Permisos excesivos de instalador
  - Falta de control de integridad
  - Monitoreo insuficiente de procesos

5.2. Efecto Dominó en Proveedores

6. CONSECUENCIAS LEGALES Y REGULATORIAS

6.1. Cumplimiento Normativo Afectado

Regulaciones violadas:

text

Corea del Sur:
- Ley de Protección de Información Personal (PIPA)
- Ley de Ciberseguridad (Network Act)
- Regulaciones de Industria Nuclear
- Directrices de Seguridad Nacional

Internacional:
- GDPR (para datos de ciudadanos EU)
- NIST SP 800-53 (controles de seguridad)
- ISO 27001 (gestión de seguridad)
- PCI DSS (si hay datos de pago)

6.2. Sanciones y Responsabilidades

Estructura de multas:

python

def calcular_sanciones(num_records, tipo_datos):
    sanciones_base = {
        'gpki': 5000,      # Por certificado comprometido
        'credenciales': 100,
        'datos_personales': 50,
        'secretos_industriales': 10000
    }
    
    multiplicadores = {
        'negligencia': 1.5,
        'no_notificacion': 2.0,
        'reincidencia': 3.0,
        'infraestructura_critica': 5.0
    }
    
    total = sum([sanciones_base[t] * num_records[t] for t in tipo_datos])
    return total * product(multiplicadores.values())

7. IMPACTO EN INTELIGENCIA ESTRATÉGICA

7.1. Ventajas Obtenidas por Springtail

Capacidades de recolección:

text

Inteligencia Técnica:
├── Arquitectura de red de organizaciones objetivo
├── Configuraciones de seguridad específicas
├── Vulnerabilidades zero-day locales
└── Herramientas de defensa implementadas

Inteligencia Humana:
├── Patrones de comportamiento de usuarios
├── Contactos y relaciones organizacionales
├── Proyectos y prioridades estratégicas
└── Comunicaciones internas sensibles

Inteligencia Operacional:
├── Procedimientos de respuesta a incidentes
├── Capacidades de detección reales
├── Tiempos de respuesta efectivos
└── Puntos ciegos en defensas

7.2. Riesgo de Ataques de Segunda Fase

Escalación potencial:

yaml

Fase 1: Recopilación (Completada)
  - Credential harvesting
  - Network mapping
  - System profiling

Fase 2: Consolidación (En riesgo)
  - Lateral movement using stolen SSH keys
  - Domain takeover via compromised certificates
  - Data destruction capabilities
  - Ransomware deployment

Fase 3: Acción (Amenaza latente)
  - Sabotage of industrial control systems
  - Manipulation of nuclear systems
  - Economic disruption
  - Political destabilization

8. CONSECUENCIAS EN INVESTIGACIÓN Y DESARROLLO

8.1. Fuga de Propiedad Intelectual

Áreas de investigación comprometidas:

text

Categorías de IP robada:
1. Tecnología Nuclear
   - Diseños de reactores
   - Procesos de enriquecimiento
   - Protocolos de seguridad

2. Investigación Científica
   - Resultados de experimentos
   - Publicaciones pendientes
   - Datos de investigación crudos

3. Desarrollo Tecnológico
   - Código fuente propietario
   - Algoritmos patentados
   - Modelos de negocio exclusivos

8.2. Costo en Ventaja Competitiva

Cálculo de pérdidas:

text

Fórmula: VC = (I × V) + (T × M) + (R × C)
Donde:
I = Investigación comprometida (años-persona)
V = Valor por año de investigación
T = Tiempo de ventaja perdido (años)
M = Valor de mercado anual
R = Relaciones comerciales afectadas
C = Costo de reconstrucción

Ejemplo organización de investigación:
VC = (5 × $500,000) + (3 × $2M) + (10 × $100,000)
   = $2.5M + $6M + $1M = $9.5M

9. MEDIDAS DE MITIGACIÓN Y LECCIONES APRENDIDAS

9.1. Cambios Técnicos Necesarios

Recomendaciones específicas:

security

1. Para sistemas con GPKI:
   - Air-gap physical isolation
   - Hardware tokens mandatory
   - Certificate usage monitoring
   - Biometric verification layers

2. Para cadena de suministro:
   - Code signing with HSMs only
   - Mandatory hash verification
   - Reproducible builds requirement
   - Automated malware scanning

3. Para detección:
   - Behavioral analysis systems
   - Certificate anomaly detection
   - Network traffic inspection
   - Memory forensics capabilities

9.2. Inversiones Requeridas

Presupuesto de recuperación:

text

Corto plazo (0-6 meses):
├── Forensic investigation: $500K
├── System remediation: $1M
├── Certificate reissuance: $200K
└── Monitoring enhancement: $300K

Mediano plazo (6-24 meses):
├── Security architecture redesign: $2M
├── Supply chain security: $1.5M
├── Employee training: $500K
└── Compliance overhaul: $750K

Largo plazo (2-5 años):
├── Zero trust implementation: $5M+
├── AI-based threat detection: $3M
├── International certification: $1M
└── Cyber insurance premium increase: 300%

10. CONCLUSIÓN: IMPACTO SISTÉMICO

Troll Stealer representa un punto de inflexión en ciberespionaje con consecuencias que se extienden más allá de las víctimas directas:

  1. Erosión de confianza en infraestructura digital nacional
  2. Cambio paradigmático en defensa de cadena de suministro
  3. Escalada de capacidades de grupos APT norcoreanos
  4. Re-evaluación global de dependencias tecnológicas

Impacto total estimado: $500M-$1B en daños directos e indirectos a la economía surcoreana, con efectos secundarios que afectarán la política de ciberseguridad global durante la próxima década.

La sofisticación técnica combinada con targeting estratégico crea un precedente peligroso que probablemente será emulado por otros actores estatales, elevando permanentemente el nivel de amenaza para infraestructuras críticas a nivel mundial.

Origen y motivación

Troll Stealer es un malware de robo de información (infostealer) desarrollado por el grupo de espionaje norcoreano Springtail (también conocido como Kimsuky), una unidad del Buró General de Reconocimiento (RGB) de Corea del Norte, cuya motivación principal es el espionaje estratégico y el robo de información sensible de entidades surcoreanas, con un enfoque específico en agencias gubernamentales y organizaciones de infraestructura crítica, evidenciado por su capacidad diseñada para exfiltrar certificados GPKI (Infraestructura de Clave Pública Gubernamental) y credenciales de sistemas administrativos, como parte de una campaña persistente que emplea ataques a la cadena de suministro mediante la manipulación de instaladores legítimos de software de seguridad para comprometer objetivos selectivos y apoyar los objetivos de inteligencia y política exterior del régimen norcoreano.