Kurzfassung: Impacket ist die Werkzeugsammlung hinter einem Großteil der seitlichen Bewegung in Windows-Netzen. Mit psexec, smbexec, wmiexec und atexec führen Angreifer Befehle auf entfernten Systemen aus, meist mit gestohlenen Hashes oder Tickets statt mit Passwörtern. Erkennung aus Verteidigersicht: der installierte Dienst in Event 7045, der Zugriff auf die Admin-Freigabe in Event 5145, die Netzwerk-Anmeldung in Event 4624 und das charakteristische Ausgabe-Umleitungsmuster in Sysmon Event 1. Drei geprüfte Sigma-Regeln, Test und Tuning. Serie „Angriff erkennen“.
Impacket erkennen lohnt sich, weil dieselbe Werkzeugsammlung in fast jedem Angriff auftaucht, der über den ersten Rechner hinausgeht. Impacket ist eine freie Python-Bibliothek mit fertigen Skripten für die Windows-Protokolle SMB, RPC, WMI und Kerberos. Für die seitliche Bewegung sind vier davon entscheidend, und sie hinterlassen alle ein erkennbares Muster, weil sie die Standardwege von Windows benutzen, nur eben von außen und mit gestohlenen Anmeldedaten. Dieser Beitrag aus der Serie „Angriff erkennen“ zeigt die vier Methoden aus Verteidigersicht, mit drei Sigma-Regeln und dem Test.
Einordnung in ATT&CK: Der Schwerpunkt liegt auf Lateral Movement, vor allem T1021.002 (SMB/Windows Admin Shares). MITRE ordnet die Ausführung selbst der Taktik Execution zu: über Dienste T1569.002 und über WMI T1047. In der Serie steht der Beitrag unter Lateral Movement, weil der Verteidiger hier die Bewegung zwischen Systemen sucht.
Was der Angreifer tut
Alle vier Methoden setzen voraus, dass der Angreifer bereits gültige Anmeldedaten hat, oft einen Hash oder ein Ticket statt des Passworts. Sie unterscheiden sich darin, wie sie den Befehl auf dem Zielsystem starten. Bewusst auf der Ebene des Prinzips, nicht als Anleitung:
- psexec. Legt eine ausführbare Datei auf der Admin-Freigabe ab und installiert dafür einen Dienst, der sie startet. Die Spur ist die Dienstinstallation samt Binaerpfad und der Schreibzugriff auf die Freigabe.
- smbexec. Installiert ebenfalls einen Dienst, dessen Binaerpfad aber keine Datei ist, sondern eine cmd-Kommandozeile. Jeder Befehl wird über einen kurzlebigen Dienst ausgeführt und die Ausgabe in eine Datei auf einer Freigabe umgeleitet.
- wmiexec. Startet den Befehl über WMI, wodurch die Shell als Kindprozess des WMI-Anbieters WmiPrvSE erscheint. Die Ausgabe landet wieder auf einer Admin-Freigabe des Ziels.
- atexec. Legt eine geplante Aufgabe an, lässt sie den Befehl ausführen und entfernt sie oft gleich wieder. Die Ausgabe wird wie bei den anderen umgeleitet.
Der gemeinsame Nenner für die Erkennung ist zweierlei: eine Netzwerk-Anmeldung mit gestohlenen Daten am Zielsystem und ein charakteristisches Ausführungsmuster, bei dem ein Befehl über cmd läuft und seine Ausgabe in eine Datei auf einer Admin-Freigabe schreibt, häufig nach \\127.0.0.1\ADMIN$. Dieses Muster nutzt legitime Fernverwaltung praktisch nie.
Welche Logquellen die Technik zeigt
- Dienste. Event 7045 zeigt die Installation eines Dienstes samt Binaerpfad. Bei smbexec steht dort eine cmd-Kommandozeile, bei psexec der Pfad zur abgelegten Datei.
- Freigabezugriff. Event 5145 zeigt den Zugriff auf ADMIN$ und C$, inklusive der abgelegten Datei oder der Ausgabedatei.
- Anmeldung. Event 4624 zeigt die Netzwerk-Anmeldung (Typ 3) am Zielsystem mit Quell-IP und Anmeldepaket, oft NTLM bei Pass-the-Hash.
- Ausführung. Sysmon Event 1 zeigt den gestarteten Befehl samt Eltern-Kind-Beziehung und Kommandozeile. WMI-basierte Ausführung erscheint zusätzlich in Event 5861, taskbasierte in Event 4698.
Das Muster im Log
Das stärkste Signal ist die Kombination aus Anmeldung und Ausführung auf dem Zielsystem. Eine Netzwerk-Anmeldung von einem Rechner, der sonst nie auf diesen Server zugreift, gefolgt von einer Dienstinstallation mit cmd-Binaerpfad oder einer Shell unter WmiPrvSE, und dazu eine Ausgabedatei auf ADMIN$. Jede dieser Spuren für sich kann vorkommen; zusammen und in dieser Reihenfolge sind sie eindeutig. Wie bei jeder seitlichen Bewegung hilft eine Baseline: Welche Konten melden sich normalerweise an welchen Servern an, und welche Administrationswege sind üblich? Alles außerhalb dieser Baseline, besonders von Arbeitsplatzrechnern aus, verdient einen zweiten Blick.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli geprüft und greifen die drei wichtigsten Ausführungswege. Die erste fängt das Ausgabe-Umleitungsmuster von wmiexec, smbexec und atexec, die zweite den cmd-Dienst von smbexec und psexec, die dritte die WMI-Ausführung von wmiexec.
1. Ausgabeumleitung auf eine Admin-Freigabe (T1021.002). Diese Regel erkennt die charakteristische cmd-Zeile, die ihre Ausgabe in eine Datei auf einer Admin-Freigabe des Ziels schreibt. Sie ist hochwertig, weil dieses Muster legitim kaum vorkommt.
title: Impacket-Fernausfuehrung mit Ausgabeumleitung auf eine Admin-Freigabe
id: d6a4a5ff-4916-45fe-8d4e-f6f86ef2091a
status: experimental
description: Erkennt das typische Ausfuehrungsmuster von Impacket-Skripten wie
wmiexec, smbexec und atexec. Der Befehl laeuft ueber cmd mit /Q /c und leitet
seine Ausgabe in eine Datei auf einer Admin-Freigabe des Zielsystems um, oft
nach \\127.0.0.1\ADMIN$ oder in eine __output-Datei. Legitime Fernverwaltung
nutzt dieses Muster praktisch nie.
references:
- https://attack.mitre.org/techniques/T1021/002/
author: blue-team.net
tags:
- attack.lateral-movement
- attack.t1021.002
logsource:
category: process_creation
product: windows
detection:
selection_cmd:
Image|endswith: '\cmd.exe'
CommandLine|contains|all:
- '/Q'
- '/c'
selection_redirect:
CommandLine|contains:
- '\\127.0.0.1\ADMIN$'
- '\\127.0.0.1\C$'
- '__output'
- '\Windows\Temp\__'
condition: selection_cmd and selection_redirect
falsepositives:
- Sehr selten; einzelne Treffer im Kontext von Quelle und Ziel pruefen
level: high
2. Dienst mit cmd-Binaerpfad (T1569.002). Ein Dienst, dessen Binaerpfad eine cmd-Kommandozeile statt einer ausführbaren Datei ist, ist das Kennzeichen von smbexec und verwandten Werkzeugen.
title: Dienst mit Kommandozeilen-Binaerpfad installiert (Impacket smbexec/psexec)
id: 60f43091-c4e6-447c-8106-832ca39d99e6
status: experimental
description: Erkennt die Installation eines Dienstes, dessen Binaerpfad eine
cmd-Kommandozeile ausfuehrt. Impacket smbexec und aehnliche Werkzeuge legen
einen kurzlebigen Dienst an, der ueber cmd Befehle ausfuehrt und die Ausgabe
abgreift. Normale Dienste verweisen auf eine ausfuehrbare Datei, nicht auf eine
cmd-Kommandozeile.
references:
- https://attack.mitre.org/techniques/T1569/002/
author: blue-team.net
tags:
- attack.execution
- attack.t1569.002
logsource:
product: windows
service: system
detection:
selection:
EventID: 7045
ImagePath|contains:
- 'cmd.exe /Q /c'
- '%COMSPEC%'
- '/c echo'
condition: selection
falsepositives:
- Seltene Verwaltungsdienste, die bewusst ueber cmd gestartet werden
level: high
3. Shell unter dem WMI-Anbieter (T1047). Startet WmiPrvSE eine cmd oder PowerShell, ist das das Muster von wmiexec. Die Regel steht auf level: medium, weil auch legitime WMI-Verwaltung so aussehen kann; die Quellsysteme grenzt du gezielt ein.
title: WMI-Anbieter startet eine Shell (Impacket wmiexec)
id: d492350f-ce8a-4ad9-8af8-dcd74d3fafcb
status: experimental
description: Erkennt, dass der WMI-Anbieterprozess WmiPrvSE eine Kommandozeile oder
PowerShell startet. Impacket wmiexec fuehrt Befehle auf dem Zielsystem ueber WMI
aus, wodurch die Shell als Kindprozess von WmiPrvSE erscheint. Legitime
WMI-Verwaltung erzeugt dieses Muster ebenfalls, aber selten und gut eingrenzbar.
references:
- https://attack.mitre.org/techniques/T1047/
author: blue-team.net
tags:
- attack.execution
- attack.t1047
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith: '\WmiPrvSE.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
condition: selection
falsepositives:
- Legitime WMI-Verwaltung und Softwareverteilung; betroffene Quellsysteme eingrenzen
level: medium
Der Test
Die Erkennung lässt sich im Lab prüfen, ausschließlich zwischen isolierten Testsystemen mit aktivem Sysmon und Dienst- sowie Objektzugriffsprotokollierung:
- Für Regel 1 ein Befehl, der über cmd mit
/Q /cseine Ausgabe in eine Datei auf\\127.0.0.1\ADMIN$umleitet. Sysmon Event 1 muss die Kommandozeile zeigen und die Regel auslösen. - Für Regel 2 die Installation eines Testdienstes, dessen Binaerpfad eine cmd-Zeile ist, etwa über
sc create. Event 7045 muss den Binaerpfad zeigen. - Für Regel 3 ein Befehl, der per WMI auf einem Testsystem eine cmd startet. Der Start muss als Kindprozess von WmiPrvSE in Sysmon Event 1 erscheinen. Danach die legitimen WMI-Verwaltungsquellen als Ausnahme setzen.
Vollständiger wird der Test mit den passenden Techniken aus Atomic Red Team zu T1021.002, T1569.002 und T1047.
Fehlalarme und Tuning
- Legitime Fernverwaltung. Softwareverteilung und Administrationswerkzeuge nutzen ebenfalls Dienste und WMI. Der Unterschied liegt im Muster: Ausgabedateien auf ADMIN$ und cmd-Binaerpfade sind untypisch. Nimm bekannte Verwaltungsquellen gezielt als Ausnahme auf.
- WMI-Regel eingrenzen. Regel 3 ist die lauteste. Beschränke sie auf die Systeme, von denen aus legitim keine WMI-Fernausführung kommt, und schließe die bekannten Management-Server aus.
- Quelle und Ziel. Eine Workstation, die sich an mehreren Servern anmeldet und dort Befehle ausführt, ist deutlich verdächtiger als ein etablierter Management-Server. Reichere die Alarme mit der Quell-IP aus Event 4624 an.
- Priorität. Treffer von Regel 1 und 2 gehören zu den hochprioren Alarmen, weil sie selten einen legitimen Grund haben.
Fazit
Impacket macht seitliche Bewegung einfach und schnell, aber nicht unsichtbar: Dienst, Freigabe, Anmeldung und das Ausgabe-Umleitungsmuster ergeben zusammen eine klare Signatur. Wer diese vier Spuren kombiniert und mit einer Baseline der normalen Administrationswege abgleicht, erkennt die gängigen Impacket-Skripte zuverlässig. Die Anmeldedaten dazu stammen oft aus dem Credential Dumping, beschrieben unter Mimikatz und LSASS-Dump, und werden per NTLM-Relay oder Pass-the-Hash eingesetzt. Weitere Techniken dieser Taktik stehen im Lexikon nach Taktik.