Detectando Nimbus Manticore y sus cadenas de infección por sideloading
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Nimbus Manticore, también rastreado como UNC1549, llevó a cabo una campaña de phishing dirigida que utilizó portales de reclutamiento falsos para entregar una cadena de malware .NET de múltiples etapas. El ataque abusó de componentes legítimos de Microsoft Visual Studio junto con el secuestro de AppDomain para cargar un DLL personalizado, el cual desplegó un segundo DLL y creó persistencia a través de una tarea programada. La infraestructura de comando y control se alojó en dominios basados en Azure. La campaña tuvo como objetivo principal empresas aeroespaciales y de defensa en el Medio Oriente y Europa.
Investigación
Los investigadores reconstruyeron toda la cadena de infección, comenzando con el señuelo de LinkedIn y continuando a través del archivo ZIP, el modificado setup.exe.config archivo y la fase inicial cifrada. Su análisis reveló abuso de un ServiceHub.VSDetouredHost.exerenombrado, el TOTPGuard.dll cargador, un encabezado PE cifrado con AES, y una tarea programada activada por inicio de sesión llamada BackupCheck. Los indicadores de red también apuntaron a varios dominios alojados en Azure utilizados para comunicaciones de comando y control.
Mitigación
Las organizaciones deben capacitar a los empleados para detectar la ingeniería social con temática de reclutamiento, bloquear o monitorear de cerca los dominios recién registrados, y aplicar AppLocker o controles equivalentes en directorios con escritura de usuario. Los defensores también deben vigilar las tareas programadas con el nombre BackupCheck o ejecuciones que utilicen el argumento doit . También se recomienda monitorear el comportamiento de secuestro de AppDomain en aplicaciones .NET y el tráfico sospechoso a dominios de comando y control alojados en Azure.
Respuesta
Si se detecta actividad relacionada, aísle el punto final afectado, recoja los binarios maliciosos y la definición de tareas programadas, y bloquee los dominios de Azure asociados, así como el portal de reclutamiento falso. Los investigadores deben realizar una revisión forense del AppData2FAGuard carpeta, eliminar la tarea de persistencia y buscar actividad similar en otros sistemas utilizando las mismas firmas YARA. La lógica de detección debe actualizarse con los nuevos indicadores identificados.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ccffcc classDef process fill:#ffdddd %% Nodes action_phishing[«<b>Action</b> – <b>T1566.002 Spearphishing Link</b><br/>Las víctimas reciben mensajes de LinkedIn que suplantan a un reclutador y contienen un enlace malicioso a un portal de empleo falso.»] class action_phishing action action_delivery[«<b>Action</b> – Distribución mediante ZIP malicioso<br/>El portal falso proporciona un archivo ZIP que contiene un binario de Microsoft disfrazado y archivos ocultos.»] class action_delivery action file_malicious_zip[«<b>File</b> – <b>Name</b>: payload.zip<br/><b>Contains</b>: setup.exe y archivos ocultos adicionales»] class file_malicious_zip file file_setup_exe[«<b>File</b> – <b>Name</b>: setup.exe (renombrado ServiceHub.VSDetouredHost.exe)<br/><b>Signature</b>: Firma de código válida de Microsoft»] class file_setup_exe file action_execution_proxy[«<b>Action</b> – <b>T1218 System Binary Proxy Execution</b><br/>Utiliza el binario firmado de Microsoft como proxy para ejecutar código malicioso.»] class action_execution_proxy action action_masquerade[«<b>Action</b> – <b>T1036.001 Invalid Code Signature Masquerading</b><br/>Renombra el binario firmado legítimo para que parezca benigno y evadir la detección.»] class action_masquerade action action_hijack_path[«<b>Action</b> – <b>T1574.008 Search Order Hijacking</b><br/>El archivo setup.exe.config manipula el orden de búsqueda para cargar componentes controlados por el atacante.»] class action_hijack_path action action_hijack_appdomain[«<b>Action</b> – <b>T1574.014 AppDomainManager Hijack</b><br/>Fuerza al runtime .NET a cargar la DLL maliciosa TOTPGuard.dll mediante AppDomainManager.»] class action_hijack_appdomain action file_totpguard[«<b>File</b> – <b>Name</b>: TOTPGuard.dll<br/><b>Purpose</b>: Proporciona una función 2FA personalizada usada por el payload malicioso.»] class file_totpguard file action_ide_extension[«<b>Action</b> – <b>T1176.002 IDE Extensions</b><br/>Abusa del componente host de Visual Studio para ejecutar el payload.»] class action_ide_extension action action_persistence[«<b>Action</b> – <b>T1037.001 Scheduled Task</b><br/>Crea una tarea programada llamada \»BackupCheck\» que se ejecuta al iniciar sesión con el argumento \»doit\».»] class action_persistence action action_env_keying[«<b>Action</b> – <b>T1480.001 Environmental Keying</b><br/>Despliega un payload cifrado AES con clave e IV codificados, cifrando la cabecera MZ para ejecución condicional.»] class action_env_keying action action_virtual_instance[«<b>Action</b> – <b>T1564.006 Run Virtual Instance</b><br/>Incorpora una GUI funcional de 2FA para simular un flujo legítimo y ocultar la actividad maliciosa.»] class action_virtual_instance action %% Connections action_phishing –>|delivers| action_delivery action_delivery –>|provides| file_malicious_zip file_malicious_zip –>|contains| file_setup_exe file_setup_exe –>|used for| action_execution_proxy action_execution_proxy –>|combined with| action_masquerade action_masquerade –>|enables| action_hijack_path action_hijack_path –>|leads to| action_hijack_appdomain action_hijack_appdomain –>|loads| file_totpguard file_totpguard –>|enables| action_ide_extension action_ide_extension –>|supports| action_persistence action_persistence –>|establishes| action_env_keying action_env_keying –>|facilitates| action_virtual_instance
Flujo de Ataque
Detecciones
Dominio Azurewebsites Posible Contactado Por Proceso Inusual (vía dns_query)
Ver
Tarea Programada Sospechosa (vía auditoría)
Ver
IOCs (HashSha256) para detectar: Detectando Nimbus Manticore y sus cadenas de infección por carga lateral
Ver
IOCs (IP de Origen) para detectar: Detectando Nimbus Manticore y sus cadenas de infección por carga lateral
Ver
IOCs (IP de Destino) para detectar: Detectando Nimbus Manticore y sus cadenas de infección por carga lateral
Ver
Detección de Comunicación C2 de Nimbus Manticore vía Dominios de Azure [Conexión de Red de Windows]
Ver
Detección de Cadena de Infección por Carga Lateral de Nimbus Manticore [Creación de Procesos de Windows]
Ver
Ejecución de Simulación
Prerrequisito: El Chequeo de Pre-vuelo de Telemetría y Línea Base debe haber pasado.
Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa del Ataque y Comandos:
Un atacante ha obtenido una copia del legítimo Visual Studiosetup.exebinario, lo renombró asetup.exe(manteniendo el nombre sin cambios para evitar sospechas), y lo colocó en un directorio escribible. Crean un DLL malicioso llamadoTOTPGuard.dllque contiene la carga útil. Para secuestrar el AppDomain, incrustan la cadenaAppDomainInjectionen el argumento de ruta PDB. El atacante luego lanza el ejecutable con la siguiente línea de comandos:C:Tempsetup.exe /install /doit /dll "C:TempTOTPGuard.dll" /pdb "C:TempAppDomainInjection.pdb"Esta invocación exacta satisface las tres condiciones
CommandLine|containsen la regla Sigma, haciendo que la regla se active en el evento ProcessCreate. -
Script de Prueba de Regresión:
# ------------------------------------------------- # Script de regresión para activar la detección de Nimbus Manticore # ------------------------------------------------- $exePath = "C:Tempsetup.exe" $dllPath = "C:TempTOTPGuard.dll" $pdbPath = "C:TempAppDomainInjection.pdb" # Asegúrese de que los archivos existen (cree marcadores de posición ficticios para la prueba) New-Item -ItemType File -Path $exePath -Force | Out-Null New-Item -ItemType File -Path $dllPath -Force | Out-Null New-Item -ItemType File -Path $pdbPath -Force | Out-Null # Construya la línea de comando maliciosa $arguments = @( "/install" "/doit" "/dll `"$dllPath`"" "/pdb `"$pdbPath`"" ) -join " " Write-Host "Lanzando setup.exe malicioso con argumentos:" Write-Host $arguments # Ejecutar el proceso (se terminará inmediatamente ya que el exe ficticio no hace nada) Start-Process -FilePath $exePath -ArgumentList $arguments -PassThru | Out-Null -
Comandos de Limpieza:
# ------------------------------------------------- # Limpieza de artefactos creados para la prueba de regresión # ------------------------------------------------- $paths = @( "C:Tempsetup.exe", "C:TempTOTPGuard.dll", "C:TempAppDomainInjection.pdb" ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force Write-Host "Eliminado $p" } }