Invoke-TheHash
Invoke-TheHash enthält PowerShell-Funktionen zur Durchführung von Pass-the-Hash-WMI- und SMB-Aufgaben. WMI- und SMB-Verbindungen werden über den .NET TCPClient hergestellt. Die Authentifizierung erfolgt durch die Übergabe eines NTLM-Hashs an das NTLMv2-Authentifizierungsprotokoll. Lokale Administratorrechte sind clientseitig nicht erforderlich.
Voraussetzungen
Mindestens PowerShell 2.0
Import
Import-Module ./Invoke-TheHash.psd1
oder
. ./Invoke-WMIExec.ps1
. ./Invoke-SMBExec.ps1
. ./Invoke-SMBEnum.ps1
. ./Invoke-SMBClient.ps1
. ./Invoke-TheHash.ps1
Funktionen
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Invoke-WMIExec
- Funktion zur Ausführung von WMI-Befehlen.
Parameter:
- Target – Hostname oder IP-Adresse des Ziels.
- Username – Für die Authentifizierung zu verwendender Benutzername.
- Domain – Für die Authentifizierung zu verwendende Domäne. Dieser Parameter wird bei lokalen Konten oder bei Verwendung von @domain nach dem Benutzernamen nicht benötigt.
- Hash – NTLM-Passwort-Hash für die Authentifizierung. Diese Funktion akzeptiert das Format LM:NTLM oder NTLM.
- Command – Auf dem Ziel auszuführender Befehl. Wenn kein Befehl angegeben wird, prüft die Funktion lediglich, ob der Benutzername und der Hash Zugriff auf WMI auf dem Ziel haben.
- Sleep – Standardwert = 10 Millisekunden: Legt die Start-Sleep-Werte der Funktion in Millisekunden fest.
Beispiel:
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
Screenshot:

Invoke-SMBExec
- SMB (PsExec)-Befehlsausführungsfunktion mit Unterstützung für SMB1, SMB2.1, mit und ohne SMB-Signierung.
Parameter:
- Target – Hostname oder IP-Adresse des Ziels.
- Username – Für die Authentifizierung zu verwendender Benutzername.
- Domain – Für die Authentifizierung zu verwendende Domäne. Dieser Parameter wird bei lokalen Konten oder bei Verwendung von @domain nach dem Benutzernamen nicht benötigt.
- Hash – NTLM-Passwort-Hash für die Authentifizierung. Diese Funktion akzeptiert das Format LM:NTLM oder NTLM.
- Command – Auf dem Ziel auszuführender Befehl. Wenn kein Befehl angegeben wird, prüft die Funktion lediglich, ob der Benutzername und der Hash Zugriff auf SCM auf dem Ziel haben.
- CommandCOMSPEC – Standardwert = Aktiviert: %COMSPEC% /C vor den Befehl stellen.
- Service – Standardwert = 20 Zeichen zufällig: Name des auf dem Ziel zu erstellenden und zu löschenden Dienstes.
- Sleep – Standardwert = 150 Millisekunden: Legt die Start-Sleep-Werte der Funktion in Millisekunden fest.
- Version – Standardwert = Auto: (Auto,1,2.1) Erzwingt die SMB-Version. Das Standardverhalten führt eine SMB-Versionsaushandlung durch und verwendet SMB2.1, falls vom Ziel unterstützt.
Beispiel:
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
Beispiel:
Überprüfen der SMB-Signierungsanforderungen auf dem Ziel.
Invoke-SMBExec -Target 192.168.100.20
Screenshot:

Invoke-SMBEnum
- Invoke-SMBEnum führt Aufgaben zur Aufzählung von Benutzern, Gruppen, NetSessions und Freigaben über SMB2.1 mit und ohne SMB-Signierung durch.
Parameter:
- Target – Hostname oder IP-Adresse des Ziels.
- Username – Für die Authentifizierung zu verwendender Benutzername.
- Domain – Für die Authentifizierung zu verwendende Domäne. Dieser Parameter wird bei lokalen Konten oder bei Verwendung von @domain nach dem Benutzernamen nicht benötigt.
- Hash – NTLM-Passwort-Hash für die Authentifizierung. Diese Funktion akzeptiert das Format LM:NTLM oder NTLM.
- Action – (All,Group,NetSession,Share,User) Standardwert = Share: Auszuführende Aufzählungsaktion.
- Group – Standardwert = Administrators: Aufzuzählende Gruppe.
- Sleep – Standardwert = 150 Millisekunden: Legt die Start-Sleep-Werte der Funktion in Millisekunden fest.
- Version – Standardwert = Auto: (Auto,1,2.1) Erzwingt die SMB-Version. Das Standardverhalten führt eine SMB-Versionsaushandlung durch und verwendet SMB2.1, falls vom Ziel unterstützt. Hinweis: Nur die Signierungsprüfung funktioniert mit SMB1.
Beispiel:
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
Screenshot:

Invoke-SMBClient
- SMB-Client-Funktion mit Unterstützung für SMB2.1 und SMB-Signierung. Diese Funktion bietet in erster Linie SMB-Dateifreigabefunktionen für die Arbeit mit Hashes, die keine Berechtigung zur Remotebefehlsausführung haben. Diese Funktion kann auch zum Staging von Payloads für die Verwendung mit Invoke-WMIExec und Invoke-SMBExec verwendet werden. Hinweis: Invoke-SMBClient basiert auf dem .NET TCPClient und verwendet nicht den Windows SMB-Client. Invoke-SMBClient ist deutlich langsamer als der Windows-Client.
Parameter:
- Username – Für die Authentifizierung zu verwendender Benutzername.
- Domain – Für die Authentifizierung zu verwendende Domäne. Dieser Parameter wird bei lokalen Konten oder bei Verwendung von @domain nach dem Benutzernamen nicht benötigt.
- Hash – NTLM-Passwort-Hash für die Authentifizierung. Diese Funktion akzeptiert das Format LM:NTLM oder NTLM.
- Action – Standardwert = List: (List/Recurse/Delete/Get/Put) Auszuführende Aktion.
-
- List: Listet den Inhalt eines Verzeichnisses auf.
-
- Recurse: Listet den Inhalt eines Verzeichnisses und aller Unterverzeichnisse auf.
-
- Delete: Löscht eine Datei.
-
- Get: Lädt eine Datei herunter.
-
- Put: Lädt eine Datei hoch und setzt die Erstellungs-, Zugriffs- und letzten Schreibzeitpunkte passend zur Quelldatei.
- Source
-
- List und Recurse: UNC-Pfad zu einem Verzeichnis.
-
- Delete: UNC-Pfad zu einer Datei.
-
- Get: UNC-Pfad zu einer Datei.
-
- Put: Hochzuladende Datei. Wenn kein vollständiger Pfad angegeben ist, muss sich die Datei im aktuellen Verzeichnis befinden. Bei Verwendung des 'Modify'-Schalters muss 'Source' ein Byte-Array sein.
- Destination
-
- List und Recurse: Nicht verwendet.
-
-
- Get: Falls verwendet, ist der Wert der neue Dateiname der heruntergeladenen Datei. Wenn kein vollständiger Pfad angegeben ist, wird die Datei im aktuellen Verzeichnis erstellt.
-
- Put: UNC-Pfad für die hochgeladene Datei. Der Dateiname muss angegeben werden.
- Modify
-
- List und Recurse: Die Funktion gibt ein Objekt mit dem Verzeichnisinhalt aus.
-
-
- Get: Die Funktion gibt ein Byte-Array der heruntergeladenen Datei aus, anstatt die Datei auf die Festplatte zu schreiben. Es wird empfohlen, dies nur bei kleineren Dateien zu verwenden und die Ausgabe in eine Variable umzuleiten.
-
- Put: Lädt ein Byte-Array in eine neue Zieldatei hoch.
- NoProgress – Verhindert die Anzeige eines Upload- und Download-Fortschrittsbalkens.
- Sleep – Standardwert = 100 Millisekunden: Legt die Start-Sleep-Werte der Funktion in Millisekunden fest.
- Version – Standardwert = Auto: (Auto,1,2.1) Erzwingt die SMB-Version. Das Standardverhalten führt eine SMB-Versionsaushandlung durch und verwendet SMB2.1, falls vom Ziel unterstützt. Hinweis: Nur die Signierungsprüfung funktioniert mit SMB1.