
Estende BloodHound per raccogliere e acquisire relazioni di Active Directory da host macOS, inclusi utenti connessi, gruppi di amministratori, edge di accesso SSH/VNC/AppleEvent per la mappatura dei percorsi di attacco.
MacHound è un'estensione dello strumento di auditing Bloodhound che consente di raccogliere e ingerire le relazioni di Active Directory su host MacOS. MacHound raccoglie informazioni sugli utenti connessi e sui membri dei gruppi amministrativi su macchine Mac e inserisce le informazioni nel database di Bloodhound. Oltre a utilizzare i bordi HasSession e AdminTo, MacHound aggiunge tre nuovi bordi al database di Bloodhound:
Per saperne di più su MacHound, consulta il post introduttivo
MacHound utilizza l'API utmpx per interrogare gli utenti attualmente attivi e le API OpenDirectory e di appartenenza per convalidare gli utenti di Active Directory.
MacHound raccoglie i membri di Active Directory dei seguenti gruppi amministrativi locali:
Il gruppo amministrativo locale, che consente operazioni da root.
I membri di questo gruppo locale sono autorizzati ad accedere al servizio di login remoto (SSH).
I membri di questo gruppo locale sono autorizzati a eseguire script AppleEvent in remoto.
I membri di questo gruppo locale sono autorizzati ad accedere al servizio di condivisione dello schermo (VNC)
MacHound è suddiviso in due componenti principali: il collector e l'ingestor.
Il collector di MacHound è uno script Python3.7 che viene eseguito localmente su host MacOS uniti ad Active Directory. Il collector interroga OpenDirectory locale e Active Directory per informazioni su utenti e gruppi privilegiati. L'output dell'esecuzione è un file JSON che contiene tutte le informazioni raccolte.
L'ingestor di MacHound è uno script Python3.7 che analizza i file JSON di output (uno per host), si connette al database neo4j e inserisce i bordi nel database. L'ingestor utilizza la libreria neo4j per Python per interrogare informazioni da e verso il database neo4j. L'ingestor deve essere eseguito su un host che abbia accesso TCP al database neo4j.
MacHound richiede Python3.7. L'ingestor richiede la libreria neo4j per Python3.7.
Il Collector dovrebbe essere distribuito ed eseguito localmente sui Mac. L'output viene memorizzato localmente e deve essere trasferito all'host che esegue l'ingestor. Il collector dipende dalle librerie integrate di Python3.7 e non richiede installazioni aggiuntive. MacHound può essere compilato come Applicazione utilizzando la libreria py2app per semplificare la distribuzione.
Il Collector non accetta argomenti di default, interroga tutte le informazioni e scrive il file di output in ./output.json. Il Collector deve essere eseguito come utente root.
collector.py -o <file_output> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l percorso_file_log]
L'Ingestor dovrebbe essere distribuito su un host che abbia una connessione TCP diretta al database neo4j di Bloodhound, preferibilmente localmente sul server del database neo4j per evitare rischi di sicurezza. L'ingestor richiede l'installazione del driver neo4j per Python (vedi file dei requisiti).
ingestor.py <url_neo4j> -u <nome_utente> -p <password> -i <cartella_json>
MacHound è rilasciato sotto la licenza GPL-3.0. Per maggiori dettagli vedere LICENSE.md.
Per qualsiasi domanda, suggerimento, segnalazione di bug, non esitare a contattarci all'indirizzo [email protected]