Em um ambiente corporativo, o Active Directory é o serviço de diretório mais utilizado para gerenciamento contas de usuários, grupos e permissões de rede.
Embora o Active Directory seja bastante robusto, ele possui algumas configurações padrão que normalmente são exploradas por invasores que já tenham acesso a uma conta de usuário comum, previamente comprometida.
É certo que, em algum momento o atacante buscará informações sobre contas altamente privilegiadas - como por exemplo, as pertencentes aos grupos "Domain Admins" e "Enterprise Admins" - e para isso, é necessário enumerar usuários e grupos no domínio.
Cenário
Imaginem que uma conta de usuário comum chamada "andre" tenha sido comprometida.
O invasor, agora com acesso ao sistema, tentará enumerar outras contas e grupos no Active Directory para posteriormente tentar uma escalação de privilégios.
Por padrão, qualquer usuário autenticado no domínio possui acesso de leitura ao Active Directory e consequentemente pode fazer essa enumeração.
O objetivo do invasor é encontrar contas com privilégios elevados e utilizar outros métodos para comprometer essas contas.
Por exemplo, ele pode testar a senha "Password1", que pode ser válida devido a políticas de senha fracas, por exemplo.
Este processo pode ser feito sem gerar alertas de bloqueio de contas, pois muitas vezes a enumeração de usuários é permitida por padrão para qualquer usuário autenticado.
Enumeração de Usuários e Grupos: Passo a Passo
Para esse artigo, efetuei logon com uma conta de usuário comum, denominada "andre", em uma estação de trabalho Windows 11 Enterprise, membro de um domínio denominado contoso.com.
Conforme abaixo, o comando "whoami" foi utilizado para exibir quem estava conectado, e o comando "systeminfo" foi utilizado para coletar evidencias do sistema operacional utilizado nessa simulação.
Para isso, o comando "Whoami /groups | findstr -i "Builtin" pode nos ajudar.
Logado com o usuário andre, utilizarei o comando "net user /domain" e dessa forma, obtenho uma lista de todos os usuários do domínio "contoso.com".
Mas o que interessa mesmo, é obter a lista de usuários membros de grupos privilegiados.
Para obter a lista de membros do grupo "Domain Admins", utilizo o comando "net group "domain admins" /domain".
Dessa forma, posso ver que, além da conta padrão "Administrator", os usuários "Axl" e "Paul" também são membros do grupo "Domain Admins".
Para listar os membros do grupo Enterprise Admins, utilizo o mesmo comando, trocando somente o nome do grupo. Nesse caso, será: "net group "Enterprise admins" /domain".
Como mitigar essa vulnerabilidade?
Para mitigar essa vulnerabilidade, é necessário negar a permissão de leitura no domínio.
Podemos fazer isso de forma granular, inserindo explicitamente os usuários que terão essa permissão negada, mas a melhor forma é utilizar um grupo de segurança no Active Directory.
Para isso:
1- Criar um grupo de segurança no AD chamado "Desabilitar Enumeracao" (criatividade zero!!! ... 😂😂😂) e adicionar os usuários a esse grupo. Nesse exemplo, adicionei somente o usuário "andre" ao grupo.
2- Abra o "Active Directory Users and Computers";
3- Na raiz do domínio, clique com o botão direito do mouse e selecione "Propriedades";
4- Na aba "Security", clique em "Add", e adicione o grupo recém criado. Após isso, negue explicitamente a permissão de "Read". Feito isso, clique em "OK".
Após a criação do grupo "Desabilitar enumeração" e a aplicação da permissão restritiva, o usuário "andre" tentará repetir os comandos de enumeração.
Para isso, é necessário efetuar logoff e logon novamente na estação de trabalho, para que um novo ticket seja emitido para o usuário "andre", contendo o SID do grupo recém criado.
Conforme evidencia abaixo, estou logado com o usuário andre (que não é membro de nenhum grupo privilegiado) e através do comando "whoami /groups", posso verificar que a conta é membro do grupo denominado "Desabilitar Enumeracao".
Conforme abaixo, o mesmo ocorrerá ao tentar listar os membros dos grupos "Domain Admins" e "Enterprise Admins".
Conclusão
A enumeração de usuários e grupos no Active Directory é uma vulnerabilidade comumente explorada quando uma conta de usuário comum é comprometida.
Embora o Active Directory permita a enumeração por padrão, é possível mitigar esse risco restringindo permissões de leitura no domínio.
Medidas como criar grupos restritivos, aplicar políticas de senha robustas e monitorar o comportamento de contas de usuário são importantes para a proteção do ambiente.
Espero que tenham gostado!
Obrigado e até o próximo post.