Invoke-TheHash
Invoke-TheHash contient des fonctions PowerShell pour effectuer des tâches WMI et SMB par pass-the-hash. Les connexions WMI et SMB sont accédées via le .NET TCPClient. L'authentification est effectuée en passant un hash NTLM dans le protocole d'authentification NTLMv2. Les privilèges d'administrateur local ne sont pas requis côté client.
Prérequis
PowerShell 2.0 minimum
Importation
Import-Module ./Invoke-TheHash.psd1
ou
. ./Invoke-WMIExec.ps1
. ./Invoke-SMBExec.ps1
. ./Invoke-SMBEnum.ps1
. ./Invoke-SMBClient.ps1
. ./Invoke-TheHash.ps1
Fonctions
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Invoke-WMIExec
- Fonction d'exécution de commande WMI.
Paramètres :
- Target - Nom d'hôte ou adresse IP de la cible.
- Username - Nom d'utilisateur à utiliser pour l'authentification.
- Domain - Domaine à utiliser pour l'authentification. Ce paramètre n'est pas nécessaire avec les comptes locaux ou lorsque @domain est utilisé après le nom d'utilisateur.
- Hash - Hash du mot de passe NTLM pour l'authentification. Cette fonction accepte les formats LM:NTLM ou NTLM.
- Command - Commande à exécuter sur la cible. Si aucune commande n'est spécifiée, la fonction vérifie simplement si le nom d'utilisateur et le hash ont accès à WMI sur la cible.
- Sleep - Par défaut = 10 millisecondes : Définit les valeurs Start-Sleep de la fonction en millisecondes.
Exemple :
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
Capture d'écran :

Invoke-SMBExec
- Fonction d'exécution de commande SMB (PsExec) prenant en charge SMB1, SMB2.1, avec et sans signature SMB.
Paramètres :
- Target - Nom d'hôte ou adresse IP de la cible.
- Username - Nom d'utilisateur à utiliser pour l'authentification.
- Domain - Domaine à utiliser pour l'authentification. Ce paramètre n'est pas nécessaire avec les comptes locaux ou lorsque @domain est utilisé après le nom d'utilisateur.
- Hash - Hash du mot de passe NTLM pour l'authentification. Cette fonction accepte les formats LM:NTLM ou NTLM.
- Command - Commande à exécuter sur la cible. Si aucune commande n'est spécifiée, la fonction vérifie simplement si le nom d'utilisateur et le hash ont accès à SCM sur la cible.
- CommandCOMSPEC - Par défaut = Activé : Ajouter %COMSPEC% /C à la commande.
- Service - Par défaut = 20 caractères aléatoires : Nom du service à créer et supprimer sur la cible.
- Sleep - Par défaut = 150 millisecondes : Définit les valeurs Start-Sleep de la fonction en millisecondes.
- Version - Par défaut = Auto : (Auto,1,2.1) Forcer la version SMB. Le comportement par défaut consiste à effectuer une négociation de version SMB et à utiliser SMB2.1 si pris en charge par la cible.
Exemple :
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
Exemple :
Vérifier les exigences de signature SMB sur la cible.
Invoke-SMBExec -Target 192.168.100.20
Capture d'écran :

Invoke-SMBEnum
- Invoke-SMBEnum effectue des tâches d'énumération d'utilisateurs, de groupes, de sessions réseau et de partages via SMB2.1 avec et sans signature SMB.
Paramètres :
- Target - Nom d'hôte ou adresse IP de la cible.
- Username - Nom d'utilisateur à utiliser pour l'authentification.
- Domain - Domaine à utiliser pour l'authentification. Ce paramètre n'est pas nécessaire avec les comptes locaux ou lorsque @domain est utilisé après le nom d'utilisateur.
- Hash - Hash du mot de passe NTLM pour l'authentification. Cette fonction accepte les formats LM:NTLM ou NTLM.
- Action - (All,Group,NetSession,Share,User) Par défaut = Share : Action d'énumération à effectuer.
- Group - Par défaut = Administrators : Groupe à énumérer.
- Sleep - Par défaut = 150 millisecondes : Définit les valeurs Start-Sleep de la fonction en millisecondes.
- Version - Par défaut = Auto : (Auto,1,2.1) Forcer la version SMB. Le comportement par défaut consiste à effectuer une négociation de version SMB et à utiliser SMB2.1 si pris en charge par la cible. Note : seule la vérification de signature fonctionne avec SMB1.
Exemple :
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
Capture d'écran :

