Analysieren der PowerShell-Skriptblockprotokollierung
Anwendungsfälle
- Bei der Untersuchung von Sicherheitsvorfällen, die eine Analyse der PowerShell-Skriptblockprotokollierung erfordern
- Beim Erstellen von Erkennungsregeln oder Bedrohungsjagd-Abfragen für diese Domäne
- Wenn SOC-Analysten strukturierte Verfahren für diesen Analysetyp benötigen
- Beim Validieren der Sicherheitsüberwachungsabdeckung für verwandte Angriffstechniken
Voraussetzungen
- Vertrautheit mit Sicherheitsbetriebskonzepten und -tools
- Zugriff auf eine Test- oder Laborumgebung für die sichere Ausführung
- Python 3.8+ mit installierten erforderlichen Abhängigkeiten
- Angemessene Autorisierung für alle Testaktivitäten
Anleitung
- Abhängigkeiten installieren:
pip install python-evtx lxml - PowerShell-Betriebsprotokolle sammeln:
Microsoft-Windows-PowerShell%4Operational.evtx - Ereignis-ID 4104-Einträge mit python-evtx parsen, um ScriptBlockText, ScriptBlockId und MessageNumber/MessageTotal für die Rekonstruktion mehrteiliger Skripte zu extrahieren.
- Erkennungsheuristiken anwenden:
- Base64-codierte Befehle (
-EncodedCommand,FromBase64String) - Download-Cradles (
DownloadString,DownloadFile,Invoke-WebRequest,Net.WebClient) - AMSI-Umgehungsmuster (
AmsiUtils,amsiInitFailed) - Obfuskierungsindikatoren (hohe Entropie, Tick-Marken-Einfügung, Zeichenkettenverkettung)
- Base64-codierte Befehle (
- Einen Bericht mit rekonstruierten Skripten, Risikobewertungen und MITRE ATT&CK-Zuordnungen erstellen.
python scripts/agent.py --evtx-file /pfad/zu/PowerShell-Operational.evtx --output ps_analysis.json
Beispiele
Erkennung codierter Befehlsausführung
import base64
if "-encodedcommand" in script_text.lower():
encoded = script_text.split()[-1]
decoded = base64.b64decode(encoded).decode("utf-16-le")
Rekonstruktion mehrteiliger Skripte
Skripte, die auf mehrere 4104-Ereignisse verteilt sind, teilen eine ScriptBlockId. Verketten Sie Blöcke, geordnet nach MessageNumber, um das vollständige Skript wiederherzustellen.