Invoke-TheHash
Invoke-TheHash contiene funciones de PowerShell para realizar tareas de pass the hash en WMI y SMB. Las conexiones WMI y SMB se acceden a través de .NET TCPClient. La autenticación se realiza pasando un hash NTLM al protocolo de autenticación NTLMv2. No se requiere privilegio de administrador local del lado del cliente.
Requisitos
PowerShell 2.0 como mínimo.
Importar
Import-Module ./Invoke-TheHash.psd1
o
. ./Invoke-WMIExec.ps1
. ./Invoke-SMBExec.ps1
. ./Invoke-SMBEnum.ps1
. ./Invoke-SMBClient.ps1
. ./Invoke-TheHash.ps1
Funciones
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Invoke-WMIExec
- Función de ejecución de comandos mediante WMI.
Parámetros:
- Target - Nombre de host o dirección IP del objetivo.
- Username - Nombre de usuario para la autenticación.
- Domain - Dominio para la autenticación. Este parámetro no es necesario con cuentas locales o cuando se usa @domain después del nombre de usuario.
- Hash - Hash de contraseña NTLM para la autenticación. Esta función acepta tanto el formato LM:NTLM como NTLM.
- Command - Comando a ejecutar en el objetivo. Si no se especifica un comando, la función solo verificará si el nombre de usuario y el hash tienen acceso a WMI en el objetivo.
- Sleep - Predeterminado = 10 milisegundos: Establece los valores de Start-Sleep de la función en milisegundos.
Ejemplo:
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "comando o lanzador a ejecutar" -verbose
Captura de pantalla:

Invoke-SMBExec
- Función de ejecución de comandos SMB (PsExec) compatible con SMB1, SMB2.1, con y sin firmado SMB.
Parámetros:
- Target - Nombre de host o dirección IP del objetivo.
- Username - Nombre de usuario para la autenticación.
- Domain - Dominio para la autenticación. Este parámetro no es necesario con cuentas locales o cuando se usa @domain después del nombre de usuario.
- Hash - Hash de contraseña NTLM para la autenticación. Esta función acepta tanto el formato LM:NTLM como NTLM.
- Command - Comando a ejecutar en el objetivo. Si no se especifica un comando, la función solo verificará si el nombre de usuario y el hash tienen acceso a SCM en el objetivo.
- CommandCOMSPEC - Predeterminado = Habilitado: Anteponer %COMSPEC% /C al Comando.
- Service - Predeterminado = 20 caracteres aleatorios: Nombre del servicio a crear y eliminar en el objetivo.
- Sleep - Predeterminado = 150 milisegundos: Establece los valores de Start-Sleep de la función en milisegundos.
- Version - Predeterminado = Auto: (Auto,1,2.1) Forzar versión SMB. El comportamiento predeterminado es realizar la negociación de versión SMB y usar SMB2.1 si el objetivo lo admite.
Ejemplo:
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "comando o lanzador a ejecutar" -verbose
Ejemplo:
Verificar los requisitos de firmado SMB en el objetivo.
Invoke-SMBExec -Target 192.168.100.20
Captura de pantalla:

Invoke-SMBEnum
- Invoke-SMBEnum realiza tareas de enumeración de usuarios, grupos, sesiones Net y recursos compartidos a través de SMB2.1 con y sin firmado SMB.
Parámetros:
- Target - Nombre de host o dirección IP del objetivo.
- Username - Nombre de usuario para la autenticación.
- Domain - Dominio para la autenticación. Este parámetro no es necesario con cuentas locales o cuando se usa @domain después del nombre de usuario.
- Hash - Hash de contraseña NTLM para la autenticación. Esta función acepta tanto el formato LM:NTLM como NTLM.
- Action - (All,Group,NetSession,Share,User) Predeterminado = Share: Acción de enumeración a realizar.
- Group - Predeterminado = Administrators: Grupo a enumerar.
- Sleep - Predeterminado = 150 milisegundos: Establece los valores de Start-Sleep de la función en milisegundos.
- Version - Predeterminado = Auto: (Auto,1,2.1) Forzar versión SMB. El comportamiento predeterminado es realizar la negociación de versión SMB y usar SMB2.1 si el objetivo lo admite. Tenga en cuenta que solo la verificación de firmado funciona con SMB1.
Ejemplo:
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
Captura de pantalla:

Invoke-SMBClient
- Función de cliente SMB compatible con SMB2.1 y firmado SMB. Esta función proporciona principalmente capacidades de archivos compartidos SMB para trabajar con hashes que no tienen privilegio de ejecución remota de comandos. Esta función también se puede utilizar para preparar cargas útiles para usar con Invoke-WMIExec e Invoke-SMBExec. Tenga en cuenta que Invoke-SMBClient está construido sobre .NET TCPClient y no utiliza el cliente SMB de Windows. Invoke-SMBClient es mucho más lento que el cliente de Windows.
Parámetros:
- Username - Nombre de usuario para la autenticación.
- Domain - Dominio para la autenticación. Este parámetro no es necesario con cuentas locales o cuando se usa @domain después del nombre de usuario.
- Hash - Hash de contraseña NTLM para la autenticación. Esta función acepta tanto el formato LM:NTLM como NTLM.
- Action - Predeterminado = List: (List/Recurse/Delete/Get/Put) Acción a realizar.
-
- List: Enumera el contenido de un directorio.
-
- Recurse: Enumera el contenido de un directorio y todos sus subdirectorios.
-
- Delete: Elimina un archivo.
-
- Get: Descarga un archivo.
-
- Put: Sube un archivo y establece las horas de creación, acceso y última escritura para que coincidan con el archivo fuente.
- Source
-
- List y Recurse: Ruta UNC a un directorio.
-
- Delete: Ruta UNC a un archivo.
-
- Get: Ruta UNC a un archivo.
-
- Put: Archivo a subir. Si no se especifica una ruta completa, el archivo debe estar en el directorio actual. Al usar el modificador 'Modify', 'Source' debe ser un arreglo de bytes.
- Destination
-
- List y Recurse: No se usa.
-
-
- Get: Si se usa, el valor será el nuevo nombre del archivo descargado. Si no se especifica una ruta completa, el archivo se creará en el directorio actual.
-
- Put: Ruta UNC para el archivo subido. Se debe especificar el nombre del archivo.
- Modify
-
- List y Recurse: La función generará un objeto que consiste en el contenido del directorio.
-
-
- Get: La función generará un arreglo de bytes del archivo descargado en lugar de escribir el archivo en el disco. Es recomendable usar esto solo con archivos pequeños y enviar la salida a una variable.
-
- Put: Sube un arreglo de bytes a un nuevo archivo de destino.
- NoProgress - Evita mostrar una barra de progreso de subida y descarga.
- Sleep - Predeterminado = 100 milisegundos: Establece los valores de Start-Sleep de la función en milisegundos.
- Version - Predeterminado = Auto: (Auto,1,2.1) Forzar versión SMB. El comportamiento predeterminado es realizar la negociación de versión SMB y usar SMB2.1 si el objetivo lo admite. Tenga en cuenta que solo la verificación de firmado funciona con SMB1.
Ejemplo:
Listar el contenido de un directorio raíz compartido.
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose