
फ़ाइल शेयरों के लिए क्रेडेंशियल और संवेदनशील डेटा एक्सपोज़र ट्राइएज
फ़ाइल शेयरों के लिए क्रेडेंशियल और संवेदनशील डेटा एक्सपोज़र की ट्राइएज।
जब कोई खुला शेयर मिलता है, तो सवाल कभी यह नहीं होता कि "क्या इस रिपो में कोई लीक हुई कुंजी है"। सवाल होता है "अभी क्या एक्सपोज़ हुआ, और कारोबार बंद होने से पहले मुझे क्या रोल करना होगा।" sift इसी सवाल के लिए बनाया गया है: उच्च रिकॉल, तेज़ समीक्षा कतार, और एक फ़ीडबैक लूप, ताकि जो भी चीज़ आप आँखों से पहचानें, वह एक नियम बन जाए जो बाकी की दो सौ प्रतियों को खोज ले।

Python 3.11+, केवल स्टैंडर्ड लाइब्रेरी। कोई pip install नहीं, कोई इंटरनेट नहीं, कोई बिल्ड स्टेप नहीं। यह एक लॉक-डाउन IR लैपटॉप पर चलता है, और वहीं इसकी ज़रूरत होती है।```bash sift survey \fileserver\openshare # how big is this thing sift copy \fileserver\openshare C:\IR\case-4471 # take a throttled copy sift scan C:\IR\case-4471 # scan it, opens the triage UI
स्कैनिंग इन प्लेस भी काम करता है। पहले नकली क्रेडेंशियल्स के शेयर पर इसे आज़माएँ:```bash
sift demo C:\temp\demoshare
sift.cmd एक लॉन्चर है जो किसी भी निर्देशिका से काम करता है। पूर्ण पथ के बजाय sift टाइप करने के लिए, C:\Dev\sift को PATH में जोड़ें:```bash
setx PATH "%PATH%;C:\Dev\sift"
जिस मशीन पर Python बिल्कुल नहीं है, `python build_portable.py` बनाता है
`dist/sift-secrets-<version>-portable-win64.zip`: आधिकारिक python.org
एम्बेडेबल रनटाइम और यह सोर्स ट्री, बंडल किए गए `sift.cmd` के ज़रिए
अनज़िप-और-चलाएं। ~11 MB, कोई इंस्टॉल नहीं, कोई एडमिन अधिकार नहीं, और इसमें कुछ भी
compiled या repacked नहीं है — `build_portable.py` में docstring देखें कि यह
एक लॉक-डाउन IR लैपटॉप पर frozen .exe से बेहतर क्यों है।
---
## gitleaks या trufflehog ही क्यों नहीं
दोनों अच्छे टूल हैं जो एक अलग समस्या का समाधान करते हैं।
वे CI के लिए बनाए गए **precision** टूल हैं, जहाँ एक false positive डेवलपर की
दोपहर बर्बाद कर देता है, इसलिए वे मुख्य रूप से ऐसी चीज़ों पर काम करते हैं जो किसी
ज्ञात वेंडर API कुंजी की तरह दिखती हैं। trufflehog और आगे जाता है और ऐसे रहस्यों को
पसंद करता है जिन्हें वह वेंडर के API को कॉल करके *verify* कर सकता है, जो एक
वास्तव में बेहतरीन संकेत है जिसे regex दोहरा नहीं सकता।
Share triage इस अर्थशास्त्र को उलट देता है। एक इंसान पहले से ही हर hit को पढ़ रहा है,
इसलिए एक false positive की कीमत तीन सेकंड है। जो आपको नुकसान पहुँचाता है वह एक **miss** है।
वेंडर API कुंजियाँ निश्चित रूप से शेयरों पर लीक होती हैं - एक web-root बैकअप, एक deployment
स्क्रिप्ट, किसी का प्रोजेक्ट फ़ोल्डर जो विभागीय ड्राइव पर कॉपी किया गया है, और एक
`.env` है जिसमें एक लाइव Stripe कुंजी है। वे पकड़े जाने लायक हैं, और sift उन्हें पकड़ता है।
लेकिन वे वह हिस्सा भी हैं जिसे gitleaks और trufflehog पहले से अच्छी तरह संभालते हैं।
कमी बाकी सब कुछ है, और फ़ाइल शेयर पर यह अधिकांश भाग है:
| CI स्कैनर क्या मिस करते हैं | वे इसके पास से क्यों गुज़र जाते हैं |
|---|---|
| `web.config` जिसमें SQL कनेक्शन स्ट्रिंग है | कोई ज्ञात कुंजी प्रारूप नहीं, सत्यापन के लिए कोई वेंडर नहीं |
| `Map-Drives.ps1` जिसमें `net use ... /user:` | बस उसके बाद एक शब्द वाला शेल कमांड |
| `New Hire Setup Guide.docx` | Office फ़ाइल, बाइनरी के रूप में पढ़ी जाती है, पूरी तरह से छोड़ दी जाती है |
| `unattend.xml`, GPP `Groups.xml` | Windows deployment आर्टिफैक्ट जिनके लिए किसी ने डिटेक्टर नहीं लिखा |
| `confCons.xml`, `.rdg`, WinSCP.ini | प्रतिवर्ती रूप से संग्रहीत पासवर्ड, लेकिन कोई "secret format" नहीं |
| `passwords.xlsx` | यह एक ZIP है। प्लेन-टेक्स्ट स्कैनर बाइनरी देखते हैं और आगे बढ़ जाते हैं |
| `.kdbx`, `.pfx`, `id_rsa` | अपारदर्शी बाइट्स - *filename* ही निष्कर्ष है |
| एक `.bak` जिसके अंदर कनेक्शन स्ट्रिंग है | बाइनरी, इसलिए कभी नहीं पढ़ी जाती |
sift उन्हें कवर करता है, अपने स्वयं के वेंडर-कुंजी नियम उपलब्ध कराता है, और **अन्य टूल के
नियम पैक और निष्कर्षों को आयात करता है** - gitleaks TOML, Kingfisher/Titus YAML, और
trufflehog JSON - ताकि आपको टूलों के बीच चयन न करना पड़े।
सबसे नज़दीकी पूर्व कला [Snaffler](https://github.com/SnaffCon/Snaffler) है, जो
इसके फ़ाइलनाम-और-वर्गीकरण वाले आधे हिस्से में उत्कृष्ट है और फ़ाइलनाम नियमों के लिए
प्रत्यक्ष प्रेरणा है। जो चीज़ उसके पास नहीं है - और जो एक बार आपके पास 400 hits होने पर
वास्तविक अड़चन साबित होती है - वह एक समीक्षा लूप है।
---
## लूप
1. **स्कैन** करें शेयर को।
2. **कतार पर काम करें।** प्रत्येक निष्कर्ष अपनी आस-पास की पंक्तियों को हाइलाइट किए गए मैच के साथ दिखाता है। तीर कुंजियाँ संदर्भ को चौड़ा करती हैं; एक क्लिक उस पंक्ति पर VS Code में पूरी फ़ाइल खोलता है, या Notepad में।
3. **एक miss पहचानें।** आप पहचान लेंगे। इसे preview में हाइलाइट करें और `r` दबाएँ।
4. **sift पैटर्न प्रस्तावित करता है** और लाइव बताता है कि पहले से पढ़ी गई हर चीज़ में प्रत्येक पैटर्न कितनी बार मेल खाएगा।
5. **इसे सहेजें।** कैश्ड रीस्कैन में लगभग एक सेकंड लगता है, और नए hits कतार में आपके मौजूदा ट्राइएज निर्णयों को छुए बिना दिखाई देते हैं।
चरण 5 वह हिस्सा है जो बाकी को करने लायक बनाता है। निष्कर्ष `(path, rule, line, value-hash)` पर कुंजीबद्ध होते हैं, इसलिए एक रीस्कैन उन्हीं पंक्तियों को फिर से सम्मिलित करता है और आपकी स्थिति, नोट्स और owner साथ चलते हैं। इसके बिना आपको हर पुनरावृत्ति पर वही 300 hits फिर से समीक्षा करनी पड़ती और तीसरी बार में ही हार मान लेते।
---
## कमांड्स```bash
# size it up first: file count, total bytes, biggest folders, transfer estimates
sift survey \\fileserver\share
# take a rate-limited local copy (resumable; gentle = 5 MB/s by default)
sift copy \\fileserver\share C:\IR\case-4471 --speed gentle
# scan a share and open the triage UI
sift scan \\fileserver\share
# maximum recall: more noise, but a human is reading anyway
sift scan D:\dfs\dept --tier 3
# re-open the UI over the most recent scan
sift ui
# build a share of fabricated credentials, scan it, open the UI
sift demo C:\temp\demoshare
# inherit other tools' vendor-key rules, then use them in the live rescan loop
sift import-rules gitleaks.toml # gitleaks TOML
sift import-rules path/to/kingfisher/data/rules # a directory of YAML
# pull in what the other scanners found, into the same queue
trufflehog filesystem \\fileserver\share --json > th.json
sift import-findings th.json
# hand off to the incident record (redacted unless you say otherwise)
sift export --fmt pdf --status confirmed --out ir-4471.pdf
sift export --fmt csv --out ir-4471.csv
sift export --fmt pdf --no-redact # plaintext; handle as evidence
sift rules # what is loaded
sift selftest # detection tests against a synthetic share
# ask vendors whether confirmed findings are still live. NETWORK. Opt-in.
sift validate --status confirmed
जहाँ भी sift दिखाई दे, वहाँ आप C:\Dev\sift निर्देशिका से
python -m sift का उपयोग कर सकते हैं।
| Flag | प्रभाव |
|---|---|
--tier 1|2|3 | रिकॉल डायल। 1 = उच्च संकेत, 2 = डिफ़ॉल्ट, 3 = कुछ भी न छूटे |
--redact | स्टोर और एक्सपोर्ट में मान मास्क करें। यदि DB घटना की सीमा से बाहर जाता है तो उपयोग करें |
--no-ui | स्टोर भरें और बाहर निकलें, स्क्रिप्टेड रन के लिए |
--no-browser | UI सर्वर शुरू करें लेकिन ब्राउज़र न खोलें (RDP पर उपयोगी) |
--include/--exclude GLOB | वॉक को सीमित करें |
--no-archives | docx/xlsx/zip कंटेनर न खोलें |
--no-strings | बाइनरी पर strings पास न चलाएँ |
--no-large | --max-size से बड़ी फ़ाइलों को ब्लॉक में पढ़ने के बजाय छोड़ दें |
--jobs N | वर्कर प्रोसेस (डिफ़ॉल्ट: auto) |
--max-size MB | इससे ऊपर की फ़ाइलें छोड़ें (डिफ़ॉल्ट 25) |
--port N | UI पोर्ट (डिफ़ॉल्ट 8973) |