Void Dokkaebi utiliza el malware InvisibleFerret compilado con Cython
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Void Dokkaebi, un actor de amenaza vinculado a Corea del Norte, ha mejorado su malware InvisibleFerret compilándolo con Cython en nativo .pyd and .so binarios. Este cambio ayuda al malware a evitar detecciones que se enfocan solo en scripts de Python mientras mantiene sus funciones esenciales, incluyendo el robo de credenciales, registro de teclas, captura de portapapeles y secuestro de carteras de criptomonedas. BeaverTail sirve como el cargador de múltiples etapas que recupera y ejecuta los módulos compilados. La campaña está dirigida a desarrolladores de software y usuarios de criptomonedas que pueden tener credenciales de carteras, claves de firma u otros secretos de alto valor.
Investigación
Los investigadores analizaron toda la cadena de infección y encontraron un movimiento claro hacia módulos de extensión compilados con Cython en lugar de scripts de Python legibles. También documentaron varios métodos de ofuscación, incluyendo codificación Base64, encriptación XOR y manipulación de cadenas divididas e intercambiadas. Durante la investigación, extrajeron direcciones IP, puertos y nombres de archivos codificados, y observaron la creación de Python .mod scripts temporales usados para cargar los binarios maliciosos. El análisis de cadenas reveló además rastros del entorno de construcción y referencias a extensiones de carteras de criptomonedas basadas en navegadores.
Mitigación
Los defensores deberían expandirse más allá de las detecciones enfocadas en scripts y monitorizar archivos sospechosos .pyd and .so que aparecen en ubicaciones inusuales, así como scripts de .mod cargadores temporales. Oportunidades de detección adicionales incluyen los nombres de archivos observados, solicitudes salientes a ip-api.com, y descargas que involucran extensiones de carteras de criptomonedas. Eliminar o aislar los scripts de carga temporales después de la ejecución también puede ayudar a reducir las oportunidades de persistencia.
Respuesta
Si se detectan indicadores relacionados, aísle inmediatamente el punto final afectado, bloquee el tráfico saliente hacia la dirección IP de comando y control identificada, y busque los binarios listados y artefactos de tareas programadas. Los investigadores deben analizar cualquier .mod script recuperado para extraer cargas útiles embebidas y comprender mejor la cadena de ejecución. Cualquier credencial de criptomoneda expuesta, secretos de carteras o claves de firma deben rotarse sin demora.
Flujo de Ataque
Todavía estamos actualizando esta parte. Regístrate para recibir notificaciones
NotifícameDetecciones
Posibles Comunicaciones C2 Sobre HTTP A IP Directa Con Puerto No Común (vía proxy)
Ver
Intento de Comunicaciones de Dominio de Búsqueda IP Posible (vía dns)
Ver
Archivo Oculto Fue Creado en Host Linux (vía file_event)
Ver
Detección de Módulos InvisibleFerret Compilados con Cython [Evento de Archivo en Windows]
Ver
Ejecución de Simulación
Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.
Razonamiento: 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 exactamente la telemetría esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico incorrecto.
-
Narrativa y Comandos de Ataque:
El atacante ha obtenido un conjunto de módulos compilados con Cython (mod.pyd,pad.pyd,brw.pyd) que implementan la recolección de credenciales y comunicación C2. Para lograr persistencia, el adversario copia estos módulos en el directorio de configuración de VS Code del usuario actual (%USERPROFILE%.vscode). VS Code escanea periódicamente esta carpeta en busca de extensiones, causando que los módulos maliciosos sean cargados por un script de Python malicioso posterior. La operación de copia genera un evento de Sysmon FileCreate que coincide con la regla Sigma. -
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de descarga de módulo Cython InvisibleFerret # ------------------------------------------------- $vscodePath = "$env:USERPROFILE.vscode" # Asegúrese de que la carpeta de destino exista if (-not (Test-Path -Path $vscodePath)) { New-Item -ItemType Directory -Path $vscodePath | Out-Null } # Binarios maliciosos simulados (contenido basura aleatorio) $modules = @("mod.pyd","pad.pyd","brw.pyd") foreach ($mod in $modules) { $dest = Join-Path -Path $vscodePath -ChildPath $mod # Escribe 1 KB de bytes aleatorios para imitar una extensión compilada $bytes = New-Object byte[] 1024 (New-Object System.Random).NextBytes($bytes) [System.IO.File]::WriteAllBytes($dest, $bytes) Write-Host "Creado $dest" } -
Comandos de Limpieza:
# ------------------------------------------------- # Limpieza de archivos maliciosos simulados # ------------------------------------------------- $vscodePath = "$env:USERPROFILE.vscode" $modules = @("mod.pyd","pad.pyd","brw.pyd") foreach ($mod in $modules) { $file = Join-Path -Path $vscodePath -ChildPath $mod if (Test-Path $file) { Remove-Item -Path $file -Force Write-Host "Borrado $file" } }