
Enumeração anônima de Active Directory em uma única passagem via SAMR e LSARPC — sessão nula, sem credenciais, com saída estruturada reutilizável.
Um enumerador de Active Directory de passagem única para uma sessão anônima (nula),
usando os named pipes \samr e \lsarpc. Nenhuma credencial necessária.
Ele não faz nada que as ferramentas clássicas não consigam. O que ele faz é reunir tudo em
uma única execução e apresentar os resultados de forma limpa. Em um engajamento você chega sem
nenhuma conta de domínio, encontra o DC via DNS e quer o quadro completo: contas,
detalhes por usuário, grupos, política e as partes de LSA/DNS, sem precisar juntar
sessões do rpcclient ou vários scripts separados e depois analisar manualmente a saída padrão.
Isto faz essa passagem por você e grava uma saída estruturada e reutilizável:
manifest.json, userlist.txt / computerlist.txt prontos para uso,
e uma lista de RIDs salva que você pode reutilizar em vez de forçar duas vezes.Por favor, execute isto apenas contra sistemas que você possui ou está explicitamente autorizado a testar. Enumerar o diretório de outra pessoa sem permissão não é aceitável, e dependendo de onde você estiver pode ser ilegal.
Existem duas versões que se comportam de forma idêntica. Use a biblioteca que você tiver:
adnullenum.py — construído sobre impacket.$) são
separadas dos usuários reais.Ele também sinaliza contas interessantes para você: coisas como "senha não obrigatória", "senha nunca expira", AS-REP-roastable, delegação irrestrita, nunca fez logon, ou uma descrição que menciona uma senha.
Algumas coisas que decorrem naturalmente disto:
Tudo aqui é SAMR/LSARPC anônimo padrão, e as ferramentas estabelecidas já alcançam os mesmos dados. Este é um invólucro de conveniência, não uma nova capacidade, então vale a pena conhecer as alternativas:
--rid-brute, --users,
--pass-pol) cobre a mesma enumeração dentro de um framework muito maior.samrdump.py (usuários/grupos/aliases +
detalhes por usuário) e lookupsid.py (RID cycling sobre LSA). Sem execução única, sem
fallback SAMR→LSA, apenas saída padrão.rpcclient expõe as chamadas subjacentes (queryuser, enumdomusers,
querydominfo, lsaquery, lookupsids, …) mas de forma interativa e apenas saída padrão.
Seu enumdomusers lista usuários padrão por nome, sem contas de máquina ($), e
os detalhes completos são queryuser um de cada vez. Sem um loop de RID cycling embutido, ele
não consegue recuperar computadores ou contornar enumeração restrita. Veja
Fazendo manualmente.O que o adnullenum acrescenta é o empacotamento: uma execução de sessão nula em vez de várias ferramentas, SAMR primeiro com um fallback LSA opcional, sinalizadores curados de contas interessantes e saída organizada em múltiplos formatos que você pode entregar diretamente ao próximo passo ou reabrir depois. Se esse fluxo de trabalho se encaixa em como você trabalha, use-o; se você prefere uma ferramenta testada em batalha, recorra ao enum4linux-ng ou ao NetExec.
Você precisa do Python 3.9+ e de uma biblioteca SMB. Um ambiente virtual mantém tudo organizado:
# clone / copy the files, then from the project folder:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install impacket # for adnullenum.py
É isso. Execute python3 adnullenum.py --help para ver tudo.
Tudo é executado através de um único --mode. O padrão é recon, que é a
coisa segura de executar primeiro.
| Modo | O que você obtém |
|---|---|
recon | Informações de domínio, contagens, política de senha/bloqueio e os detalhes de LSA/DNS. Sem força bruta. Apenas uma olhada ao redor. |
rids | Descobre quais contas existem e as classifica em usuários / computadores / grupos. |
users | O acima, mais detalhes completos sobre cada usuário real e o resumo de "contas interessantes". Adicione --include-groups para também listar os grupos de cada usuário. |
groups | Grupos de domínio e aliases internos com seus membros. |
full | Tudo. |
# 1. Is anonymous access open, and how big is this domain?
python3 adnullenum.py 10.0.0.10
# 2. Grab everything
python3 adnullenum.py 10.0.0.10 --mode full
# 3. Just the account inventory, wider net for a big domain
python3 adnullenum.py 10.0.0.10 --mode rids --start-rid 1000 --max-rid 200000
# 4. Go slower to stay quiet
python3 adnullenum.py 10.0.0.10 --mode users --sleep 1 --jitter 40
# 5. Also write JSON (txt and csv are always written)
python3 adnullenum.py 10.0.0.10 --mode full --json
Se o domínio não permitir listar usuários diretamente (comum), a ferramenta recorre ao RID cycling: ela pede ao DC para traduzir IDs de conta em nomes em lotes de 1000. Por padrão, ela varre para cima até ter encontrado tudo o que o DC diz que existe, ou até que 5000 IDs seguidos retornem vazios. Você pode fixá-la a um intervalo exato:
python3 adnullenum.py 10.0.0.10 --mode rids --range 500-50000
Alguns DCs recusam completamente o SAMR anônimo (enumdomains e a tradução de RID retornam
ACCESS_DENIED). A execução não desiste: