Invoke-TheHash
Invoke-TheHash contiene funzioni PowerShell per eseguire attività pass the hash su WMI e SMB. Le connessioni WMI e SMB vengono effettuate tramite .NET TCPClient. L'autenticazione avviene passando un hash NTLM al protocollo di autenticazione NTLMv2. Non è richiesto il privilegio di amministratore locale sul lato client.
Requisiti
PowerShell 2.0 minimo
Importazione
Import-Module ./Invoke-TheHash.psd1
oppure
. ./Invoke-WMIExec.ps1
. ./Invoke-SMBExec.ps1
. ./Invoke-SMBEnum.ps1
. ./Invoke-SMBClient.ps1
. ./Invoke-TheHash.ps1
Funzioni
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Invoke-WMIExec
- Funzione di esecuzione comandi tramite WMI.
Parametri:
- Target - Nome host o indirizzo IP del target.
- Username - Nome utente per l'autenticazione.
- Domain - Dominio per l'autenticazione. Questo parametro non è necessario con account locali o quando si utilizza @domain dopo il nome utente.
- Hash - Hash della password NTLM per l'autenticazione. Questa funzione accetta sia il formato LM:NTLM che NTLM.
- Command - Comando da eseguire sul target. Se non viene specificato un comando, la funzione si limita a verificare se l'utente e l'hash hanno accesso a WMI sul target.
- Sleep - Default = 10 Millisecondi: Imposta i valori Start-Sleep della funzione in millisecondi.
Esempio:
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "comando o launcher da eseguire" -verbose
Screenshot:

Invoke-SMBExec
- Funzione di esecuzione comandi SMB (PsExec) che supporta SMB1, SMB2.1, con e senza firma SMB.
Parametri:
- Target - Nome host o indirizzo IP del target.
- Username - Nome utente per l'autenticazione.
- Domain - Dominio per l'autenticazione. Questo parametro non è necessario con account locali o quando si utilizza @domain dopo il nome utente.
- Hash - Hash della password NTLM per l'autenticazione. Questa funzione accetta sia il formato LM:NTLM che NTLM.
- Command - Comando da eseguire sul target. Se non viene specificato un comando, la funzione si limita a verificare se l'utente e l'hash hanno accesso a SCM sul target.
- CommandCOMSPEC - Default = Abilitato: Antepone %COMSPEC% /C al comando.
- Service - Default = 20 Caratteri Casuale: Nome del servizio da creare ed eliminare sul target.
- Sleep - Default = 150 Millisecondi: Imposta i valori Start-Sleep della funzione in millisecondi.
- Version - Default = Auto: (Auto,1,2.1) Forza la versione SMB. Il comportamento predefinito è eseguire la negoziazione della versione SMB e utilizzare SMB2.1 se supportato dal target.
Esempio:
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "comando o launcher da eseguire" -verbose
Esempio:
Verifica i requisiti di firma SMB sul target.
Invoke-SMBExec -Target 192.168.100.20
Screenshot:

Invoke-SMBEnum
- Invoke-SMBEnum esegue attività di enumerazione di utenti, gruppi, sessioni NetSession e condivisioni su SMB2.1 con e senza firma SMB.
Parametri:
- Target - Nome host o indirizzo IP del target.
- Username - Nome utente per l'autenticazione.
- Domain - Dominio per l'autenticazione. Questo parametro non è necessario con account locali o quando si utilizza @domain dopo il nome utente.
- Hash - Hash della password NTLM per l'autenticazione. Questa funzione accetta sia il formato LM:NTLM che NTLM.
- Action - (All,Group,NetSession,Share,User) Default = Share: Azione di enumerazione da eseguire.
- Group - Default = Administrators: Gruppo da enumerare.
- Sleep - Default = 150 Millisecondi: Imposta i valori Start-Sleep della funzione in millisecondi.
- Version - Default = Auto: (Auto,1,2.1) Forza la versione SMB. Il comportamento predefinito è eseguire la negoziazione della versione SMB e utilizzare SMB2.1 se supportato dal target. Nota: solo il controllo della firma funziona con SMB1.
Esempio:
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
Screenshot:

Invoke-SMBClient
- Funzione client SMB che supporta SMB2.1 e la firma SMB. Questa funzione fornisce principalmente funzionalità di condivisione file SMB per lavorare con hash che non dispongono di privilegi di esecuzione remota dei comandi. Questa funzione può anche essere utilizzata per preparare payload da utilizzare con Invoke-WMIExec e Invoke-SMBExec. Nota: Invoke-SMBClient è basato su .NET TCPClient e non utilizza il client SMB di Windows. Invoke-SMBClient è molto più lento del client Windows.
Parametri:
- Username - Nome utente per l'autenticazione.
- Domain - Dominio per l'autenticazione. Questo parametro non è necessario con account locali o quando si utilizza @domain dopo il nome utente.
- Hash - Hash della password NTLM per l'autenticazione. Questa funzione accetta sia il formato LM:NTLM che NTLM.
- Action - Default = List: (List/Recurse/Delete/Get/Put) Azione da eseguire.
-
- List: Elenca il contenuto di una directory.
-
- Recurse: Elenca il contenuto di una directory e di tutte le sottodirectory.
-
-
-
- Put: Carica un file e imposta i tempi di creazione, accesso e ultima scrittura in modo che corrispondano al file sorgente.
- Source
-
- List e Recurse: Percorso UNC di una directory.
-
- Delete: Percorso UNC di un file.
-
- Get: Percorso UNC di un file.
-
- Put: File da caricare. Se non viene specificato un percorso completo, il file deve trovarsi nella directory corrente. Quando si utilizza l'opzione 'Modify', 'Source' deve essere un array di byte.
- Destination
-
- List e Recurse: Non utilizzato.
-
-
- Get: Se utilizzato, il valore sarà il nuovo nome del file scaricato. Se non viene specificato un percorso completo, il file verrà creato nella directory corrente.
-
- Put: Percorso UNC per il file caricato. Il nome del file deve essere specificato.
- Modify
-
- List e Recurse: La funzione restituirà un oggetto composto dal contenuto della directory.
-
-
- Get: La funzione restituirà un array di byte del file scaricato invece di scrivere il file su disco. È consigliabile utilizzarlo solo con file più piccoli e inviare l'output a una variabile.
-
- Put: Carica un array di byte in un nuovo file di destinazione.
- NoProgress - Impedisce la visualizzazione di una barra di avanzamento per il caricamento e il download.
- Sleep - Default = 100 Millisecondi: Imposta i valori Start-Sleep della funzione in millisecondi.
- Version - Default = Auto: (Auto,1,2.1) Forza la versione SMB. Il comportamento predefinito è eseguire la negoziazione della versione SMB e utilizzare SMB2.1 se supportato dal target. Nota: solo il controllo della firma funziona con SMB1.
Esempio:
Elenca il contenuto di una directory root di una condivisione.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose
Esempio:
Elenca ricorsivamente il contenuto di una condivisione a partire dalla root.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share