Invoke-SMBClient
- Fonction client SMB prenant en charge SMB2.1 et la signature SMB. Cette fonction offre principalement des capacités de partage de fichiers SMB pour travailler avec des hashs qui n'ont pas de privilège d'exécution de commande à distance. Cette fonction peut également être utilisée pour préparer des charges utiles pour Invoke-WMIExec et Invoke-SMBExec. Notez que Invoke-SMBClient est construit sur le .NET TCPClient et n'utilise pas le client SMB Windows. Invoke-SMBClient est beaucoup plus lent que le client Windows.
Paramètres :
- Username - Nom d'utilisateur à utiliser pour l'authentification.
- Domain - Domaine à utiliser pour l'authentification. Ce paramètre n'est pas nécessaire avec les comptes locaux ou lorsque @domain est utilisé après le nom d'utilisateur.
- Hash - Hash du mot de passe NTLM pour l'authentification. Cette fonction accepte les formats LM:NTLM ou NTLM.
- Action - Par défaut = List : (List/Recurse/Delete/Get/Put) Action à effectuer.
-
- List : Liste le contenu d'un répertoire.
-
- Recurse : Liste le contenu d'un répertoire et de tous ses sous-répertoires.
-
- Delete : Supprime un fichier.
-
- Get : Télécharge un fichier.
-
- Put : Téléverse un fichier et définit les heures de création, d'accès et de dernière écriture pour correspondre au fichier source.
- Source
-
- List et Recurse : Chemin UNC vers un répertoire.
-
- Delete : Chemin UNC vers un fichier.
-
- Get : Chemin UNC vers un fichier.
-
- Put : Fichier à téléverser. Si un chemin complet n'est pas spécifié, le fichier doit se trouver dans le répertoire courant. Lorsque l'interrupteur 'Modify' est utilisé, 'Source' doit être un tableau d'octets.
- Destination
-
- List et Recurse : Non utilisé.
-
-
- Get : S'il est utilisé, la valeur sera le nouveau nom du fichier téléchargé. Si un chemin complet n'est pas spécifié, le fichier sera créé dans le répertoire courant.
-
- Put : Chemin UNC pour le fichier téléversé. Le nom du fichier doit être spécifié.
- Modify
-
- List et Recurse : La fonction renvoie un objet contenant le contenu du répertoire.
-
-
- Get : La fonction renvoie un tableau d'octets du fichier téléchargé au lieu d'écrire le fichier sur le disque. Il est conseillé de n'utiliser ceci qu'avec des fichiers plus petits et de rediriger la sortie vers une variable.
Exemple :
Liste le contenu d'un répertoire racine de partage.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose
Exemple :
Liste récursivement le contenu d'un partage en commençant à la racine.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share
Exemple :
Liste récursivement le contenu d'un sous-répertoire de partage et renvoie uniquement le contenu dans une variable.
$directory_contents = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share\subdirectory -Modify
Exemple :
Supprime un fichier sur un partage.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\file.txt
Exemple :
Supprime un fichier dans des sous-répertoires d'un partage.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\subdirectory\subdirectory\file.txt
Exemple :
Télécharge un fichier depuis un partage.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt
Exemple :
Télécharge un fichier depuis un sous-répertoire d'un partage et définit un nouveau nom de fichier.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\subdirectory\file.txt -Destination file.txt
Exemple :
Télécharge un fichier depuis un partage vers une variable de tableau d'octets au lieu du disque.
$password_file = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt -Modify
Exemple :
Téléverse un fichier vers un sous-répertoire de partage.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source file.exe -Destination \\server\share\subdirectory\file.exe
Exemple :
Téléverse un fichier vers un partage à partir d'une variable de tableau d'octets.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source $file_byte_array -Destination \\server\share\file.txt -Modify
Capture d'écran :

Invoke-TheHash
- Fonction pour exécuter les fonctions Invoke-TheHash contre plusieurs cibles.
Paramètres :
- Type - Définit la fonction Invoke-TheHash souhaitée. Définir sur SMBClient, SMBEnum, SMBExec ou WMIExec.
- Target - Liste de noms d'hôtes, adresses IP, notation CIDR ou plages IP pour les cibles.
- TargetExclude - Liste de noms d'hôtes, adresses IP, notation CIDR ou plages IP à exclure de la liste des cibles.
- PortCheckDisable - (Interrupteur) Désactiver la vérification du port WMI ou SMB. Étant donné que cette fonction n'est pas encore threadée, la vérification du port sert à accélérer la fonction en vérifiant si un port WMI ou SMB est ouvert avant de tenter une connexion TCPClient synchrone complète.
- PortCheckTimeout - Par défaut = 100 : Définit le délai d'absence de réponse en millisecondes pour la vérification du port WMI ou SMB.
- Username - Nom d'utilisateur à utiliser pour l'authentification.
- Domain - Domaine à utiliser pour l'authentification. Ce paramètre n'est pas nécessaire avec les comptes locaux ou lorsque @domain est utilisé après le nom d'utilisateur.
- Hash - Hash du mot de passe NTLM pour l'authentification. Ce module accepte les formats LM:NTLM ou NTLM.
- Command - Commande à exécuter sur la cible. Si aucune commande n'est spécifiée, la fonction vérifie simplement si le nom d'utilisateur et le hash ont accès à WMI ou SCM sur la cible.
- CommandCOMSPEC - Par défaut = Activé : Type SMBExec uniquement. Ajouter %COMSPEC% /C à la commande.
- Service - Par défaut = 20 caractères aléatoires : Type SMBExec uniquement. Nom du service à créer et supprimer sur la cible.
- SMB1 - (Interrupteur) Forcer SMB1. Type SMBExec uniquement. Le comportement par défaut consiste à effectuer une négociation de version SMB et à utiliser SMB2 si pris en charge par la cible.
- Sleep - Par défaut = WMI 10 millisecondes, SMB 150 millisecondes : Définit les valeurs Start-Sleep de la fonction en millisecondes.
Exemple :
Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administrator -Hash F6F38B793DB6A94BA04A52F1D3EE92F0
Capture d'écran :
