
स्लैक एन्यूमरेशन और उजागर सीक्रेट्स का पता लगाने वाला टूल
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 मान वैकल्पिक हैं, और यदि कुकी प्रमाणीकरण का उपयोग नहीं कर रहे हैं तो इनकी आवश्यकता नहीं है।