Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sift — फ़ाइल शेयरों के लिए क्रेडेंशियल और संवेदनशील डेटा एक्सपोज़र ट्राइएज | Kitploit
उपकरण/GitHubGitHub/hotstartlabs/sift
रक्षात्मक उपकरणडिजिटल फोरेंसिकसीक्रेट डिटेक्शनघटना प्रतिक्रिया
GitHubhotstartlabs/sift

sift

फ़ाइल शेयरों के लिए क्रेडेंशियल और संवेदनशील डेटा एक्सपोज़र ट्राइएज

रिपॉजिटरी देखें
1681 महीना पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Sift Secrets

tests

फ़ाइल शेयरों के लिए क्रेडेंशियल और संवेदनशील डेटा एक्सपोज़र की ट्राइएज।

जब कोई खुला शेयर मिलता है, तो सवाल कभी यह नहीं होता कि "क्या इस रिपो में कोई लीक हुई कुंजी है"। सवाल होता है "अभी क्या एक्सपोज़ हुआ, और कारोबार बंद होने से पहले मुझे क्या रोल करना होगा।" 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

root@kitploit:~
स्कैनिंग इन प्लेस भी काम करता है। पहले नकली क्रेडेंशियल्स के शेयर पर इसे आज़माएँ:```bash
sift demo C:\temp\demoshare

sift.cmd एक लॉन्चर है जो किसी भी निर्देशिका से काम करता है। पूर्ण पथ के बजाय sift टाइप करने के लिए, C:\Dev\sift को PATH में जोड़ें:```bash setx PATH "%PATH%;C:\Dev\sift"

root@kitploit:~
जिस मशीन पर 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 का उपयोग कर सकते हैं।

जानने योग्य विकल्प

स्थिति कहाँ रहती है

निष्कर्ष %LOCALAPPDATA%\sift\ के अंतर्गत एक प्रति-लक्ष्य फ़ोल्डर में जाते हैं, कभी कार्यशील निर्देशिका में नहीं - डेटाबेस में प्लेनटेक्स्ट क्रेडेंशियल होते हैं, और अपने होम निर्देशिका से टूल चलाने पर वहाँ चुपचाप एक नहीं गिरना चाहिए। प्रत्येक शेयर को अपना स्वयं का स्टोर मिलता है, इसलिए दो एंगेजमेंट कभी भी ट्राइएज कतार साझा नहीं करते। sift ui बिना किसी तर्क के सबसे हालिया को फिर से खोलता है; --data DIR ओवरराइड करता है।

कस्टम नियम वैश्विक होते हैं, %LOCALAPPDATA%\sift\user-rules.json पर, इसलिए एक एंगेजमेंट के दौरान लिखा गया पैटर्न अगले शेयर पर आपकी मदद करता है।


स्कैन करने से पहले: सर्वेक्षण और अधिग्रहण

दोनों UI के हेडर में, पथ बॉक्स के बगल में, और CLI पर हैं।

आकार जाँचें एक केवल-स्टेट वॉक है। कुछ भी नहीं खोला जाता, इसलिए यह SMB पर भी सस्ता है, और यह आपको फ़ाइल संख्या, कुल बाइट्स, सबसे बड़े फ़ोल्डर, एक्सटेंशन द्वारा विभाजन, sift वास्तव में कितना पढ़ेगा, और प्रत्येक गति पर एक प्रतिलिपि कितनी देर लेगी, यह बताता है। किसी अज्ञात DFS रूट पर स्कैनर लगाना और इंतज़ार करना ही है कि दोपहर कैसे गायब हो जाती है।

स्थानीय रूप से कॉपी करें पहले शेयर को एक स्थानीय फ़ोल्डर में खींचता है। यह करना उचित है क्योंकि:

  • स्थानीय प्रतिलिपि स्कैन करना हजारों SMB राउंड-ट्रिप से कहीं तेज़ है;
  • यह दोहराने योग्य है, इसलिए एक नियम जोड़ना और फिर से स्कैन करना फ़ाइल सर्वर पर बार-बार भार नहीं डालता;
  • मूल को अछूता छोड़ दिया जाता है, जो "हमने इसे देखा" और "हमने इसे संरक्षित किया" के बीच का अंतर है यदि घटना कानूनी हो जाती है।

स्थानांतरण दर-सीमित है, डिफ़ॉल्ट 5 MB/s। दोपहर 2 बजे प्रोडक्शन फ़ाइल सर्वर के लिंक को संतृप्त करना आपकी जाँच को दूसरी घटना में बदल देता है। जब आप जानते हैं कि पथ निष्क्रिय है तो इसे खोलें।

गतिदर
gentle (डिफ़ॉल्ट)5 MB/s
normal25 MB/s
fast100 MB/s
unlimitedलिंक जो भी दे

स्थानांतरण फिर से शुरू होते हैं: समान आकार और mtime वाली गंतव्य फ़ाइल छोड़ दी जाती है, इसलिए 80% पर बाधित एक अधिग्रहण वहीं से जारी रहता है जहाँ वह रुका था। जो फ़ाइलें लॉक या अस्वीकृत हैं उन्हें दर्ज किया जाता है और रन को रोकने के बजाय छोड़ दिया जाता है।


रिपोर्ट

PDF, CSV, MD, और JSON, UI हेडर से या sift export --fmt से।

PDF वह है जो घटना रिकॉर्ड को सौंपी जाती है: लक्ष्य के साथ एक कवर पेज, गंभीरता और ट्राइएज स्थिति द्वारा कुल, सबसे अधिक बार आने वाले नियम, फ़ाइलों में पुन: उपयोग किए गए मान, फिर गंभीरता द्वारा समूहीकृत निष्कर्ष। यह बिना किसी PDF लाइब्रेरी के सीधे उत्पन्न होता है, इसलिए यह ऐसी मशीन पर काम करता है जिसने कभी pip नहीं देखा।

एक्सपोर्ट डिफ़ॉल्ट रूप से संपादित (redacted) होते हैं। मान मास्क किए जाते हैं, हर पृष्ठ बैनर-चिह्नित होता है, और एंडपॉइंट केवल एक स्पष्ट redact=0 पर मास्किंग अक्षम करता है - एक छोटा या गलत अनुरोध लीक नहीं कर सकता। UI में redaction बंद करने के लिए चेतावनी संवाद की पुष्टि आवश्यक होती है, और परिणामी फ़ाइल हर पृष्ठ पर UNREDACTED - CONTAINS PLAINTEXT CREDENTIALS बैनर-चिह्नित होती है।

निष्कर्ष डेटाबेस अभी भी वास्तविक मान रखता है, क्योंकि एक विश्लेषक को यह जानना आवश्यक है कि कौन सा पासवर्ड लीक हुआ ताकि यह जान सके कि क्या बदलना है। सीमा वह है जो टूल से बाहर जाती है।


कतार पर काम करना

सब कुछ क्लिक करने योग्य है। परिणाम सूची के शीर्ष पर क्रमबद्ध नियंत्रण गंभीरता, फ़ाइल पथ, नियम, ट्राइएज स्थिति, या सबसे हालिया द्वारा पुन: क्रमबद्ध करता है, इसे उलटने के लिए एक बटन के साथ। साइडबार फ़ैक्ट गंभीरता, श्रेणी, नियम और पुन: उपयोग किए गए मान द्वारा फ़िल्टर करते हैं। ट्राइएज, संदर्भ विस्तार, फ़ाइल खोलना और नियम निर्माण सभी बटन हैं।

नीचे दिए गए कीबोर्ड शॉर्टकट एक लंबी कतार के लिए त्वरक हैं, इसे चलाने का एकमात्र तरीका नहीं।

स्नैपशॉट बटन हाइलाइट किए गए स्निपेट को घटना टिकट में पेस्ट करने के लिए PNG में रेंडर करता है; स्निपेट कॉपी करें मार्कडाउन के रूप में भी ऐसा ही करता है।


सुरक्षा

UI एक ब्राउज़र विंडो में लाइव प्लेनटेक्स्ट क्रेडेंशियल प्रस्तुत करता है, इसलिए:

  • केवल 127.0.0.1 से बाइंड होता है, और --unsafe-bind के बिना कुछ और अस्वीकार करता है;
  • एक यादृच्छिक प्रति-लॉन्च टोकन की आवश्यकता होती है, जो लॉन्च URL में दिया जाता है और फिर SameSite=Strict कुकी में रखा जाता है;
  • Host हेडर को मान्य करता है, इसलिए एक शत्रुतापूर्ण पृष्ठ उस पर DNS-rebind नहीं कर सकता;
  • एक CSP भेजता है जिसमें कोई बाहरी उत्पत्ति नहीं होती - पृष्ठ पर कुछ भी वह लीक नहीं कर सकता जो वह प्रस्तुत करता है;
  • किसी भी ऐसे पथ को पढ़ने या खोलने से इनकार करता है जो पहले से निष्कर्ष डेटाबेस में नहीं है, इसलिए /api/context मनमाना फ़ाइल पठन नहीं है और /api/open मनमाना प्रक्रिया लॉन्च नहीं है।

निष्कर्ष डेटाबेस में डिज़ाइन द्वारा प्लेनटेक्स्ट क्रेडेंशियल होते हैं - एक IR विश्लेषक को यह जानना आवश्यक है कि कौन सा पासवर्ड लीक हुआ ताकि यह जान सके कि क्या बदलना है। %LOCALAPPDATA%\sift\<target>\findings.db को साक्ष्य के रूप में मानें: शेयर के समान हैंडलिंग, और एंगेजमेंट बंद होने पर इसे हटा दें। यदि यह घटना की सीमा से बाहर जाएगा तो --redact का उपयोग करें।

और स्पष्ट बात: sift केवल उन्हीं प्रणालियों पर चलाएँ जिन्हें एक्सेस करने के लिए आप अधिकृत हैं।


नियम कैसे व्यवस्थित हैं

sift/rules_builtin.py - सामग्री नियम। sift/rules_filename.py - फ़ाइलनाम नियम। दोनों रॉ-स्ट्रिंग पैटर्न वाले सादे Python हैं, इसलिए वे पठनीय और तुलनीय (diffable) हैं; उपयोगकर्ता नियम .sift/user-rules.json पर JSON में रहते हैं।

तीन स्तर आपको परिशुद्धता के बदले रिकॉल का व्यापार करने देते हैं:

  • Tier 1 - असंदिग्ध। विक्रेता कुंजी प्रारूप, PEM ब्लॉक, GPP cpassword, NTLM डंप, LDAP बाइंड पासवर्ड। अकेला आकार ही प्रमाण है।
  • Tier 2 (डिफ़ॉल्ट) - निकटता नियम। "किसी मान के पास एक गुप्त-जैसा शब्द।" जहाँ अधिकांश वास्तविक शेयर एक्सपोज़र रहता है।
  • Tier 3 - अलेबल उच्च-एन्ट्रॉपी स्ट्रिंग, लंबा हेक्स, IBAN। शोरगुल वाला, लेकिन जब आप उल्लंघन की सीमा निर्धारित कर रहे हों तो आप एक को मिस करने के बजाय 400 हिट पढ़ना पसंद करेंगे।

एक नियम min_digits, min_lowercase, min_uppercase, और min_special भी रख सकता है, इसलिए एक एकल शोरगुल वाला नियम बाकी को छुए बिना कड़ा किया जा सकता है, और examples - ऐसी स्ट्रिंग जिनसे उसे अभी भी मेल खाना चाहिए।

नियम जो स्वयं की जाँच करते हैं

examples उपयोगी आधा है। sift selftest हर नियम को उन स्ट्रिंग्स के विरुद्ध चलाता है जिनके लिए वह लिखा गया था, पूरे पथ से: मिलान, निष्कर्षण, फिर दमन फ़िल्टर। वह अंतिम चरण ही मायने रखता है, क्योंकि वास्तव में होने वाला प्रतिगमन कोई ऐसा पैटर्न नहीं है जो मेल खाना बंद कर दे - यह एक शोर फ़िल्टर है, जिसे कहीं और अच्छे कारणों से कड़ा किया गया है, और बाहर जाते समय चुपचाप एक वास्तविक निष्कर्ष को निगल रहा है।

यह तुरंत अपनी उपयोगिता सिद्ध करता है। मौजूदा नियमों में examples जोड़ने से एक जीवित अंतर सामने आया: एक अंडरस्कोर एक शब्द वर्ण है, इसलिए सामान्य-असाइनमेंट नियम में अग्रणी \b ने DB_PASSWORD, MYSQL_PASSWORD, या REDIS_PASSWORD के अंदर मेल खाने से इनकार कर दिया - अस्तित्व में सबसे सामान्य क्रेडेंशियल चर नामों में से तीन, चुपचाप मिस हो गए। उदाहरण स्पष्ट रूप से सही दिखता था और मेल नहीं खाता था, जो ठीक इसी के लिए है।

UI में आपके द्वारा लिखे गए नियमों को यह मुफ्त मिलता है: आपके द्वारा चुनी गई पंक्ति नियम के उदाहरण के रूप में सहेजी जाती है, इसलिए छह महीने बाद संपादित किया गया नियम आपको बताता है कि उसने उस चीज़ से मेल खाना कब बंद किया जिसने आपको इसे लिखने के लिए प्रेरित किया।

अन्य टूल के नियम पैक आयात करना

sift import-rules एक gitleaks .toml, एक Kingfisher/Titus-शैली .yml, या उनमें से एक निर्देशिका लेता है। Kingfisher के पैक के विरुद्ध यह 1,082 में से 1,073 नियम आयात करता है, उनकी एन्ट्रॉपी सीमाएँ, अंक और केस आवश्यकताएँ और examples को साथ लाता है। YAML को sift/yamlmini.py द्वारा पढ़ा जाता है, जो इन पैकों द्वारा उपयोग किए जाने वाले सबसेट के लिए एक रीडर है - कोई निर्भरता नहीं, और यह एंकर और टैग को समझने का दिखावा करने के बजाय उन पर raise करता है।

आते समय दो चीज़ें जानबूझकर हटाई जाती हैं:

  • validation: ब्लॉक, जो प्रति नियम एक URL निर्दिष्ट करते हैं। sift केवल validate.py में हार्डकोड किए गए होस्ट से संपर्क करता है। एक नियम पैक जो किसी एंडपॉइंट को निर्दिष्ट कर सकता है, यह चुन रहा होगा कि आपके निष्कर्ष कहाँ भेजे जाएँ, और एक नियम फ़ाइल डेटा है, निर्णय नहीं।
  • कोई भी नियम जिसका पैटर्न अब अपने दस्तावेजित उदाहरण से मेल नहीं खाता। पैक Rust और Hyperscan के लिए लिखे गए हैं, जहाँ [[:alnum:]] एक POSIX क्लास है; Python इसे शाब्दिक वर्णों के एक सेट के रूप में पढ़ता है, इसे खुशी से संकलित करता है, और गलत चीज़ से मेल खाता है। अनुवाद प्रत्येक नियम के examples के विरुद्ध जाँचा जाता है, इसलिए एक पैटर्न जो संकलन से बच गया लेकिन अर्थ बदल गया, चुपचाप कभी न चलने के बजाय अस्वीकार कर दिया जाता है। Kingfisher के बारह नियम उस जाँच में विफल होते हैं और आयात नहीं किए जाते।

sift का अपना दमन किसी दिए गए उदाहरण को नष्ट करेगा या नहीं, यह नियम को अयोग्य नहीं ठहराता - वे पैक जानबूझकर नकली नमूने भेजते हैं (keyXXXXXXXX, ...EXAMPLE), इसलिए प्लेसहोल्डर फ़िल्टर उदाहरण के बारे में सही है और पैटर्न के बारे में कुछ नहीं कहता। उस पर सख्त होने से अंतर खींचे जाने से पहले 121 कार्यशील नियम नष्ट हो गए।

दमन उतना ही काम कर रहा है जितना पहचान

सामान्य गुप्त नियम शोर के कारण छोड़ दिए जाते हैं, इसलिए शोर फ़िल्टर पैटर्न के समान सावधानी से ट्यून किए जाते हैं। एक वास्तविक 6,000-फ़ाइल ट्री के विरुद्ध मापा गया, नीचे दिए गए दमन नियमों ने निष्कर्षों को 1,088 से 257 तक काट दिया, परीक्षण कोर्पस पर रिकॉल का कोई नुकसान नहीं:

  • डॉटेड कोड संदर्भ। password: process.env.DB_PASS एक चर है, मान नहीं। यह एक दमन स्रोत ट्री में अधिकांश सामान्य-नियम शोर हटा देता है।
  • प्रकार एनोटेशन। def login(user: str, password: str) एक सिग्नेचर है।
  • विराम चिह्न से शुरू होने वाले मान एक regex होते हैं जिसने अभिव्यक्ति को बीच में काट दिया, क्रेडेंशियल नहीं।
  • गद्य के लिए एक अंक या प्रतीक आवश्यक है। इसके बिना, नियम क्रेडेंशियल के बारे में अंग्रेज़ी पढ़ता है - "a credential in the URL is reported and stripped" से "reported" मिलता है। एक ट्री पर 99 गलत सकारात्मक ने वह सिखाया।
  • बिल्ड और कैश निर्देशिकाएँ (.wrangler, .next, site-packages, node_modules, …) और मिनिफाइड बंडल और सोर्स मैप छोड़ दिए जाते हैं। मशीन-जनित पाठ केवल मशीन-जनित गलत सकारात्मक उत्पन्न करता है।

जानबूझकर ढीली पूंछ वाला कोई https://user:pass@host सामग्री नियम नहीं है। स्पष्ट संस्करण एक dev ट्री पर 476 बार चला, क्योंकि मिनिफाइड JSON में कोई व्हाइटस्पेस नहीं होता और पैटर्न एक URL से उद्धरणों और अल्पविरामों के पार तब तक चलता रहा जब तक उसे सैकड़ों वर्ण बाद एक असंबंधित @ नहीं मिला।


परीक्षण```bash

python tests/run_all.py

root@kitploit:~
बारह सूट: एक सिंथेटिक शेयर के विरुद्ध पता लगाना (इसमें विभाजित: "सीआई स्कैनर पहले से क्या पकड़ लेते हैं", "यह टूल जिस अंतर को लक्षित करता है", और "डिकॉय जिन्हें शांत रहना चाहिए"), कमांड लाइन, नियम-सुझाव रैंकिंग, सर्वेक्षण और थ्रॉटल्ड अधिग्रहण (दीवार घड़ी के विरुद्ध रेट लिमिट मापने सहित), पीडीएफ राइटर (पाठक के तरीके से वापस पार्स किया गया, यह साबित करने के लिए कि रिडक्शन पृष्ठ सामग्री तक पहुँच गया), gitleaks/trufflehog इम्पोर्टर, HTTP API जिसमें हर सुरक्षा गार्ड शामिल है, UI का स्थैतिक विश्लेषण, और बड़ी फ़ाइलों के लिए ब्लॉक रीडर (यह दावा करना कि अंतिम ब्लॉक में एक गुप्त रहस्य पूरी फ़ाइल में अपनी वास्तविक पंक्ति संख्या की रिपोर्ट करता है)।

खेलने के लिए एक शेयर पाने हेतु:```bash
sift demo C:\temp\demoshare

उस कोष में हर क्रेडेंशियल काल्पनिक है।


सत्यापन

दो स्तर, क्योंकि उनमें बहुत अलग जोखिम होता है।

चेकसम मुफ़्त हैं और हमेशा चालू रहते हैं। ghp_, npm_, Atlassian ATATT, Bitbucket ATCTT और GitLab के रूटेबल glpat- टोकन सभी अपने ही बॉडी पर CRC32 रखते हैं। इसे दोबारा गणना करने से ऑफ़लाइन वह उत्तर मिलता है जिसके लिए पहले इंटरनेट की ज़रूरत होती थी: क्या यह असली टोकन है, या वह उदाहरण है जिसे किसी ने README में चिपकाया था? निष्कर्षों को कतार में checksum ok या malformed टैग किया जाता है। चेकसम रूप साबित करता है, जीवन नहीं — एक सुगठित टोकन एक साल पहले रद्द किया जा चुका हो सकता है।

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

  • एंडपॉइंट sift/validate.py में हार्डकोडेड हैं। कोई भी नियम — बिल्ट-इन, उपयोगकर्ता-लिखित, या किसी और के पैक से आयातित — URL प्रदान नहीं कर सकता। इसके बिना, एक नियम पैक आयात करना ही शेयर पर मौजूद हर क्रेडेंशियल को पैक लेखक की पसंद के पते पर भेजने के लिए पर्याप्त होता।
  • रहस्य एक हेडर में यात्रा करता है, कभी भी URL या क्वेरी स्ट्रिंग में नहीं, ताकि वह प्रॉक्सी लॉग और विक्रेता एक्सेस लॉग से बाहर रहे।
  • रीडायरेक्ट का पालन नहीं किया जाता। 302 एक निर्देश है कि क्रेडेंशियल कहीं और भेजा जाए।
  • केवल वे क्रेडेंशियल भेजे जाते हैं जो पहले से अपना चेकसम पास कर चुके हों, ताकि स्पष्ट नकली कभी मशीन से बाहर न जाएं।
  • यह --redact स्टोर के विरुद्ध चलने से इनकार करता है: यदि मान मास्क किए गए हैं क्योंकि डेटाबेस घटना की सीमा छोड़ रहा है, तो प्लेनटेक्स्ट संचारित करना ठीक वही चीज़ है जिससे बचाव किया जा रहा है।
  • हर कॉल निष्कर्ष डेटाबेस के बगल में validation-log.json में लिखी जाती है — प्रदाता, एंडपॉइंट, समय, परिणाम — ताकि सहभागिता ठीक-ठीक बता सके कि किससे संपर्क किया गया था।

सत्यापन प्रयास क्रेडेंशियल स्वामी के ऑडिट लॉग में, उस समय, आपके पते के साथ दर्ज होते हैं। यह कभी-कभी ठीक वही होता है जो आप चाहते हैं और कभी-कभी किसी प्रतिद्वंद्वी को संकेत देता है जो देख रहा है। इसे चलाने से पहले तय करें; इसीलिए यह पूछता है।

वर्तमान में GitHub, npm, Slack और Stripe। trufflehog अभी भी कहीं अधिक सत्यापित करता है — इसे चलाएँ और दोनों पाने के लिए import-findings करें।


ज्ञात सीमाएँ

  • सत्यापन सीमित है। चेकसम पाँच टोकन परिवारों को कवर करते हैं; लाइव सत्यापन चार प्रदाताओं को कवर करता है। trufflehog सैकड़ों सत्यापित करता है — इसे चलाएँ और import-findings करें; सत्यापित हिट शीर्ष पर क्रमबद्ध हो जाते हैं।
  • एन्क्रिप्टेड कंटेनर केवल फ़ाइल-नाम आधारित हैं। एक .kdbx या .pfx नाम से रिपोर्ट किया जाता है; sift उसे खोलने का प्रयास नहीं करता।
  • SQLite डेटाबेस बाइट्स के रूप में नहीं, तालिकाओं के रूप में पढ़े जाते हैं। एक्सटेंशन के बजाय हेडर से पहचाने जाते हैं, केवल-पढ़ने योग्य और इम्यूटेबल खोले जाते हैं ताकि किसी साक्ष्य वाली फ़ाइल के पास कुछ भी न लिखा जाए। कुंजी/मान कॉन्फ़िग तालिकाओं को name=value में पुनः संयोजित किया जाता है, जिसके बिना गुप्त शब्द और उसका मान अलग-अलग कॉलम में बैठते हैं और कोई नियम जोड़ी नहीं देखता।
  • .7z, .rar और नेस्टेड आर्काइव चिह्नित किए जाते हैं लेकिन निकाले नहीं जाते। केवल ZIP-आधारित प्रारूप और .eml संदेश अंदर पढ़े जाते हैं।
  • --max-size से बड़ी फ़ाइलें ब्लॉकों में पढ़ी जाती हैं, कैश नहीं की जातीं। उन्हें स्कैन किया जाता है (4 GB .bak में एक कनेक्शन स्ट्रिंग उसकी वास्तविक पंक्ति संख्या पर मिल जाती है), लेकिन टेक्स्ट कैश केवल उतना ही रखता है जितना फिट होता है, इसलिए एक-सेकंड का कैश्ड पुनः-स्कैन उन्हें कवर नहीं करता — एक नया नियम अगले पूर्ण स्कैन पर बड़ी फ़ाइल तक पहुँचता है।
  • इसे उस पथ पर इंगित करें जो आपके पास पहले से है। खुले शेयर ढूँढना किसी अन्य उपकरण का काम है।

लाइसेंस

Apache-2.0. देखें LICENSE।

पहचान परीक्षण कोष (sift/selftest.py, tests/) में जानबूझकर प्रारूप-सही लेकिन काल्पनिक क्रेडेंशियल हैं; उन पथों के लिए सीक्रेट-स्कैनिंग अलर्ट .github/secret_scanning.yml के माध्यम से दबाए गए हैं।

टूल डाउनलोड करें
Flagप्रभाव
--tier 1|2|3रिकॉल डायल। 1 = उच्च संकेत, 2 = डिफ़ॉल्ट, 3 = कुछ भी न छूटे
--redactस्टोर और एक्सपोर्ट में मान मास्क करें। यदि DB घटना की सीमा से बाहर जाता है तो उपयोग करें
--no-uiस्टोर भरें और बाहर निकलें, स्क्रिप्टेड रन के लिए
--no-browserUI सर्वर शुरू करें लेकिन ब्राउज़र न खोलें (RDP पर उपयोगी)
--include/--exclude GLOBवॉक को सीमित करें
--no-archivesdocx/xlsx/zip कंटेनर न खोलें
--no-stringsबाइनरी पर strings पास न चलाएँ
--no-large--max-size से बड़ी फ़ाइलों को ब्लॉक में पढ़ने के बजाय छोड़ दें
--jobs Nवर्कर प्रोसेस (डिफ़ॉल्ट: auto)
--max-size MBइससे ऊपर की फ़ाइलें छोड़ें (डिफ़ॉल्ट 25)
--port NUI पोर्ट (डिफ़ॉल्ट 8973)
कुंजीक्रिया
j / kअगला / पिछला निष्कर्ष
↑ / ↓संदर्भ ऊपर / नीचे विस्तृत करें
c / fपुष्टि करें / गलत सकारात्मक चिह्नित करें
xबल्क ट्राइएज के लिए चयन टॉगल करें
o / nVS Code में लाइन पर खोलें / फ़ाइल को Notepad में खोलें
rहाइलाइट किए गए पाठ से एक नियम बनाएँ
yमान कॉपी करें
/खोजें
कोई शेयर गणना नहीं।
  • .doc/.xls/.pdf (2007-पूर्व और PDF) वास्तविक पार्सर के बजाय स्ट्रिंग्स पास से गुजरते हैं, इसलिए उन पर रिकॉल OOXML प्रारूपों की तुलना में कम है।