
Webbasiertes Red-Team-Tool für Aktivitätsprotokollierung, Berichterstattung und Lagebewusstsein mit Cobalt Strike- und BloodHound-Integration.
Ein Hub für Red-Team-Aktivitäten zur Unterstützung der Dokumentation, des Lagebewusstseins und der Berichterstattung. Stepping Stones bietet eine webbasierte Benutzeroberfläche, mit der das Team Aktivitäten protokollieren und Berichtsausschnitte erstellen kann. Die Benutzeroberfläche soll schnell genug sein, um während des gesamten Engagements verwendet zu werden, nicht nur in der Berichtsphase.
Stepping Stones ist eine Python-Django-Anwendung. So erhalten Sie eine lokale Kopie:
python -m venv .venv.venv\Scripts\activate oder source .venv/bin/activate unter *nixpip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migratepython manage.py runserver und python manage.py process_tasks gleichzeitig auspython manage.py check --deploy aus, um Empfehlungen zur Absicherung zu erhalten, und folgen Sie dann einem Leitfaden wie:
https://docs.djangoproject.com/en/6.0/howto/deployment/Auf dem Team-Server – öffnen Sie einen Port in der Firewall, damit Stepping Stones eine Verbindung herstellen kann, z. B.:
sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050Wenn Sie eine lokale Kopie verwenden und der Code in Git aktualisiert wurde und Sie die neuen Funktionen wünschen:
sudo service ssbot stopsudo service steppingstones stoprm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones.venv\Scripts\activate oder source .venv/bin/activate unter *nixpip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migrate.
Wenn Sie dieselbe Instanz für verschiedene Aufträge verwenden und die alten Daten archivieren möchten, um dann neu zu starten, können Sie:
mv db.sqlite3 db.sqlite.OLD_CLIENT_NAMEDas System verwendet SQLite. Sichern Sie die Datei db.sqlite3 im Stammverzeichnis des Servers oder regelmäßig über die Weboberfläche, um Ihre wertvollen Daten zu schützen.
Den konfigurierten Webhook-URLs wird bei Schlüsselereignissen jeweils ein kleines JSON-Dokument gesendet. Das JSON-Dokument hat immer die folgende Struktur:
{
"type": "notification type",
"message": "Human readable message"
}
Das Feld type kann einen der folgenden Werte haben:
new beacon (Ein bisher unbekannter Beacon hat sich mit einem überwachten Team-Server verbunden)respawned beacon (Ein zuvor gesehener Beacon hat sich mit einem überwachten Team-Server verbunden)returned beacon (Ein Beacon, der ausdrücklich auf Wiederverbindung überwacht wurde, hat sich gerade wieder verbunden)Zum Konsumieren können Sie ein https://make.com-Szenario basierend auf dem folgenden Blueprint verwenden:
{"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}]}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}
Importieren Sie den obigen Blueprint, indem Sie ein leeres Szenario erstellen und die Funktion „Import Blueprint“ im Menü „...“ (Mehr) verwenden, das sich unten in der Mitte der Weboberfläche befindet.
Danach sind zwei weitere Schritte erforderlich:
Webhooks können über eine Schaltfläche auf der Stepping-Stones-Webhook-Seite getestet werden.
Stepping Stones nutzt das Berechtigungssystem auf Modellebene von Django und ermöglicht es, Benutzer beim Erstellen, Bearbeiten, Anzeigen und Löschen jedes Datentyps einzuschränken.
Gruppen finden Sie in der /admin-Konsole, die einer Gruppe von Berechtigungen entsprechen, z. B. geeignet für das Blue Team eines Kunden, die allen Mitgliedern dieser Gruppe zugewiesen werden.
Bestehende Gruppen sind:
| Rolle | Beschreibung |
|---|---|
| Client Blue Team - Read Only | Kann die Seiten für Ereignisse und Dateien lesen |
| Client Blue Team - Limited Write | Wie Client Blue Team - Read Only mit Schreibzugriff auf die Felder „Ergebnis“ und „Erkennung“ eines Ereignisses |
Benutzer, die während der Installation erstellt werden, erhalten den Status „Superuser“ und haben damit implizit alle möglichen Berechtigungen. Wenn Sie Benutzer jedoch manuell über die Admin-Konsole erstellen, stellen Sie sicher, dass sie NICHT als „Staff“ oder „Superuser“ markiert sind, damit sie ohne implizite Berechtigungen beginnen und daher nur durch die Aufnahme in Gruppen Berechtigungen erhalten.
Die Zeitzonen der Benutzer können über das /admin-Portal geändert werden. Zeiten in den Berichten werden absichtlich in UTC ausgegeben, um Blue Teams eine einfachere Korrelation zu ermöglichen.
Die von Stepping Stones angezeigten Datumsformate sollten der Locale des Webbrowsers entsprechen. D. h. Benutzer, deren Browser mit einer US-Locale konfiguriert ist, sehen Daten im Format MM/TT/JJJJ in der Weboberfläche und in Berichtsausschnitten.
Stepping Stones kann Protokolle anderer Tools aufnehmen, sofern diese in das JSON-basierte, maßgeschneiderte EventStream-Format formatiert sind. Das Format wird in der Weboberfläche von SteppingStones detailliert beschrieben, einschließlich Schemas und Beispieldaten.
Sobald ein EventStream-Protokoll von Stepping Stones aufgenommen wurde, können relevante Einträge für den Bericht in Ereignisse geklont werden.
Die bevorzugte Methode zur Integration von Cobalt Strike ist über SSBot. Dazu ist eine lizenzierte Kopie von Cobalt Strike in /opt/cobaltstrike oder c:\tools\cobaltstrike erforderlich, die verwendet wird, um alle (aktivierten) Team-Server zu kontaktieren, die in der Weboberfläche konfiguriert sind.
Nach der Integration:
Es gibt zusätzliche CLI-Befehle, die verwendet werden können, falls SSBot nicht wie erwartet funktioniert:
.\manage.py reset_cs_data [-s SERVER] – Setzt alle Daten zurück, die von dem angegebenen Team-Server geparst wurden, oder von allen, wenn kein Name angegeben wird. Dies wirkt sich nicht auf Daten aus, die aus den CS-Protokollen abgeleitet wurden, z. B. manuell geklonte Ereignisse oder Anmeldedaten..\manage.py parse_log_tar <file name> – Parst den Inhalt eines Logs-Verzeichnisses, das archiviert und von einem Team-Server geholt wurde. Hinweis: Dies umfasst nicht alle Daten, die SSBot zugänglich sind, und ist daher nicht die bevorzugte Aufnahmemethode.Neo4j-Server, die über die Weboberfläche konfiguriert wurden, werden verwendet, um:
owned zu aktualisieren, wenn Anmeldedaten mit einem Passwort hinzugefügt werden oder ein Beacon als System auf einem bestimmten Host ausgeführt wirdEs ist möglich, die Funktionalität von Stepping Stones über Plugins zu erweitern. Weitere Dokumentation finden Sie hier.
python manage.py makemigrations auszuführen, dann STOPPEN Sie und kontaktieren Sie die Stepping-Stones-Entwickler – es ist wichtig, dass alle Benutzer mit demselben Satz an Migrationsskripten arbeiten, und diese sollten über die Entwickler koordiniert werden.sudo service ssbot restartsudo service steppingstones restartjournalctl -u steppingstones