
Strumento di enumerazione di Slack e rilevamento di segreti esposti
Monitoraggio ed enumerazione di Slack per segreti esposti
Slack Watchman è un'applicazione che utilizza l'API di Slack per trovare dati potenzialmente sensibili esposti in un workspace Slack e per enumerare altre informazioni utili per i team red, blue e purple.
Maggiori informazioni su Slack Watchman sono disponibili sul mio blog.
Slack Watchman cerca:
Puoi eseguire Slack Watchman per cercare risultati che risalgono fino a:

Enumera inoltre quanto segue:
Questo significa che dopo una scansione approfondita, puoi programmare Slack Watchman per eseguirlo regolarmente e ottenere solo i risultati del periodo di tempo scelto.

Puoi eseguire Slack Watchman in modalità sonda non autenticata per enumerare le opzioni di autenticazione e altre informazioni su un workspace. Non è necessario un token e restituisce:
Per eseguire questa modalità, usa Slack Watchman con il flag --probe e il dominio del workspace da sondare:
slack-watchman --probe https://domain.slack.com
Slack Watchman utilizza firme YAML personalizzate per rilevare corrispondenze in Slack. Queste firme vengono prese dal repository centrale Watchman Signatures. Slack Watchman aggiorna automaticamente la sua base di firme a runtime per assicurarsi di usare le firme più recenti per rilevare i segreti.
Puoi definire le firme che desideri disabilitare quando esegui Slack Watchman aggiungendo i loro ID alla sezione disabled_signatures del file watchman.conf. Ad esempio:
slack_watchman:
token: ...
cookie: ...
url: ...
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
Puoi trovare l'ID di una firma nei singoli file YAML nel repository Watchman Signatures.
Slack Watchman offre le seguenti opzioni di logging:
Se non viene fornita alcuna opzione, Slack Watchman utilizza di default il logging stdout leggibile dal terminale. È progettato per essere più facile da leggere per gli esseri umani.
È disponibile anche il logging JSON, perfetto per essere importato in un SIEM o in altre piattaforme di analisi dei log.
Il logging in formato JSON può essere facilmente reindirizzato a un file come mostrato sotto:
slack-watchman --timeframe a --all --output json >> slack_watchman_log.json
Per eseguire Slack Watchman, avrai bisogno di un token di accesso OAuth dell'API di Slack. Puoi ottenerlo creando una semplice Slack App.
L'app deve avere i seguenti User Token Scopes aggiunti:
channels:read
files:read
groups:read
im:read
links:read
mpim:read
remote_files:read
search:read
team:read
users:read
users:read.email
Nota: I token utente agiscono per conto dell'utente che li autorizza, quindi suggerisco di creare questa app e autorizzarla utilizzando un account di servizio, altrimenti l'app avrà accesso alle tue conversazioni e chat private.
Le Slack app possono essere create da manifest JSON che definiscono i dettagli dell'applicazione e gli scope da approvare. Il manifest dell'app per Slack Watchman si trova in docs/app_manifest.json; puoi usarlo per velocizzare la creazione della tua Slack app.
In alternativa, Slack Watchman può autenticarsi su Slack utilizzando un cookie utente d, che è memorizzato nel browser di ogni utente connesso a un workspace.
Per utilizzare l'autenticazione tramite cookie, dovrai fornire il cookie d e l'URL del workspace di destinazione. Successivamente dovrai usare il flag --cookie quando esegui Slack Watchman.
Maggiori informazioni sull'autenticazione tramite cookie sono disponibili sul mio blog
Slack Watchman proverà prima a ottenere il token di Slack (oltre al cookie e all'URL se selezionati) dalle variabili d'ambiente
SLACK_WATCHMAN_TOKENSLACK_WATCHMAN_COOKIESLACK_WATCHMAN_URLSe questo fallisce, proverà a caricare i token dal file .conf (vedi sotto).
Le opzioni di configurazione possono essere passate in un file chiamato watchman.conf che deve essere salvato nella tua home directory. Il file deve seguire il formato YAML e dovrebbe apparire come sotto:
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 cercherà questo file a runtime e userà le opzioni di configurazione da qui. Se non stai usando l'autenticazione tramite cookie, lascia cookie e url vuoti.
Se hai problemi con il tuo file .conf, esegui un controllo con un linter YAML.
Un file di esempio si trova in docs/example.conf
Nota: I valori di Cookie e URL sono opzionali e non richiesti se non si utilizza l'autenticazione tramite cookie.
Il metodo consigliato per installare Slack Watchman è tramite pipx, che installa l'app in un ambiente isolato e la rende disponibile nel PATH di sistema:
pipx install slack-watchman
Alternativa: Installazione tramite pip
Puoi anche installare Slack Watchman usando pip:
python3 -m pip install slack-watchman
Alternativa: Build dal sorgente
Scarica i file sorgente della release, poi dalla directory principale del repository esegui:
python3 -m pip build
python3 -m pip install --force-reinstall dist/*.whl
Slack Watchman è disponibile anche su Docker Hub come immagine Docker:
docker pull papermountain/slack-watchman:latest
Puoi quindi eseguire Slack Watchman in un container, assicurandoti di passare le variabili d'ambiente richieste:
// help
docker run --rm papermountain/slack-watchman -h
// scan all
docker run --rm -e SLACK_WATCHMAN_TOKEN=xoxp... papermountain/slack-watchman --timeframe a --all --output json
docker run --rm --env-file .env papermountain/slack-watchman --timeframe a --all --output stdout
Slack Watchman verrà installato come comando globale, usalo come segue:
usage: slack-watchman [-h] [--timeframe {d,w,m,a}] [--output {json,stdout}] [--version] [--all] [--users] [--channels] [--pii] [--secrets] [--debug] [--verbose] [--cookie] [--probe PROBE_DOMAIN]
Monitoring and enumerating Slack for exposed secrets
options:
-h, --help show this help message and exit
--timeframe {d,w,m,a}, -t {d,w,m,a}
How far back to search: d = 24 hours w = 7 days, m = 30 days, a = all time
--output {json,stdout}, -o {json,stdout}
Where to send results
--version, -v show program's version number and exit
--all, -a Find secrets and PII
--users, -u Enumerate users and output them to .csv in the current working directory
--channels, -c Enumerate channels and output them to .csv in the current working directory
--pii, -p Find personal data: DOB, passport details, drivers licence, ITIN, SSN etc.
--secrets, -s Find exposed secrets: credentials, tokens etc.
--debug, -d Turn on debug level logging
--verbose, -V Turn on more verbose output for JSON logging. This includes more fields, but is larger
--cookie Use cookie auth using Slack d cookie. REQUIRES either SLACK_WATCHMAN_COOKIE and SLACK_WATCHMAN_URL environment variables set, or both values set in watchman.conf
--probe PROBE_DOMAIN Perform an un-authenticated probe on a workspace for available authentication options and other information. Enter workspace domain to probe
Puoi eseguire Slack Watchman per cercare tutto e inviare l'output allo stdout predefinito:
slack-watchman --timeframe a --all
Potrebbero interessarti le altre app della famiglia Watchman:
Il codice sorgente di questo progetto è rilasciato sotto GNU General Public Licence. Questo progetto non è associato a Slack Technologies o Salesforce.