
Slack Enumeration and Extraction Tool - extract sensitive information from a Slack Workspace
This is a tool developed in Python which uses the native Slack APIs to extract 'interesting' information from a Slack workspace given an access token.
As of May 2018, Slack has over 8 million customers and that number is rapidly rising - the integration and 'ChatOps' possibilities are endless and allows teams (not just developers!) to create some really powerful workflows and Slack bot/application interactions.
As is the way with corporations large and small, it is not unusual for tools such as Slack to fly under the Information Security governance/policy radar which ultimately leads to precarious situations whereby sensitive and confidential information end up in places they shouldn't be.
The purpose of this tool is two-fold:
The tool allows you to easily gather sensitive information for offline viewing at your convenience.
Note: I'm a Python n00b and have no doubt that the script can be optimised and improved massively - please feel free to make pull requests; I'll review and merge them as appropriate!
The tool uses the native Slack APIs to extract 'interesting' information and looks for the following information, today:
The Slack web application uses a number of cookies - the one of special interest is called, wait for it... d. This d cookie is the same across all Workspaces the victim has access to. What this means in reality is that a single stolen d cookie would allow an attacker to get access to all of the Workspaces the victim is logged-in to; my experience with the Slack web application is that once you are logged in, you'll remain logged in indefinitely.
The Slack API token is a per-workspace token. One token cannot (as far as I know) access other workspaces in the same way the d cookie above allows access to all Workspaces.
For the tool to search for and extract information, you will need to provide it an API token in addition to a Slack Cookie. This token is included within the form data of requests sent to the Slack API from the client. So to use SlackPirate, you will need to provide the following information:
d cookie by using the --cookie flag. The tool will output the associated Workspaces and tokens--token flag. You can find this by either using devtools or some other form of network monitoring, or by scraping the process memory of Slack for it. It starts with xoxc-Make sure to pass in both a token and a cookie - you need both to be able to authenticate
The script has been developed, tested and confirmed working on Python 3.5, 3.6 and 3.7. A quick test on Python 2 presented some compatibility issues.
git clone https://github.com/emtunc/SlackPiratepip install virtualenvvirtualenv SlackPiratesource SlackPirate/bin/activatepip install -r requirements.txt./SlackPirate.py --helpgit clone https://github.com/emtunc/SlackPiratechmod +x SlackPirate.pypip install -r requirements.txt./SlackPirate.py --helpgit clone https://github.com/emtunc/SlackPiratepip install virtualenvvirtualenv SlackPirateSlackPirate\Scripts\activate.batpip install -r requirements.txtpython SlackPirate.py --helpgit clone https://github.com/emtunc/SlackPiratepip install -r requirements.txtpython SlackPirate.py --helppython3 SlackPirate.py --help
python3 SlackPirate.py --interactive
python3 SlackPirate.py --cookie <cookie>
This will do the following:
python3 SlackPirate.py --token <token>
This will do the following:
Truepython3 SlackPirate.py --token <token> --s3-scan
python3 SlackPirate.py --token <token> --no-s3-scan
python3 SlackPirate.py --token <token> --verbose


A public Slack Workspace has been set-up where anyone can join and discuss new features, changes, feature requests or simply ask for help. Here's the invite link: https://join.slack.com/t/slackpirate/shared_invite/zt-6o3d9tjq-PhbMxtM2o5ALgFkOB9V_dg