
Extiende BloodHound para recopilar e ingerir relaciones de Active Directory desde hosts macOS, incluyendo usuarios conectados, grupos de administración, bordes de acceso SSH/VNC/AppleEvent para mapeo de rutas de ataque.
MacHound es una extensión de la herramienta de auditoría Bloodhound que permite recopilar e ingerir relaciones de Active Directory en hosts MacOS. MacHound recopila información sobre usuarios conectados y miembros de grupos administrativos en máquinas Mac e ingiere la información en la base de datos de Bloodhound. Además de usar los bordes HasSession y AdminTo, MacHound añade tres nuevos bordes a la base de datos de Bloodhound:
Para leer más sobre MacHound, consulte la publicación de introducción
MacHound utiliza la API utmpx para consultar usuarios activos actualmente y OpenDirectory y la API de membresía para validar usuarios de Active Directory.
MacHound recopila miembros de Active Directory de los siguientes grupos administrativos locales:
El grupo administrativo local, que permite operaciones como root.
Los miembros de este grupo local tienen permitido acceder al servicio de inicio de sesión remoto (SSH).
Los miembros de este grupo local tienen permitido ejecutar scripts de AppleEvent de forma remota.
Los miembros de este grupo local tienen permitido acceder al servicio de compartir pantalla (VNC)
MacHound se divide en dos componentes principales: el recolector y el ingestador.
El recolector de MacHound es un script de Python3.7 que se ejecuta localmente en hosts MacOS unidos a Active Directory. El recolector consulta el OpenDirectory local y el Active Directory para obtener información sobre usuarios y grupos privilegiados. La salida de la ejecución es un archivo JSON que contiene toda la información recopilada.
El ingestador de MacHound es un script de Python3.7 que analiza los archivos JSON de salida (uno por host), se conecta a la base de datos neo4j e inserta los bordes en la base de datos. El ingestador utiliza la biblioteca neo4j para Python para consultar información hacia y desde la base de datos neo4j. El ingestador debe ejecutarse en un host que tenga acceso TCP a la base de datos neo4j.
MacHound requiere Python3.7. El ingestador requiere la biblioteca neo4j para Python3.7.
El recolector debe desplegarse y ejecutarse localmente en Macs. La salida se almacena localmente y debe transferirse al host que ejecuta el ingestador. El recolector depende de las bibliotecas integradas de Python3.7 y no requiere instalaciones adicionales. MacHound puede compilarse como una aplicación usando la biblioteca py2app para facilitar el despliegue.
El recolector no toma argumentos, por defecto consulta toda la información y escribe el archivo de salida en ./output.json. El recolector debe ejecutarse como usuario root.
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
El ingestador debe desplegarse en un host que tenga conexión TCP directa a la base de datos neo4j de Bloodhound, preferiblemente localmente en el servidor de la base de datos neo4j para evitar riesgos de seguridad. El ingestador requiere la instalación del controlador neo4j para Python (consulte el archivo de requisitos).
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
MacHound se publica bajo la Licencia GPL-3.0. Para más detalles, consulte LICENSE.md.
Para cualquier pregunta, sugerencia, reporte de error, no dude en contactar a [email protected]