
स्लैक एन्यूमरेशन और उजागर सीक्रेट्स का पता लगाने वाला टूल
Slack में उजागर गुप्त जानकारी (secrets) की निगरानी और सूचीकरण
Slack Watchman एक एप्लिकेशन है जो Slack API का उपयोग करके Slack कार्यक्षेत्र (workspace) में उजागर संभावित संवेदनशील डेटा को खोजता है, तथा रेड, ब्लू और पर्पल टीमों के लिए अन्य उपयोगी जानकारी का सूचीकरण करता है।
Slack Watchman के बारे में अधिक जानकारी मेरे ब्लॉग पर पाई जा सकती है।
Slack Watchman निम्नलिखित की खोज करता है:
आप Slack Watchman को चलाकर निम्नलिखित समय-सीमा तक पीछे के परिणाम खोज सकते हैं:
यह निम्नलिखित का भी सूचीकरण करता है:
इसका मतलब है कि एक गहन स्कैन के बाद, आप Slack Watchman को नियमित रूप से चलाने के लिए शेड्यूल कर सकते हैं, और यह केवल आपकी चुनी हुई समयावधि के परिणाम लौटाएगा।
आप Slack Watchman को बिना प्रमाणीकरण वाले प्रोब मोड में चला सकते हैं, ताकि किसी Workspace पर प्रमाणीकरण विकल्पों और अन्य जानकारी का सूचीकरण किया जा सके। इसके लिए टोकन की आवश्यकता नहीं होती, और यह लौटाता है:
इस मोड को चलाने के लिए Slack Watchman का उपयोग --probe फ़्लैग और प्रोब करने हेतु कार्यक्षेत्र डोमेन के साथ करें:
slack-watchman --probe https://domain.slack.com
Slack Watchman Slack में मैचों का पता लगाने के लिए कस्टम YAML सिग्नेचर का उपयोग करता है। ये सिग्नेचर केंद्रीय Watchman Signatures रिपॉज़िटरी से लिए जाते हैं। Slack Watchman रनटाइम पर अपने सिग्नेचर बेस को स्वचालित रूप से अपडेट करता है, ताकि यह सुनिश्चित हो सके कि वह रहस्यों का पता लगाने के लिए नवीनतम सिग्नेचर का उपयोग कर रहा है।
आप Slack Watchman चलाते समय जिन सिग्नेचर को निष्क्रिय करना चाहते हैं, उन्हें watchman.conf फ़ाइल के disabled_signatures अनुभाग में उनकी ID जोड़कर परिभाषित कर सकते हैं। उदाहरण के लिए:
slack_watchman:
token: ...
cookie: ...
url: ...
disabled_signatures:
- tokens_generic_bearer_tokens
- tokens_generic_access_tokens
आप Watchman Signatures रिपॉज़िटरी में व्यक्तिगत YAML फ़ाइलों में सिग्नेचर की ID पा सकते हैं।
Slack Watchman निम्नलिखित लॉगिंग विकल्प प्रदान करता है:
यदि कोई विकल्प नहीं दिया गया है, तो Slack Watchman डिफ़ॉल्ट रूप से टर्मिनल-अनुकूल stdout लॉगिंग का उपयोग करता है। इसे मनुष्यों के लिए पढ़ना आसान बनाने के लिए डिज़ाइन किया गया है।
JSON लॉगिंग भी उपलब्ध है, जो SIEM या अन्य लॉग विश्लेषण प्लेटफ़ॉर्म में डालने (ingesting) के लिए एकदम उपयुक्त है।
JSON प्रारूप वाली लॉगिंग को आसानी से नीचे दिखाए अनुसार किसी फ़ाइल में रीडायरेक्ट किया जा सकता है:
slack-watchman --timeframe a --all --output json >> slack_watchman_log.json
Slack Watchman चलाने के लिए, आपको एक Slack API OAuth एक्सेस टोकन की आवश्यकता होगी। आप एक सरल Slack App बनाकर ऐसा कर सकते हैं।
ऐप में निम्नलिखित User Token Scopes जोड़े जाने आवश्यक हैं:
channels:read
files:read
groups:read
im:read
links:read
mpim:read
remote_files:read
search:read
team:read
users:read
users:read.email
नोट: यूज़र टोकन उस उपयोगकर्ता की ओर से कार्य करते हैं जो उन्हें अधिकृत करता है, इसलिए मेरा सुझाव है कि आप इस ऐप को सेवा खाते (service account) का उपयोग करके बनाएँ और अधिकृत करें, अन्यथा ऐप के पास आपकी निजी वार्तालापों और चैट तक पहुँच हो जाएगी।
Slack ऐप्स को JSON मैनिफ़ेस्ट से बनाया जा सकता है, जो एप्लिकेशन के विवरण और अनुमोदित किए जाने वाले स्कोप को परिभाषित करते हैं। Slack Watchman के लिए ऐप मैनिफ़ेस्ट docs/app_manifest.json में पाया जा सकता है, आप अपना Slack ऐप बनाने की प्रक्रिया तेज़ करने के लिए इसका उपयोग कर सकते हैं।
वैकल्पिक रूप से, Slack Watchman किसी उपयोगकर्ता के d कुकी का उपयोग करके भी Slack में प्रमाणीकरण कर सकता है, जो कार्यक्षेत्र में लॉग इन किए हुए प्रत्येक उपयोगकर्ता के ब्राउज़र में संग्रहीत होती है।
कुकी प्रमाणीकरण का उपयोग करने के लिए, आपको d कुकी और लक्षित कार्यक्षेत्र का URL प्रदान करना होगा। फिर आपको Slack Watchman चलाते समय --cookie फ़्लैग का उपयोग करना होगा।
कुकी प्रमाणीकरण पर अधिक जानकारी मेरे ब्लॉग पर पाई जा सकती है।
Slack Watchman पहले पर्यावरण चर (environment variables) से Slack टोकन (साथ ही चयनित होने पर कुकी टोकन और URL) प्राप्त करने का प्रयास करेगा:
SLACK_WATCHMAN_TOKENSLACK_WATCHMAN_COOKIESLACK_WATCHMAN_URLयदि यह विफल रहता है, तो यह .conf फ़ाइल से टोकन लोड करने का प्रयास करेगा (नीचे देखें)।
कॉन्फ़िगरेशन विकल्पों को watchman.conf नामक फ़ाइल में पास किया जा सकता है, जिसे आपकी होम निर्देशिका में संग्रहीत होना चाहिए। फ़ाइल को YAML प्रारूप का पालन करना चाहिए, और नीचे दिखाए अनुसार दिखनी चाहिए:
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 रनटाइम पर इस फ़ाइल की खोज करेगा, और यहाँ से कॉन्फ़िगरेशन विकल्पों का उपयोग करेगा। यदि आप कुकी प्रमाणीकरण का उपयोग नहीं कर रहे हैं, तो cookie और url को खाली छोड़ दें।
यदि आपको अपनी .conf फ़ाइल में समस्याएँ आ रही हैं, तो इसे YAML लिंटर से पास कराएँ।
एक उदाहरण फ़ाइल docs/example.conf में है।
नोट: कुकी और URL मान वैकल्पिक हैं, और यदि कुकी प्रमाणीकरण का उपयोग नहीं कर रहे हैं तो इनकी आवश्यकता नहीं है।
Slack Watchman को स्थापित करने का अनुशंसित तरीका pipx के माध्यम से है, जो ऐप को एक पृथक वातावरण में स्थापित करता है और इसे आपके सिस्टम के PATH पर उपलब्ध कराता है:
pipx install slack-watchman
वैकल्पिक: pip के माध्यम से स्थापित करें
आप Slack Watchman को pip का उपयोग करके भी स्थापित कर सकते हैं:
python3 -m pip install slack-watchman
वैकल्पिक: स्रोत से निर्माण करें
रिलीज़ स्रोत फ़ाइलें डाउनलोड करें, फिर रिपॉज़िटरी की शीर्ष-स्तरीय निर्देशिका से निम्नलिखित चलाएँ:
python3 -m pip build
python3 -m pip install --force-reinstall dist/*.whl
Slack Watchman डॉकर हब से एक डॉकर इमेज के रूप में भी उपलब्ध है:
docker pull papermountain/slack-watchman:latest
फिर आप आवश्यक पर्यावरण चर पास करना सुनिश्चित करते हुए, Slack Watchman को कंटेनर में चला सकते हैं:
// 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 एक वैश्विक कमांड के रूप में स्थापित किया जाएगा, इस प्रकार उपयोग करें:
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
आप Slack Watchman को सब कुछ खोजने के लिए चला सकते हैं, और डिफ़ॉल्ट stdout पर आउटपुट प्राप्त कर सकते हैं:
slack-watchman --timeframe a --all
आपको Watchman परिवार के अन्य ऐप्स में रुचि हो सकती है:
इस परियोजना का स्रोत कोड GNU General Public Licence के अंतर्गत जारी किया गया है। यह परियोजना Slack Technologies या Salesforce से संबद्ध नहीं है।