
Étend BloodHound pour collecter et ingérer les relations Active Directory depuis des hôtes macOS, y compris les utilisateurs connectés, les groupes d'administration, les arêtes d'accès SSH/VNC/AppleEvent pour la cartographie des chemins d'attaque.
MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingérer les relations Active Directory sur les hôtes MacOS. MacHound collecte des informations sur les utilisateurs connectés et les membres des groupes administratifs sur les machines Mac et ingère ces informations dans la base de données Bloodhound. En plus d'utiliser les arêtes HasSession et AdminTo, MacHound ajoute trois nouvelles arêtes à la base de données Bloodhound :
Pour en savoir plus sur MacHound, consultez l'article d'introduction
MacHound utilise l'API utmpx pour interroger les utilisateurs actifs et les API OpenDirectory et d'appartenance pour valider les utilisateurs Active Directory.
MacHound collecte les membres Active Directory des groupes administratifs locaux suivants :
Le groupe administratif local, permettant les opérations root.
Les membres de ce groupe local sont autorisés à accéder au service de connexion à distance (SSH).
Les membres de ce groupe local sont autorisés à exécuter à distance des scripts AppleEvent.
Les membres de ce groupe local sont autorisés à accéder au service de partage d'écran (VNC)
MacHound est divisé en deux composants principaux : le collecteur et l'ingesteur.
Le collecteur MacHound est un script Python3.7 qui s'exécute localement sur les hôtes MacOS joints à Active Directory. Le collecteur interroge l'OpenDirectory local et l'Active Directory pour obtenir des informations sur les utilisateurs et groupes privilégiés. La sortie de l'exécution est un fichier JSON contenant toutes les informations collectées.
L'ingesteur MacHound est un script Python3.7 qui analyse les fichiers JSON de sortie (un par hôte), se connecte à la base de données neo4j et insère les arêtes dans la base de données. L'ingesteur utilise la bibliothèque neo4j pour Python pour interroger et envoyer des informations à la base de données neo4j. L'ingesteur doit être exécuté sur un hôte ayant un accès TCP à la base de données neo4j.
MacHound nécessite Python3.7. L'ingesteur nécessite la bibliothèque neo4j pour Python3.7.
Le collecteur doit être déployé et exécuté localement sur les Macs. La sortie est stockée localement et doit être transférée vers l'hôte exécutant l'ingesteur. Le collecteur dépend des bibliothèques intégrées de Python3.7 et ne nécessite pas d'installations supplémentaires. MacHound peut être compilé en une application à l'aide de la bibliothèque py2app pour faciliter le déploiement.
Le collecteur ne prend aucun argument par défaut, interroge toutes les informations et écrit le fichier de sortie dans ./output.json. Le collecteur doit être exécuté en tant qu'utilisateur root.
collector.py -o <fichier_sortie> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l chemin_fichier_log]
L'ingesteur doit être déployé sur un hôte ayant une connexion TCP directe à la base de données neo4j de Bloodhound, de préférence localement sur le serveur de base de données neo4j pour éviter les risques de sécurité. L'ingesteur nécessite l'installation du pilote neo4j pour Python (voir le fichier requirements).
ingestor.py <url_vers_neo4j> -u <nom_utilisateur> -p <mot_de_passe> -i <dossier_json>
MacHound est publié sous licence GPL-3.0. Pour plus de détails, voir LICENSE.md.
Pour toute question, suggestion, rapport de bug, n'hésitez pas à nous contacter à [email protected]