
Conjunto de ferramentas para o BloodHound que permite auditoria de senhas de domínio, análise de caminhos de privilégio, manipulação de arestas e consultas Cypher personalizadas para maximizar o mapeamento da superfície de ataque do Active Directory.
Novo lançamento:
Um conjunto simples de ferramentas:
Isso foi lançado com capturas de tela e casos de uso nos seguintes blogs: Max Release, Updates & Primitives e DPAT
Uma nova primitiva de ataque potencial foi adicionada a esta ferramenta durante minha pesquisa, consulte a seção add-spns para mais detalhes.
Idealmente não deve haver muito para instalar, mas incluí um arquivo requirements.txt caso necessário. Testado no Kali Linux e Windows 10, todas as funcionalidades devem funcionar tanto em sistemas operacionais Linux quanto Windows.
pip3 install -r requirements.txt
As credenciais do Neo4j podem ser codificadas no início do script, fornecidas como argumentos de CLI, ou armazenadas como variáveis de ambiente. Se algum parâmetro for deixado em branco, você será solicitado a fornecer o nome de usuário/senha. Para usar variáveis de ambiente, provavelmente é mais fácil adicionar uma linha (por exemplo, export NEO4J_USERNAME='neo4j') dentro de ~/.bashrc ou ~/.zshrc para armazenar o nome de usuário, já que não é realmente sensível. A senha do banco de dados pode ser definida na aba do seu shell antes de executar o Max. Adicionar um espaço antes do comando export deve impedir que ele apareça no histórico.
export NEO4J_PASSWORD='bloodhound' # Notice whitespace before 'export'
python3 max.py {module} {args}
python3 max.py -u neo4j -p neo4j {module} {args}
python3 max.py {module} {args}
Neo4j Username: neo4j
Neo4j Password:
Obtendo ajuda em geral e específica do módulo
python3 max.py -h
python3 max.py {module} -h
Importando objetos marcados como Owned no BH
python3 max.py mark-owned -f owned.txt
python3 max.py mark-owned -f owned.txt --add-note "Owned by repeated local admin"
Obter lista de usuários
python3 max.py get-info --users
python3 max.py get-info --users --enabled
[email protected]
[email protected]
...
Obter lista de objetos em um grupo alvo
python3 max.py get-info --group-members "domain [email protected]"
Obter uma lista de computadores aos quais um usuário tem direitos administrativos
python3 max.py get-info --adminto [email protected]
Obter uma lista de objetos marcados como Owned com as notas de cada um
python3 max.py get-info --owned --get-note
Executando uma consulta - retornar uma lista de todos os usuários com um caminho para DA
python3 max.py query -q "MATCH (n:User),(m:Group {name:'DOMAIN [email protected]'}) MATCH (n)-[*1..]->(m) RETURN DISTINCT(n.name)"
Excluir uma aresta do banco de dados
python3 max.py del-edge CanRDP
Adicionar relacionamento HasSPNConfigured usando as informações armazenadas no BloodHound, ou com um arquivo GetUserSPNs do impacket
python3 max.py add-spns -b
python3 max.py add-spns -i getuserspns-raw-output.txt
DPAT
python3 max.py dpat -n ~/client/ntds.dit -c ~/.hashcat/hashcat.potfile -o ouputdir --html --sanitize
Pet max
python3 max.py pet-max
Objetos no arquivo devem conter FQDN, a capitalização não importa. Isso também se aplica sempre que um nome de usuário/nome de computador é fornecido via CLI.
[email protected] <- will be added / correct CLI input
[email protected] <- will be added / correct CLI input
computer01.domain.local <- will be added / correct CLI input
ComPutEr01.doMAIn.LOcaL <- will be added / correct CLI input
user02 <- will not be added / incorrect CLI input
computer02 <- will not be added / incorrect CLI input
Espero incluir uma função analyze para fornecer algum tipo de funcionalidade semelhante ao PlumHound/Cypheroth. Por último, estou pensando em criar uma versão em Powershell para aqueles que executam o Neo4j no Windows, mas sou péssimo em Powershell, então a definir.
Quaisquer outros recursos e melhorias são bem-vindos, me encontre @knavesec no canal do Slack BloodHoundGang e no Twitter
Gostaria de agradecer especialmente àqueles que contribuíram com seu tempo para desenvolver e melhorar esta ferramenta: