
Slack-Enumeration und Erkennung offengelegter Secrets
Überwachung und Enumerierung von Slack auf offengelegte Geheimnisse
Slack Watchman ist eine Anwendung, die die Slack-API verwendet, um potenziell sensible Daten zu finden, die in einem Slack-Workspace offengelegt sind, und um weitere nützliche Informationen für Red-, Blue- und Purple-Teams zu enumerieren.
Weitere Informationen über Slack Watchman finden Sie auf meinem Blog.
Slack Watchman sucht nach:
Sie können Slack Watchman ausführen, um nach Ergebnissen zu suchen, die bis zu folgendem Zeitraum zurückreichen:
Es enumeriert außerdem Folgendes:
Das bedeutet, dass Sie Slack Watchman nach einem vollständigen Scan so planen können, dass es regelmäßig läuft und nur Ergebnisse aus dem von Ihnen gewählten Zeitraum zurückgibt.
Sie können Slack Watchman im Modus für unauthentifizierte Sondierung ausführen, um Authentifizierungsoptionen und andere Informationen zu einem Workspace zu enumerieren. Dieser Modus benötigt kein Token und liefert:
Um diesen Modus auszuführen, verwenden Sie Slack Watchman mit dem --probe-Flag und der zu untersuchenden Workspace-Domain:
slack-watchman --probe https://domain.slack.com
Slack Watchman verwendet benutzerdefinierte YAML-Signaturen, um Übereinstimmungen in Slack zu erkennen. Diese Signaturen werden aus dem zentralen Watchman-Signaturen-Repository bezogen. Slack Watchman aktualisiert seine Signaturbasis zur Laufzeit automatisch, um sicherzustellen, dass es die neuesten Signaturen zur Erkennung von Secrets verwendet.
Sie können Signaturen, die Sie beim Ausführen von Slack Watchman deaktivieren möchten, festlegen, indem Sie deren IDs zum Abschnitt disabled_signatures der Datei watchman.conf hinzufügen. Zum Beispiel:
slack_watchman:
token: ...
cookie: ...
url: ...
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
Die ID einer Signatur finden Sie in den einzelnen YAML-Dateien im Watchman-Signaturen-Repository.
Slack Watchman bietet die folgenden Protokollierungsoptionen:
Wenn keine Option angegeben wird, verwendet Slack Watchman standardmäßig die terminalfreundliche Stdout-Protokollierung. Diese ist so gestaltet, dass sie für Menschen einfacher zu lesen ist.
JSON-Protokollierung ist ebenfalls verfügbar und eignet sich perfekt für die Aufnahme in ein SIEM oder andere Plattformen zur Protokollanalyse.
JSON-formatierte Protokollierung kann einfach wie folgt in eine Datei umgeleitet werden:
slack-watchman --timeframe a --all --output json >> slack_watchman_log.json
Um Slack Watchman auszuführen, benötigen Sie ein Slack-API-OAuth-Zugriffstoken. Dies erreichen Sie, indem Sie eine einfache Slack-App erstellen.
Die App muss die folgenden User Token Scopes hinzugefügt haben:
channels:read
files:read
groups:read
im:read
links:read
mpim:read
remote_files:read
search:read
team:read
users:read
users:read.email
Hinweis: Benutzer-Tokens handeln im Namen des Benutzers, der sie autorisiert. Daher empfehle ich, diese App zu erstellen und sie mit einem Dienstkonto zu autorisieren, andernfalls erhält die App Zugriff auf Ihre privaten Konversationen und Chats.
Slack-Apps können aus JSON-Manifesten erstellt werden, die die Details der Anwendung und die zu genehmigenden Scopes definieren. Das App-Manifest für Slack Watchman finden Sie in docs/app_manifest.json. Sie können es verwenden, um die Erstellung Ihrer Slack-App zu beschleunigen.
Alternativ kann sich Slack Watchman auch mit einem Benutzer-d-Cookie bei Slack authentifizieren, das im Browser jedes Benutzers gespeichert ist, der in einem Workspace angemeldet ist.
Um die Cookie-Authentifizierung zu verwenden, müssen Sie das d-Cookie und die URL des Ziel-Workspace angeben. Anschließend müssen Sie beim Ausführen von Slack Watchman das --cookie-Flag verwenden.
Weitere Informationen zur Cookie-Authentifizierung finden Sie auf meinem Blog.
Slack Watchman versucht zunächst, das Slack-Token (sowie das Cookie-Token und die URL, falls ausgewählt) aus den Umgebungsvariablen zu laden:
SLACK_WATCHMAN_TOKENSLACK_WATCHMAN_COOKIESLACK_WATCHMAN_URLSchlägt dies fehl, versucht es, das/die Token aus der .conf-Datei zu laden (siehe unten).
Konfigurationsoptionen können in einer Datei namens watchman.conf übergeben werden, die in Ihrem Home-Verzeichnis gespeichert sein muss. Die Datei sollte dem YAML-Format folgen und wie folgt aussehen:
slack_watchman:
token: xoxp-xxxxxxxx
cookie: xoxd-%2xxxxx
url: https://xxxxx.slack.com
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
Slack Watchman sucht diese Datei zur Laufzeit und verwendet die Konfigurationsoptionen daraus. Wenn Sie keine Cookie-Authentifizierung verwenden, lassen Sie cookie und url leer.
Wenn Sie Probleme mit Ihrer .conf-Datei haben, lassen Sie sie durch einen YAML-Linter laufen.