
Extende o BloodHound para coletar e ingerir relacionamentos do Active Directory a partir de hosts macOS, incluindo usuários logados, grupos de administradores, arestas de acesso SSH/VNC/AppleEvent para mapeamento de caminhos de ataque.
MacHound é uma extensão da ferramenta de auditoria Bloodhound que permite coletar e ingerir relacionamentos do Active Directory em hosts MacOS. O MacHound coleta informações sobre usuários logados e membros de grupos administrativos em máquinas Mac e ingere essas informações no banco de dados do Bloodhound. Além de usar as arestas HasSession e AdminTo, o MacHound adiciona três novas arestas ao banco de dados do Bloodhound:
Para ler mais sobre o MacHound, consulte o post de introdução
O MacHound usa a API utmpx para consultar usuários ativos atualmente e a API OpenDirectory e de associação para validar usuários do Active Directory.
O MacHound coleta membros do Active Directory dos seguintes grupos administrativos locais:
Os grupos administrativos locais, permitindo operações de root.
Membros deste grupo local têm permissão para acessar o serviço de login remoto (SSH).
Membros deste grupo local têm permissão para executar scripts AppleEvent remotamente.
Membros deste grupo local têm permissão para acessar o serviço de compartilhamento de tela (VNC)
O MacHound é dividido em dois componentes principais: o coletor e o injetor.
O coletor do MacHound é um script Python3.7 que é executado localmente em hosts MacOS associados ao Active Directory. O coletor consulta o OpenDirectory local e o Active Directory para obter informações sobre usuários e grupos privilegiados. A saída da execução é um arquivo JSON que contém todas as informações coletadas.
O injetor do MacHound é um script Python3.7 que analisa os arquivos JSON de saída (um por host), conecta-se ao banco de dados neo4j e insere as arestas no banco de dados. O injetor usa a biblioteca neo4j para Python para consultar informações de e para o banco de dados neo4j. O injetor deve ser executado em um host que tenha acesso TCP ao banco de dados neo4j.
O MacHound requer Python3.7. O injetor requer a biblioteca neo4j para Python3.7.
O Coletor deve ser implantado e executado localmente em Macs. A saída é armazenada localmente e precisa ser transferida para o host que executa o injetor. O coletor depende de bibliotecas internas do Python3.7 e não requer instalações adicionais. O MacHound pode ser compilado como um Aplicativo usando a biblioteca py2app para facilitar a implantação.
O Coletor não recebe argumentos por padrão, consulta todas as informações e grava o arquivo de saída em ./output.json. O Coletor deve ser executado como usuário root.
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
O Injetor deve ser implantado em um host que tenha conexão TCP direta com o banco de dados neo4j do Bloodhound, preferencialmente localmente no servidor do banco de dados neo4j para evitar riscos de segurança. O injetor requer a instalação do driver neo4j para Python (consulte o arquivo de requisitos).
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
O MacHound é lançado sob a Licença GPL-3.0. Para mais detalhes, veja LICENSE.md.
Para qualquer dúvida, sugestão, relato de bug, sinta-se à vontade para entrar em contato em [email protected]