Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
adnullenum — 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. | Kitploit
Ferramentas/GitHubGitHub/crypt0p3g/adnullenum
Ferramentas DefensivasOSINT (Inteligência de Fontes Abertas)ReconhecimentoAnálise de VulnerabilidadesColeta de InformaçõesSegurança de RedeTestes de PenetraçãoRed Teaming
GitHubcrypt0p3g/adnullenum

adnullenum

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.

Ver Repositório
37712há 3 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

adnullenum

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:

  • Um comando cobre informações do domínio, política, descoberta de RID, detalhes por usuário e grupos, escolhendo o método que funciona e degradando graciosamente quando o SAMR está bloqueado (veja Como se compara e Quando o SAMR está bloqueado).
  • Saída feita para alimentar a próxima ferramenta. Pastas de execução com carimbo de data/hora com txt / csv / (opcional) json, um 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.
  • Contas interessantes sinalizadas conforme aparecem (AS-REP-roastable, senha não obrigatória, delegação irrestrita, e assim por diante).
  • 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.

    O que ele coleta

    • Usuários, computadores e grupos. Contas de máquina (as que terminam em $) são separadas dos usuários reais.
    • Detalhes completos por usuário. Descrição, associações a grupos, carimbos de data/hora de senha e logon, sinalizadores de conta e restrições de logon (horários de logon, estações de trabalho permitidas, expiração).
    • Grupos com seus membros, resolvidos para nomes reais.
    • Informações de domínio e política. Nome do domínio, SID, função do servidor, as contagens reais de usuários/grupos/computadores e a política de senha e bloqueio.
    • Detalhes de LSA / DNS. Nome de domínio e floresta DNS, GUID do domínio, SID do domínio e quaisquer relações de confiança — estes frequentemente retornam mesmo quando o próprio SAMR está bloqueado.

    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:

    • Os nomes de usuário que você coleta são sua lista para AS-REP roasting.
    • Os nomes de computador são sua lista para verificações de contas de máquina pré-Windows 2000.

    Como se compara

    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:

    • enum4linux-ng é o equivalente mais próximo: SAMR + LSA de sessão nula, RID cycling, política, usuários e grupos. Se você quer uma ferramenta madura e amplamente usada, use-a. O adnullenum se sobrepõe muito a ela.
    • NetExec (--rid-brute, --users, --pass-pol) cobre a mesma enumeração dentro de um framework muito maior.
    • impacket o distribui como dois scripts: 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.


    Instalação

    Você precisa do Python 3.9+ e de uma biblioteca SMB. Um ambiente virtual mantém tudo organizado:

    root@kitploit:~
    # 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.


    Como usá-lo

    Tudo é executado através de um único --mode. O padrão é recon, que é a coisa segura de executar primeiro.

    ModoO que você obtém
    reconInformaçõ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.
    ridsDescobre quais contas existem e as classifica em usuários / computadores / grupos.
    usersO 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.
    groupsGrupos de domínio e aliases internos com seus membros.
    fullTudo.
    root@kitploit:~
    # 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
    

    Encontrando contas

    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:

    root@kitploit:~
    python3 adnullenum.py 10.0.0.10 --mode rids --range 500-50000
    

    Quando o SAMR está bloqueado

    Alguns DCs recusam completamente o SAMR anônimo (enumdomains e a tradução de RID retornam ACCESS_DENIED). A execução não desiste:

    • O recon de LSA sempre é executado. O nome do domínio, SID e frequentemente a floresta, GUID e relações de confiança vêm de \lsarpc, que frequentemente responde quando o SAMR não responde.
    • O RID cycling pode recorrer ao LSA (opcional). Se o SAMR não traduzir RIDs e você passar --lsa-fallback, a ferramenta repete a mesma varredura sobre o LSA LsarLookupSids usando o SID do domínio, o que ainda fornece o inventário de contas (nomes e tipos, incluindo computadores). Está desativado por padrão porque é uma segunda passagem de força bruta; sem o sinalizador, a execução para no recon e informa isso.
    • Detalhes profundos por usuário e associação a grupos precisam do SAMR. Quando o SAMR está bloqueado, esses estágios são ignorados e anotados; você ainda obtém o inventário de nomes/tipos.
    • Se as consultas LSA também estiverem bloqueadas, a execução degrada para apenas recon (nome do domínio e SID). Em tal alvo, nenhuma ferramenta anônima enumerará as contas.

    Não forçar duas vezes

    Encontrar as contas é a parte lenta, então a ferramenta salva a lista (rids.txt) na pasta de saída de cada execução. Aponte uma execução posterior para essa pasta com --session e ela pula a força bruta e reutiliza o que você já encontrou:

    root@kitploit:~
    python3 adnullenum.py 10.0.0.10 --mode rids
    # -> output/20260917-1530_10.0.0.10_rids/
    
    python3 adnullenum.py 10.0.0.10 --mode users \
        --session output/20260917-1530_10.0.0.10_rids
    

    --session recebe a pasta de uma execução anterior. (--rid-file faz o mesmo a partir de um arquivo de texto simples com um RID por linha.)


    Saída

    Cada execução cria uma pasta com carimbo de data/hora em output/:

    root@kitploit:~
    output/20260917-1530_10.0.0.10_full/
    ├── rids.txt          # the account IDs found (reuse with --session)
    ├── manifest.json     # summary: counts, interesting accounts, run details
    ├── access_denied.txt # only if something was denied/restricted (with a timestamp)
    ├── output
    ├──── lists/          # ready-to-use lists (see below)
    ├──── txt/            # easy to read
    └──── csv/            # easy to grep / open in a spreadsheet
    

    txt e csv são sempre gravados; adicione --json para uma pasta json/ também.

    A pasta lists/ contém dois arquivos simples feitos para alimentar outras ferramentas diretamente:

    • lists/userlist.txt — coloque diretamente em AS-REP roasting, password spraying, ou na lista --users de um quebrador de senhas. No modo users/full ele contém apenas contas habilitadas; no modo rids (sem detalhes por usuário) é todo usuário.
    • lists/computerlist.txt — nomes de contas de máquina com o $ mantido (o sAMAccountName), para verificações de contas de máquina pré-Windows 2000.

    Esqueceu de olhá-los, ou executou apenas rids e agora quer as listas? Aponte para a pasta da execução e elas são reconstruídas a partir dos CSVs, sem necessidade de rede:

    root@kitploit:~
    python3 adnullenum.py --lists-from output/20260917-1530_10.0.0.10_full
    

    Na tela você obtém uma prévia limitada para que um domínio grande não inunde seu terminal (--limit, padrão 100 por seção) — os arquivos sempre têm os dados completos. A cor está ativada quando você está em um terminal; --no-color a desativa.


    Exemplo

    Uma execução full contra um DC de teste (sanitizada). Na tela você obtém o recon, a varredura de RID, o resumo de contas interessantes e a lista de arquivos gravados:

    root@kitploit:~
    $ python3 adnullenum.py 10.0.0.10 --mode full
    [*] Connecting to 10.0.0.10:445 anonymously ...
    [+] SAM domain: CORP (S-1-5-21-1111111111-2222222222-3333333333)
    ...
    [ COUNTS ]
      Users:   43
      Groups:  0
      Aliases: 17
    
    [ PASSWORD POLICY ]
      Min length:       7
      Max age:          42 days
      Properties:       COMPLEX
    
    [*] Bruting RIDs via SAMR (chunk=1000, open-ended 500-100000, stop-after 5000)
    [*] up to RID 1498: 31 resolved, gap=0
    [*] stop: 5000 consecutive empty RIDs (--stop-after 5000)
    [+] Resolved: 5 users, 4 computers, 22 groups, 0 other
    [*] Deep-querying 5 users (skipping 4 computers)
        [!] Administrator (RID 500)  PWD_NEVER_EXPIRES
        [!] Guest (RID 501) (disabled)  PWD_NOT_REQUIRED, PWD_NEVER_EXPIRES
        [!] svc_sql (RID 1104)  ASREP_ROASTABLE
    [+] 5 users: 3 enabled, 2 disabled, 3 interesting (full detail in the users file)
    
    [ FILES WRITTEN in output/20260101-120000_10.0.0.10_full ]
      txt/recon.txt / csv/recon.csv        domain info + password/lockout policy
      txt/inventory.txt / csv/inventory.csv  all resolved accounts
      txt/users.txt / csv/users.csv        full per-user detail
      txt/groups.txt / csv/groups.csv      groups + aliases with members
      rids.txt                             existing RIDs (reuse with --session)
      lists/userlist.txt                   usernames, one per line
      lists/computerlist.txt               machine accounts (with $)
      manifest.json                        run metadata + counts
    

    Um único registro de txt/users.txt (o grupo primário e os grupos diretos são resolvidos para nomes):

    root@kitploit:~
    [+] RID 500
        Enabled:                   True
        SamAccountName:            Administrator
        SID:                       S-1-5-21-1111111111-2222222222-3333333333-500
        Description/AdminComment:  Built-in account for administering the computer/domain
        Last Logon:                2026-09-03 17:58:26+09:00
        Password Last Set:         2026-01-23 05:14:35+09:00
        Primary Group:             Domain Users (513)
        Account Control:           NORMAL_ACCOUNT | PASSWORD_NEVER_EXPIRES
        Logon Count:               92
        Direct Domain Groups:      Domain Users; Administrators; Domain Admins
        >> INTERESTING:            PWD_NEVER_EXPIRES
    

    Fazendo manualmente

    Tudo aqui é SAMR/LSARPC padrão, então você pode extrair os mesmos fatos uma chamada de cada vez com o rpcclient do Samba. Conecte-se anonimamente primeiro:

    root@kitploit:~
    rpcclient -U "" -N 10.0.0.10
    
    Esta ferramentaequivalente no rpcclient
    recon (informações de domínio + contagens)querydominfo
    recon (política de senha)getdompwinfo
    recon (domínio LSA + SID)lsaquery, lsaenumsid
    rids (tradução nome/SID)lookupnames <name>, lookupsids <SID>
    rids (lista do lado do servidor)enumdomusers (apenas usuários padrão — sem contas de máquina $)
    users (detalhes por usuário)queryuser <rid> ou queryuser <name>, querydispinfo
    groupsenumdomgroups, querygroupmem <rid>, enumalsgroups builtin, queryaliasmem builtin <rid>

    enumdomusers retorna contas de usuário padrão apenas por nome; contas de máquina ($) são filtradas, e detalhes completos significam executar queryuser uma conta de cada vez. O rpcclient não tem um loop de RID cycling embutido, então não consegue recuperar as contas de máquina (ou qualquer outra coisa) quando a enumeração do lado do servidor é restrita; você teria que scriptar lookupsids em um intervalo por conta própria. Ele também não tem comando de política de bloqueio e não retorna o LSA DNS/forest/GUID ou relações de confiança, razão pela qual esta ferramenta consulta PolicyDnsDomainInformation diretamente.

    Para equivalentes scriptados e como esta ferramenta se relaciona com eles, veja Como se compara.


    Mitigações

    Se você está do lado azul e quer desativar isto, o caminho anônimo é o que deve ser fechado:

    • Ative "Do not allow anonymous enumeration of SAM accounts" e "…accounts and shares" (as configurações RestrictAnonymousSAM / RestrictAnonymous).
    • Remova Anonymous Logon (e Everyone) do grupo Pre-Windows 2000 Compatible Access. Isto geralmente é o motivo pelo qual o RID cycling de sessão nula funciona em um controlador de domínio.
    • Defina "Let Everyone permissions apply to anonymous users" como Disabled, e restrinja o acesso anônimo a named pipes.
    • Exija assinatura SMB e desative o SMBv1.

    Nada disso impede que um usuário autenticado leia os mesmos dados — isso é normal e esperado. Apenas fecha o caminho sem credenciais.

    Detectando-o

    • Ative a auditoria de objetos SAM/diretório e observe uma rajada de evento 4661 / 4662 (um handle para um objeto SAM ou de diretório) de uma máquina em uma janela curta.
    • Observe muitos logons anônimos (evento 4624, tipo de logon 3, a conta ANONYMOUS LOGON) e atividade no IPC$ (5140 / 5145).
    • O indício é o volume de uma única origem: muitas consultas de ID de conta contra \samr, ou chamadas de política/consulta contra \lsarpc, em pouco tempo.
    • Como --sleep e --jitter podem distribuir as chamadas, alerte sobre a contagem total em uma janela em vez de apenas sobre a taxa.

    Notas

    • Apenas a porta 445 é usada — isto não toca no mapeador de endpoints RPC na 135.
    • Se a tradução de RID do SAMR retornar ACCESS_DENIED, adicione --lsa-fallback para tentar o LSA LsarLookupSids para o inventário (veja "Quando o SAMR está bloqueado"). Se as consultas LSA também estiverem bloqueadas, apenas o recon (nome do domínio + SID) é possível.

    Licença

    MIT. Veja LICENSE.

    Baixar ferramenta