
Herramienta de enumeración de Slack y detección de secretos expuestos
Monitorización y enumeración de Slack en busca de secretos expuestos
Slack Watchman es una aplicación que utiliza la API de Slack para encontrar datos potencialmente sensibles expuestos en un espacio de trabajo de Slack, y para enumerar otra información útil para equipos rojos, azules y morados.
Puedes encontrar más información sobre Slack Watchman en mi blog.
Slack Watchman busca:
Puedes ejecutar Slack Watchman para buscar resultados que se remonten a:
También enumera lo siguiente:
Esto significa que después de un escaneo profundo, puedes programar Slack Watchman para que se ejecute regularmente y solo devuelva resultados de tu período de tiempo elegido.
Puedes ejecutar Slack Watchman en modo de sonda no autenticada para enumerar opciones de autenticación y otra información en un espacio de trabajo. Esto no necesita un token y devuelve:
Para ejecutar este modo, usa Slack Watchman con la opción --probe y el dominio del espacio de trabajo a sondear:
slack-watchman --probe https://domain.slack.com
Slack Watchman utiliza firmas YAML personalizadas para detectar coincidencias en Slack. Estas firmas se extraen del repositorio central de Watchman Signatures. Slack Watchman actualiza automáticamente su base de firmas en tiempo de ejecución para asegurarse de que está utilizando las últimas firmas para detectar secretos.
Puedes definir las firmas que quieras deshabilitar al ejecutar Slack Watchman añadiendo sus IDs a la sección disabled_signatures del archivo watchman.conf. Por ejemplo:
slack_watchman:
token: ...
cookie: ...
url: ...
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
Puedes encontrar el ID de una firma en los archivos YAML individuales del repositorio de Watchman Signatures.
Slack Watchman ofrece las siguientes opciones de registro:
Slack Watchman utiliza por defecto el registro legible en terminal si no se proporciona ninguna opción. Está diseñado para que sea más fácil de leer para los humanos.
El registro JSON también está disponible, perfecto para ingerir en un SIEM u otras plataformas de análisis de registros.
El registro con formato JSON se puede redirigir fácilmente a un archivo como se muestra a continuación:
slack-watchman --timeframe a --all --output json >> slack_watchman_log.json
Para ejecutar Slack Watchman, necesitarás un token de acceso OAuth de la API de Slack. Puedes hacerlo creando una Slack App sencilla.
La aplicación debe tener añadidos los siguientes ámbitos de token de usuario:
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: Los tokens de usuario actúan en nombre del usuario que los autoriza, por lo que sugiero que crees esta aplicación y la autorices con una cuenta de servicio; de lo contrario, la aplicación tendrá acceso a tus conversaciones y chats privados.
Las aplicaciones de Slack se pueden crear a partir de manifiestos JSON que definen los detalles de la aplicación y los ámbitos a aprobar. El manifiesto de la aplicación para Slack Watchman se encuentra en docs/app_manifest.json; puedes usarlo para agilizar la creación de tu aplicación de Slack.
Alternativamente, Slack Watchman también puede autenticarse en Slack usando la cookie d del usuario, que se almacena en el navegador de cada usuario conectado a un espacio de trabajo.
Para usar la autenticación con cookie, tendrás que proporcionar la cookie d y la URL del espacio de trabajo de destino. Luego tendrás que usar la opción --cookie al ejecutar Slack Watchman.
Puedes encontrar más información sobre la autenticación con cookie en mi blog
Slack Watchman primero intentará obtener el token de Slack (además del token de cookie y la URL, si se seleccionan) de las variables de entorno
SLACK_WATCHMAN_TOKENSLACK_WATCHMAN_COOKIESLACK_WATCHMAN_URLSi esto falla, intentará cargar los tokens del archivo .conf (ver más abajo).
Las opciones de configuración se pueden pasar en un archivo llamado watchman.conf que debe almacenarse en tu directorio personal. El archivo debe seguir el formato YAML y tener un aspecto similar al siguiente:
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 buscará este archivo en tiempo de ejecución y usará las opciones de configuración de aquí. Si no estás usando autenticación con cookie, deja cookie y url en blanco.
Si tienes problemas con tu archivo .conf, pásalo por un linter de YAML.
Hay un archivo de ejemplo en docs/example.conf