
Erweitert BloodHound, um Active Directory-Beziehungen von macOS-Hosts zu sammeln und zu erfassen, einschließlich angemeldeter Benutzer, Administratorengruppen, SSH/VNC/AppleEvent-Zugriffskanten für die Angriffspfad-Kartierung.
MacHound ist eine Erweiterung des Bloodhound-Audit-Tools, die das Sammeln und Aufnehmen von Active Directory-Beziehungen auf MacOS-Hosts ermöglicht. MacHound sammelt Informationen über angemeldete Benutzer und Mitglieder von Verwaltungsgruppen auf Mac-Maschinen und nimmt die Informationen in die Bloodhound-Datenbank auf. Zusätzlich zu den Kanten HasSession und AdminTo fügt MacHound drei neue Kanten zur Bloodhound-Datenbank hinzu:
Um mehr über MacHound zu erfahren, lesen Sie den Einführungsbeitrag
MacHound verwendet die utmpx-API, um aktuell aktive Benutzer abzufragen, sowie OpenDirectory und die Mitgliedschafts-API, um Active Directory-Benutzer zu validieren.
MacHound sammelt Active Directory-Mitglieder der folgenden lokalen Verwaltungsgruppen:
Die lokale Verwaltungsgruppe, die Root-Operationen ermöglicht.
Mitglieder dieser lokalen Gruppe dürfen auf den Remote-Anmeldedienst (SSH) zugreifen.
Mitglieder dieser lokalen Gruppe dürfen AppleEvent-Skripte remote ausführen.
Mitglieder dieser lokalen Gruppe dürfen auf den Bildschirmfreigabedienst (VNC) zugreifen.
MacHound ist in zwei Hauptkomponenten unterteilt: den Collector und den Ingestor.
Der MacHound-Collector ist ein Python3.7-Skript, das lokal auf MacOS-Hosts ausgeführt wird, die Active Directory beigetreten sind. Der Collector fragt das lokale OpenDirectory und das Active Directory nach Informationen über privilegierte Benutzer und Gruppen ab. Die Ausgabe der Ausführung ist eine JSON-Datei, die alle gesammelten Informationen enthält.
Der MacHound-Ingestor ist ein Python3.7-Skript, das die ausgegebenen JSON-Dateien (eine pro Host) parst, eine Verbindung zur neo4j-Datenbank herstellt und die Kanten in die Datenbank einfügt. Der Ingestor verwendet die neo4j-Bibliothek für Python, um Informationen von und zur neo4j-Datenbank abzufragen. Der Ingestor muss auf einem Host ausgeführt werden, der TCP-Zugriff auf die neo4j-Datenbank hat.
MacHound erfordert Python3.7. Der Ingestor erfordert die neo4j-Bibliothek für Python3.7.
Der Collector sollte lokal auf Macs bereitgestellt und ausgeführt werden. Die Ausgabe wird lokal gespeichert und muss zum Host, der den Ingestor ausführt, übertragen werden. Der Collector ist auf die integrierten Bibliotheken in Python3.7 angewiesen und erfordert keine zusätzlichen Installationen. MacHound kann mithilfe der py2app-Bibliothek als Anwendung kompiliert werden, um die Bereitstellung zu erleichtern.
Der Collector nimmt standardmäßig keine Argumente entgegen, fragt alle Informationen ab und schreibt die Ausgabedatei in ./output.json. Der Collector muss als Root-Benutzer ausgeführt werden.
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
Der Ingestor sollte auf einem Host bereitgestellt werden, der eine direkte TCP-Verbindung zur Bloodhound-neo4j-Datenbank hat, vorzugsweise lokal auf dem neo4j-Datenbankserver, um Sicherheitsrisiken zu vermeiden. Der Ingestor erfordert die Installation des neo4j-Treibers für Python (siehe Anforderungsdatei).
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
MacHound wird unter der GPL-3.0-Lizenz veröffentlicht. Weitere Details finden Sie in der LICENSE.md-Datei.
Bei Fragen, Anregungen oder Fehlermeldungen können Sie uns gerne unter [email protected] kontaktieren.