
pyCobaltHound è un'estensione di script Aggressor per Cobalt Strike che mira a fornire una profonda integrazione tra Cobalt Strike e Bloodhound.
pyCobaltHound è un'estensione per script Aggressor per Cobalt Strike che mira a fornire una profonda integrazione tra Cobalt Strike e BloodHound.
pyCobaltHound si impegna ad assistere gli operatori red team:
BloodHound per scoprire percorsi di escalation aperti da credenziali appena raccolte.Per fare ciò, pyCobaltHound utilizza un insieme di query integrate. Gli operatori possono anche aggiungere/rimuovere le proprie query per ottimizzare le capacità di monitoraggio di pyCobaltHound. Questo offre la flessibilità di adattare pyCobaltHound al volo durante gli impegni per tenere conto di obiettivi specifici dell'impegno (utenti, host, ecc.).
Per installare pyCobaltHound clona questo repository. Non dimenticare di clonare anche il sottomodulo incluso!
Puoi usare il seguente comando:
git clone https://github.com/NVISOsecurity/pyCobaltHound.git --recurse-submodulesAssicurati che le seguenti dipendenze siano installate correttamente:
PyCobalt è un'API Python per Cobalt Strike. Espone molte funzioni di Aggressor da utilizzare direttamente da Python.
Assicurati di avere Python3+ installato. Mentre PyCobalt potrebbe funzionare anche su macOS e Windows, lo abbiamo testato principalmente su Linux.
Ci sono due modi per usare la libreria Python PyCobalt:
pyCobaltHound adotta questo approccio, impostando il percorso di ricerca all'interno del programma Python usando la variabile sys.path.PyCobalt. Per farlo, esegui python3 setup.py install. Dovrai modificare pycobalthound.py per assicurarti che usi la libreria installata invece di quella nel repository incluso.PyCobalt venga mantenuto in futuro. In effetti, l'ultimo aggiornamento al progetto è stato per incorporare le modifiche apportate in Cobalt Strike 4.2. Tuttavia, poiché pyCobaltHound utilizza solo funzioni base di Aggressor per interfacciarsi con Cobalt Strike e il suo operatore, questo non è un grosso problema per pyCobaltHound.PyCobalt usato in questo progetto è un fork realizzato da noi. Tuttavia non controlliamo il repository PyCobalt.PyCobalt include alcuni comandi della Script Console per gestire gli script Python in esecuzione. Quando ricarichi il tuo script Aggressor dovresti prima fermare esplicitamente gli script Python. Altrimenti rimarranno in esecuzione per sempre senza fare nulla. Durante lo sviluppo di pyCobaltHound abbiamo notato che questo può anche portare a comportamenti indefiniti.
Il ricaricamento di pyCobaltHound può essere fatto come segue:
aggressor> python-stop-all`
[pycobalt] Asking script to stop: /root/pycobalthound/pycobalthound.py
[pycobalt] Script process exited: /root/pycobalthound/pycobalthound.py
aggressor> reload example.cna`
[pycobalt] Executing script /root/pycobalthound/pycobalthound.py
Per un corretto funzionamento di PyCobalt, puoi chiamare PyCobalt solo in uno script Aggressor. Tienilo a mente se vuoi usare pyCobaltHound insieme ad altri script Aggressor che usano PyCobalt. Il nostro approccio è avere uno script Aggressor con chiamate a python() e include() per ogni strumento basato su PyCobalt.
notify2 è – o era – un pacchetto per mostrare notifiche desktop su Linux. Come vedremo più avanti, pyCobaltHound supporta alcuni modi per notificare l'operatore. notify2 viene usato su Linux per inviare notifiche al demone di notifica tramite D-Bus.
Per abilitarlo, notify2 deve essere installato usando:
pip install notify2
Usare pyCobaltHound in Cobalt Strike è semplice come importare lo script Aggressor pycobalthound.cna nel tuo client. Una volta fatto, dovresti vedere un menu pyCobaltHound apparire nella barra dei menu di Cobalt Strike.

L'obiettivo iniziale di pyCobaltHound era monitorare la cache delle credenziali di Cobalt Strike (View > Credentials) per nuove voci. Lo fa reagendo all'evento on_credentials che Cobalt Strike attiva quando vengono apportate modifiche al credential store.
Quando questo evento viene attivato, pyCobaltHound:
Cobalt StrikeBloodHoundBloodHound per ogni nuova entità utilizzando sia query integrate sia personalizzate.Poiché tutto ciò avviene in modo asincrono rispetto al client principale di Cobalt Strike, questo processo non dovrebbe bloccare la tua interfaccia utente, permettendoti di continuare a lavorare mentre pyCobaltHound indaga in background.
pyCobaltHound utilizza cache separate per ogni teamserver per prevenire problemi quando si usano più teamserver.
A volte ci sono situazioni in cui vorresti investigare nuovamente utenti specifici (o l'intero credential store). Potrebbe essere il caso quando hai caricato nuovi dati nel database di BloodHound.
Poiché pyCobaltHound dovrebbe aver già investigato (e quindi messo in cache) tutte le entità nel tuo credential store, non le valuterà rispetto a questi nuovi dati senza un intervento dell'operatore.
Sono disponibili due metodi per controllare quali entità sono in cache.
Nei casi in cui desideri rimuovere una o più entità specifiche dalla cache, puoi farlo nel visualizzatore delle credenziali (View > Credentials). Basta selezionare i target e cliccare sull'opzione remove from cache sotto la voce di menu pyCobaltHound.

Nei casi in cui desideri rimuovere tutte le entità dalla cache, puoi farlo nel menu principale di pyCobaltHound (Cobalt Strike > pyCobaltHound > Wipe cache). Questo è molto utile quando vuoi rivalutare l'intero credential store.

Dopo aver rimosso i target dalla cache, puoi richiedere manualmente a pyCobaltHound di reinvestigare il contenuto del credential store. Questo segue esattamente lo stesso processo di cui sopra.
pyCobaltHound contiene funzionalità per interagire con sessioni beacon esistenti. Si trovano nel menu contestuale del beacon. Nota che questi comandi possono essere eseguiti su un singolo beacon o su una selezione di beacon.