
Ferramenta para explorar automaticamente caminhos de escalada de privilégios do Active Directory mostrados pelo BloodHound
autobloodyautobloody é uma ferramenta para explorar automaticamente caminhos de elevação de privilégio do Active Directory mostrados pelo BloodHound.
Esta ferramenta automatiza a elevação de privilégio entre dois objetos do AD, a origem (aquele que possuímos) e o destino (aquele que queremos), se existir um caminho de privesc na base de dados do BloodHound. A automação é composta por dois passos:
bloodyADComo o autobloody depende do bloodyAD, ele suporta autenticação usando senhas em texto claro, pass-the-hash, pass-the-ticket ou certificados e liga-se aos serviços LDAP de um controlador de domínio para realizar privesc no AD.
Um pacote python está disponível:
pip install autobloody
Ou você pode clonar o repositório:
git clone --depth 1 https://github.com/CravateRouge/autobloody
pip install .
Para melhor desempenho, é recomendado ter a biblioteca GDS instalada no Neo4j. Sem ela, o autobloody usará consultas CYPHER nativas que são mais lentas mas ainda funcionais.
Um ambiente bloodhound leve com o plugin GDS pode ser instalado executando ./bloodhound-ce a partir de https://github.com/CravateRouge/Single-User-BloodHound.
Primeiro, os dados devem ser importados para o BloodHound (ex: usando SharpHound ou BloodHound.py) e o Neo4j deve estar em execução.
⚠️ Os valores de -ds e -dt diferenciam maiúsculas de minúsculas
Uso simples:
autobloody -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds '[email protected]' -dt 'BLOODY.LOCAL'
Ajuda completa:
[bloodyAD]$ ./autobloody.py -h
usage: autobloody.py [-h] [--dburi DBURI] [-du DBUSER] -dp DBPASSWORD -ds DBSOURCE -dt DBTARGET [-d DOMAIN] [-u USERNAME] [-p PASSWORD] [-k] [-c CERTIFICATE] [-s] --host HOST [-y] [-v] [--timeout TIMEOUT]
AD Privesc Automation
options:
-h, --help show this help message and exit
--dburi DBURI The host neo4j is running on (default is "bolt://localhost:7687")
-du DBUSER, --dbuser DBUSER
Neo4j username to use (default is "neo4j")
-dp DBPASSWORD, --dbpassword DBPASSWORD
Neo4j password to use
-ds DBSOURCE, --dbsource DBSOURCE
Case sensitive label of the source node (name property in bloodhound)
-dt DBTARGET, --dbtarget DBTARGET
Case sensitive label of the target node (name property in bloodhound)
-d DOMAIN, --domain DOMAIN
Domain used for NTLM authentication (optional, default is dbsource domain)
-u USERNAME, --username USERNAME
Username used for NTLM authentication (optional, default is dbsource sAMAccountName)
-p PASSWORD, --password PASSWORD
Cleartext password or LMHASH:NTHASH for NTLM authentication
-k, --kerberos
-c CERTIFICATE, --certificate CERTIFICATE
Certificate authentication, e.g: "path/to/key:path/to/cert"
-s, --secure Try to use LDAP over TLS aka LDAPS (default is LDAP)
--host HOST Hostname or IP of the DC (ex: my.dc.local or 172.16.1.3)
-y, --yes Assume yes to apply the generated privesc
-v, --verbose Enable verbose output (-v for INFO, -vv for DEBUG)
--timeout TIMEOUT Connection timeout in seconds (default is 60)
Primeiro, um caminho de privesc é encontrado usando o algoritmo de Dijkstra implementado na biblioteca GDS do Neo4j. O algoritmo de Dijkstra permite resolver o problema do caminho mais curto num grafo ponderado. Por predefinição, as arestas criadas pelo BloodHound não têm peso, mas sim um tipo (ex: MemberOf, WriteOwner). Um peso é então adicionado a cada aresta de acordo com o tipo de aresta e o tipo de nó alcançado (ex: utilizador, grupo, domínio).
Uma vez gerado um caminho, o autobloody liga-se ao DC e executa o caminho, limpando o que é reversível (tudo exceto ForcePasswordChange e setOwner).
Por enquanto, apenas as seguintes arestas do BloodHound são suportadas para exploração automática:
Gostou deste projeto? Doações são bem-vindas
Precisa de apoio personalizado? Envie-me um email para formações ou funcionalidades personalizadas.