Beacon Health Check Aggressor Script
Joe Vest (Twitter: @joevest)
Beschreibung
Dieses Aggressor-Skript nutzt das Notizfeld eines Beacons, um den Gesundheitsstatus des Beacons anzuzeigen. Dies geschieht durch ...
- Verfolgen der aktuellen Sleep-/Jitter-Zeit jedes Beacons
- Berechnung des Gesundheitsstatus basierend auf einer „maximal erwarteten Check-in-Zeit“
- Aktualisieren des Notizfeldes mit einem passenden Symbol jede Minute mittels des Ereignisses
heartbeat_1m
- Kennzeichnen neuer Beacons als „NEW“ mit der Ankunftszeit
- Hinzufügen der Beacon-ID und PID zur anfänglichen Ereignisprotokollmeldung des Beacons
Demo
Demo auf YouTube
Gesundheitschecks und Symbole
☑ - Symbol zeigt an, dass der Beacon aktiv und funktionsfähig ist
Berechnet als letzter Check-in kleiner als die maximal erwartete Check-in-Zeit (sleep + (sleep * .01 * jitter))
z. B. Ein Beacon mit sleep 300 20 hätte eine maximal erwartete Check-in-Zeit von 360, berechnet als 300 + (300 * .01 * 20).
💀 - Symbol zeigt an, dass der Beacon gestorben ist
Berechnet als letzter Check-in-Zeitpunkt größer als die maximal erwartete Check-in-Zeit * 2. Dies wird als „Dead Time“ bezeichnet.
z. B. Ein Beacon mit sleep 300 20 hätte eine Dead Time von 720.
❎ - Symbol zeigt an, dass der Beacon von einem Operator beendet wurde.
Wenn beacon['alive'] falsch ist, dann hat ein Operator diesen Beacon beendet/verlassen und der Beacon hat den Exit-Befehl bestätigt.
⚠ - Symbol zeigt an, dass der Beacon im Sterben liegt
Berechnet als letzter Check-in größer als die maximal erwartete Check-in-Zeit und kleiner als die Dead Time.
⏸ - Symbol zeigt an, dass der Beacon pausiert ist.
Dies ist ein verknüpfter Beacon, der getrennt wurde, aber noch als aktiv gilt. Diese Beacons sind für die Kommunikation von einem übergeordneten Beacon abhängig. Anstatt sie als tot zu markieren, werden sie als pausiert markiert. Es gibt keine gute Möglichkeit, Prozesse getrennter Beacons zu verfolgen.
Das Folgende zeigt, wie diese Symbole im Cobalt Strike-Client aussehen.

Die Beacon-ID und PID wurden zur anfänglichen Ereignisprotokollmeldung des Beacons hinzugefügt.

Verwendung
Laden Sie die Datei beaconhealth.cna über den Skript-Manager.
Verwenden Sie die Funktion get_BeaconHealthCheck_settings in der Skriptkonsole, um den Beacon-Sleep/Jitter-Tracker anzuzeigen.
Was Sie über das Skript wissen sollten
- Es verwendet das Notizfeld. Sie können es nach Belieben bearbeiten. Das erste Zeichen der Notiz wird während eines Gesundheitschecks mit dem entsprechenden Symbol aktualisiert.
- Verknüpfte Beacons haben keinen Sleep. Sleeps werden vom übergeordneten Beacon des verknüpften Beacons verfolgt.
- Sleep-Einstellungen werden vor der Verfolgung nicht überprüft. Das Setzen von Sleep auf einem toten Beacon kann dazu führen, dass sich das Symbol ändert, bevor der eigentliche Sleep vom Beacon verarbeitet wurde.
- Der Gesundheitscheck ist für die Überwachung länger laufender Beacons ausgelegt.
- Der Gesundheitsstatus wird jede Minute gemessen
- Dies kann immer noch zu aggressiv sein
- Sie können die Zeiteinstellung anpassen, indem Sie das Heartbeat-Ereignis ändern, das einen Check auslöst.
- Die Tracking-Datenbank ist nicht persistent. Wenn Sie den Cobalt Strike-Client schließen und erneut verbinden, wird die Datenbank aktualisiert und Beacons können als NEU markiert werden.