
Um ingestor baseado em Python para o BloodHound
Eu precisava do BloodHound com suporte a Kerberos e encontrei este comentário. Acontece que existia um branch com suporte a autenticação Kerberos o tempo todo! Tomei a liberdade de mesclar esse branch ao master para obter as exportações BloodHound 4.2+. Todo o crédito vai para as pessoas que realmente escreveram o código:)
Como dito pelo próprio Sr. Dirkjan, isso "precisa de mais trabalho e testes". Pode não funcionar em todos os casos, então por favor relate qualquer problema que você encontrar e podemos tentar corrigi-los. Talvez um dia possamos enviar isso como um PR para o repositório principal.
$ python3 /opt/BloodHound.py/bloodhound.py -u redacted -k -d absolute.htb -dc dc.absolute.htb -ns 10.129.202.227 --dns-tcp --zip -no-pass -c All
INFO: Found AD domain: absolute.htb
INFO: Using TGT from cache
INFO: Found TGT with correct principal in ccache file.
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 18 users
INFO: Found 55 groups
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.absolute.htb
INFO: Ignoring host dc.absolute.htb since its reported name does not match
INFO: Done in 00M 02S
INFO: Compressing output into 20220926135518_bloodhound.zip
Se você receber erros de DNS, pode tentar apontar o DNS para você mesmo com -ns 127.0.0.1 enquanto executa o dnschef:
python3 dnschef.py --fakeip <dc ip> --fakedomains <domain> -q
BloodHound.py é um ingestor baseado em Python para o BloodHound, baseado no Impacket.
Esta versão do BloodHound.py é compatível apenas com BloodHound 4.2 ou mais recente. Para a faixa 3.x, use a versão 1.1.1 via pypi. A partir da versão 1.3, o BloodHound.py suporta apenas Python 3; Python 2 não é mais testado e pode quebrar no futuro.
O BloodHound.py atualmente possui as seguintes limitações:
Você pode instalar o ingestor via pip com pip install bloodhound, ou clonando este repositório e executando python setup.py install, ou com pip install ..
O BloodHound.py requer impacket, ldap3 e dnspython para funcionar.
A instalação adicionará a ferramenta de linha de comando bloodhound-python ao seu PATH.
Para usar o ingestor, no mínimo você precisará de credenciais do domínio no qual está fazendo login.
Você precisará especificar a opção -u com um nome de usuário deste domínio (ou username@domain para um usuário em um domínio confiável). Se o seu DNS estiver configurado corretamente e o domínio do AD estiver na sua lista de pesquisa DNS, o BloodHound.py detectará automaticamente o domínio para você. Se não, você terá que especificá-lo manualmente com a opção -d.
Por padrão, o BloodHound.py consultará o LDAP e os computadores individuais do domínio para enumerar usuários, computadores, grupos, trusts, sessões e administradores locais.
Se você quiser restringir a coleta, especifique o parâmetro --collectionmethod, que suporta as seguintes opções (semelhante ao SharpHound):
Vários collectionmethods devem ser separados por vírgula, por exemplo: -c Group,LocalAdmin
Você pode substituir algumas das opções de detecção automática, como o nome do host do Controlador de Domínio primário, se quiser usar um Controlador de Domínio diferente com -dc, ou especificar seu próprio Catálogo Global com -gc.
docker build -t bloodhound .docker run -v ${PWD}:/bloodhound-data -it bloodhoundbloodhound-python dentro do container; todos os dados serão armazenados no caminho a partir do qual você iniciou o container.