
Ferramenta de enumeração do Slack e detecção de segredos expostos
Monitorando e enumerando o Slack em busca de segredos expostos
O Slack Watchman é um aplicativo que usa a API do Slack para encontrar dados potencialmente sensíveis expostos em um workspace do Slack e enumerar outras informações úteis para equipes red, blue e purple.
Mais informações sobre o Slack Watchman podem ser encontradas no meu blog.
O Slack Watchman procura por:
Você pode executar o Slack Watchman para procurar resultados até:
Ele também enumera o seguinte:
Isso significa que, após uma varredura profunda, você pode agendar o Slack Watchman para executar regularmente e retornar apenas resultados do período escolhido.
Você pode executar o Slack Watchman no modo de sonda não autenticada para enumerar opções de autenticação e outras informações em um workspace. Isso não precisa de um token e retorna:
Para executar este modo, use o Slack Watchman com a flag --probe e o domínio do workspace a ser sondado:
slack-watchman --probe https://domain.slack.com
O Slack Watchman usa assinaturas YAML personalizadas para detectar correspondências no Slack. Essas assinaturas são obtidas do repositório central Watchman Signatures. O Slack Watchman atualiza automaticamente sua base de assinaturas em tempo de execução para garantir que esteja usando as assinaturas mais recentes para detectar segredos.
Você pode definir assinaturas que deseja desativar ao executar o Slack Watchman adicionando seus IDs à seção disabled_signatures do arquivo watchman.conf. Por exemplo:
slack_watchman:
token: ...
cookie: ...
url: ...
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
Você pode encontrar o ID de uma assinatura nos arquivos YAML individuais no repositório Watchman Signatures.
O Slack Watchman oferece as seguintes opções de registro:
O Slack Watchman usa por padrão o registro stdout amigável ao terminal se nenhuma opção for fornecida. Isso foi projetado para ser mais fácil de ler para humanos.
O registro em JSON também está disponível, sendo perfeito para ingestão em um SIEM ou outras plataformas de análise de logs.
O registro formatado em JSON pode ser facilmente redirecionado para um arquivo como abaixo:
slack-watchman --timeframe a --all --output json >> slack_watchman_log.json
Para executar o Slack Watchman, você precisará de um token de acesso OAuth da API do Slack. Você pode fazer isso criando um app Slack simples.
O app precisa ter os seguintes User Token Scopes adicionados:
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: Os tokens de usuário agem em nome do usuário que os autoriza. Por isso, sugiro que você crie este app e o autorize usando uma conta de serviço; caso contrário, o app terá acesso às suas conversas e chats privados.
Os apps do Slack podem ser criados a partir de manifestos JSON que definem os detalhes do aplicativo e os escopos a aprovar. O manifesto do app para o Slack Watchman pode ser encontrado em docs/app_manifest.json; você pode usá-lo para acelerar a criação do seu app do Slack.
Alternativamente, o Slack Watchman também pode autenticar no Slack usando um cookie d de usuário, que é armazenado no navegador de cada usuário conectado a um workspace.
Para usar a autenticação por cookie, você precisará fornecer o cookie d e a URL do workspace de destino. Depois, você precisará usar a flag --cookie ao executar o Slack Watchman.
Mais informações sobre autenticação por cookie podem ser encontradas no meu blog
O Slack Watchman primeiro tentará obter o token do Slack (além do token de cookie e da URL, se selecionados) das variáveis de ambiente:
SLACK_WATCHMAN_TOKENSLACK_WATCHMAN_COOKIESLACK_WATCHMAN_URLSe isso falhar, ele tentará carregar o(s) token(s) do arquivo .conf (veja abaixo).
As opções de configuração podem ser passadas em um arquivo chamado watchman.conf, que deve ser armazenado no seu diretório pessoal (home). O arquivo deve seguir o formato YAML e deve se parecer com o abaixo:
slack_watchman:
token: xoxp-xxxxxxxx
cookie: xoxd-%2xxxxx
url: https://xxxxx.slack.com
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
O Slack Watchman procurará por este arquivo em tempo de execução e usará as opções de configuração dele. Se você não estiver usando autenticação por cookie, deixe cookie e url em branco.
Se você estiver tendo problemas com seu arquivo .conf, execute-o em um linter de YAML.
Um arquivo de exemplo está em docs/example.conf
Nota: Os valores de cookie e URL são opcionais e não são necessários se você não estiver usando autenticação por cookie.