AD Exploit - Evil-WinRm e BloodHound
O cenário que vou descrever neste artigo é um pentest interno do tipo greybox com foco em um servidor AD (Active Directory). Uma credencial de domínio é disponibilizada, com um usuário sem privilégios administrativos na rede. Os testes tem como objetivo identificar vulnerabilidades em que uma credencial com baixo nível de privilégios pode ser usada para exploração.
Ao executar a enumeração de portas com NMAP, identifiquei diversos serviços ativos no servidor AD. O primeiro protocolo que vou abordar é o WinRM.
Protocolo WinRM
O WinRM é usado para gerenciamento remoto de sistemas, como a execução de comandos, scripts, consultas WMI. A comunicação é feita através do protocolo SOAP sobre HTTP/HTTPS.
WinRM sobre HTTP usa a porta 5985 ou HTTPS com a porta 5986.
Durante um pentest interno, ao encontrar um servidor Windows, podemos usar a ferramenta Evil-WinRm para testar o protocolo WinRM. A instalação da ferramenta é feita com o gerenciador de pacotes Ruby através do comando:
gem install evil-winrm
Usando o Evil-WinRm é possível obter acesso ao servidor com a credencial de usuário comum fornecida para a realização do pentest.
evil-winrm -i [IP] -u [username] -p [password]
Com o acesso ao servidor, podemos iniciar a enumeração interna.
BloodHound
O BloodHound é uma ferramenta para mapear o servidor AD (Active Directory) e corelacionar as relações de confiança, permissão e privilégios entre usuários, grupos e computadores. Através desse mapeamento de corelação, podemos identificar caminhos vulneráveis que um atacante pode explorar para obter acesso privilegiado na rede.
Para instalar a ferramenta é necessário obter o Docker e Docker Compose.
apt install docker.ioInstalação do Docker Compose:
curl -L "https://github.com/docker/compose/releases/download/v2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeOutras versões do Docker Compose: https://github.com/docker/compose/releases
Após o download do docker-compose, configure a permissão de execução:
Em seguida, crie um diretório com nome BloodHound e faça o download do arquivo docker-compose da ferramenta.
curl -L https://ghst.ly/getbhce > docker-compose.yml
docker-compose pull && docker-compose up
Para fazer a coleta dos dados, usamos os scripts da ferramenta Python BloodHound Colletor disponível no repositório AQUI
A instalação requer o ambiente virtual para instalação da CLI do Colletor:
Ambiente Virtual: source venv/bin/activate
Instalação da CLI: pip install bloodhound-ce
Clone da ferramenta: git clone https://github.com/dirkjanm/BloodHound.py
Verificar branch do repositório: git checkout bloodhound-ce
Instalação final: pip install .
Após a instalação, iniciamos a coleta de dados com o comando:
bloodhound-ce-python -d [domain-name] -c all -u [user] -p [password] -ns [ip] --zip
A coleta resulta em um arquivo .zip que é importado na ferramenta BloodHound. Crie um diretório para armazenar o arquivo e não se perder durante o período de teste.
Anteriormente, usando a ferramenta Crackmapexec fiz a enumeração de usuários com o comando:
crackmapexec smb [ip] -u [user] -p [password] --users
No BoodHound busquei por interações entre o usuário Olivia fornecido para o teste e os outros usuários. Olivia possui a permissão GenericAll que permite modificar a senha do usuário Michael.
A partir do Kali é possível usar a ferramenta net para trocar a senha do usuário Michael:
net rpc password "TargetUser" "newP@ssword2022" -U "DOMAIN"/"ControlledUser"%"Password" -S "DomainController"
Usando o Evil-WinRm é possível acessar o servidor com a credencial do usuário Michael. Esse usuário faz parte do grupo Remote Management Users e portanto tem permissão para acessar servidores remotos usando o protocolo WinRM.
Voltando a análise do AD, o usuário Michael tem permissão para trocar a senha do usuário Benjamin.
Diferente da Olivia, o usuário Michael possui a permissão ForceChangePassword e, ao usar o mesmo comando da ferramenta net para trocar a senha do usuário Benjamin, foi possível acessar o servidor pelo WinRm, SMB e através do FTP.
O downloado arquivo Backup.psafe3 é permitido.
Extensão .psafe3
Extensão usada pelo gerenciador de senhas Password Safe, e o arquivo é criptografado. Como não sei a senha mestre do arquivo, será necessário fazer a quebra através de brute-force.
O Hashcat possui o módulo 5200 específico para arquivos .safe3
hashcat -m 5200 Backup.psafe3 /opt/SecLists/Passwords/Leaked-Databases/rockyou-75.txt
O Password Safe pode ser instalado usando a versão disponivel neste repositório AQUI
Comentários
Postar um comentário