
Analisa snapshots do AD Explorer em JSON ou NDJSON compatível com BloodHound para reconhecimento de Active Directory e mapeamento de caminhos de ataque.
ADExplorerSnapshot.py é um parser de snapshot do AD Explorer. Ele foi feito como um ingestor para o BloodHound via BOFHound, e também suporta a exportação completa de objetos para NDJSON.
O AD Explorer permite que você se conecte a um DC e navegue pelos dados LDAP. Ele também pode criar snapshots do servidor ao qual você está atualmente conectado. Esta ferramenta permite converter esses snapshots para o formato BOFHound ou para arquivos JSON compatíveis com BloodHound, ou exportar todos os objetos disponíveis no snapshot para NDJSON para facilitar o processamento.

No modo de saída BOFHound, todos os atributos de cada objeto são analisados e exportados para o formato BOFHound (semelhante ao LDIF). Este formato pode então ser processado com o BOFHound:
No modo de saída Objects, todos os atributos de cada objeto são analisados e exportados para o formato NDJSON.
No modo de saída BloodHound (depreciado em favor da conversão mais completa do BOFHound):
Os snapshots do AD Explorer contêm apenas informações que podem ser recuperadas do servidor LDAP. Isso significa que recursos como coleta de sessão e admin local não estão disponíveis, pois esta ferramenta não interage com sistemas na rede. Você terá apenas os dados disponíveis do LDAP/DC contra o qual executou o snapshot.
No modo BOFHound, todos os dados são convertidos para o formato BOFHound, sendo a abordagem de coleta mais completa.
No modo BloodHound, o ingestor processa todos os dados que pode do snapshot (incluindo ACLs), mas irá gerar apenas os dados JSON que podem ser interpretados pelo BloodHound. A coleta de GPO/UO está ausente.
A coleção de Relações de Confiança contém a visão conforme visível a partir do DC LDAP ao qual você está conectado.
ADExplorerSnapshot.py suporta Python 3.12+. As dependências são gerenciadas via pip.
Você pode executar a ferramenta diretamente com uvx (se não tiver: pip install uvx).
uvx git+https://github.com/c3c/ADExplorerSnapshot
usage: ADExplorerSnapshot.py [-h] [-o OUTPUT] [-m {BOFHound,BloodHound,Objects}] snapshot
AD Explorer snapshot ingestor for BloodHound
positional arguments:
snapshot Path to the snapshot .dat file.
options:
-h, --help show this help message and exit
-o, --output OUTPUT Path to the *.json output folder. Folder will be created if it doesn't exist. Defaults to the current directory.
-m, --mode {BOFHound,BloodHound,Objects}
The output mode to use. Defaults to BOFHound output mode, which can then be used with BOFHound. Can also directly output to BloodHound JSON output files (with limitations). In Objects
mode all objects with all attributes are outputted to NDJSON.
O modo de saída BOFHound é o modo de saída preferido. Você pode então usar a ferramenta BOFHound para ingerir os dados no BloodHound.
Invocação típica:
uvx git+https://github.com/c3c/ADExplorerSnapshot -m BOFHound snapshot.dat
uvx bofhound -i ./dc.server.com_1234567890_bofhound.log -o output


Os modelos de certificado podem ser importados no formato BloodHound ou no formato BloodHound-ly4k.
Se você usar a versão regular do BloodHound, deve importar apenas o arquivo JSON cert_bh (que são importados como GPOs).
Se usar o fork do ly4k, importe os arquivos cert_ly4k em vez disso. Algumas informações serão omitidas (por exemplo, sobre ESC8 se o Registro na Web está ativado), pois não podem ser coletadas com o AD Explorer.
Fazer snapshots no AD Explorer consome mais rede do que os ingestores tradicionais do BloodHound, pois tenta recuperar todos os objetos que pode do LDAP.
ADExplorerSnapshot.py criará caches de informações para consultas mais rápidas durante o processamento dos dados. Especialmente ao processar snapshots grandes (por exemplo, 4 GB+), você também precisará de RAM suficiente disponível. Nos meus testes, cerca de metade do tamanho do arquivo do snapshot era necessária em RAM.
A biblioteca foi testada com diversos conjuntos de dados; por favor, crie um relatório de problema se encontrar problemas.
O parser de snapshot do AD Explorer é implementado como seu próprio módulo, que também pode ser usado individualmente.
O formato no qual os snapshots são armazenados pelo AD Explorer é proprietário e resultou em uma divertida jornada de engenharia reversa. Um modelo de editor 010 está incluído neste repositório, que usei para mapear iterativamente o conteúdo do snapshot em estruturas.
Para o modo de saída BloodHound, esta biblioteca suporta o formato de saída BloodHound v6. Versões mais antigas eram suportadas em commits anteriores, se você ainda precisar delas. Para o formato de saída antigo v3, você pode usar o código no branch v3-format.
Em uma nota relacionada ao OPSEC, o AD Explorer é uma ferramenta legítima da Microsoft. Ao executar um snapshot, apenas consultas limitadas são feitas ao servidor LDAP (objectGuid=*). No entanto, o conjunto de resultados é enorme, pois todos os objetos e seus atributos associados são recuperados. Isso resulta em uma saída bastante volumosa.
A detecção desta ferramenta é possível de várias maneiras, para as quais remeto ao excelente post do blog da FalconForce: FalconFriday — Detecting Active Directory Data Collection — 0xFF21.
Este código está licenciado sob a licença MIT e faz uso de código também licenciado sob a licença MIT.
ADExplorerSnapshot.py depende dos seguintes projetos:
Créditos:
Agradecimentos à Deloitte por fornecer o ambiente no qual esta ferramenta foi desenvolvida.