
प्रोवेनेंस के साथ भेद्यता ट्राइएज। स्थानीय रूप से निर्मित कॉर्पोरा (NVD/KEV/EPSS, ExploitDB, nmap script.db) से CVEs का समाधान करता है और सत्यापन कमांड उत्पन्न करता है, जिन्हें इस आधार पर वर्गीकृत किया जाता है कि लक्ष्य पर चलाए जाने पर वे क्या प्रभाव डालते हैं।
एक भेद्यता ट्राइएज टूल। यह वह लेता है जो एक स्कैन पहले ही खोज चुका है, यह पता लगाता है कि कौन से CVE संभवतः लागू होते हैं, आपको बताता है कि इसमें कितना विश्वास है और क्यों, और आपको स्वयं जाँच करने के लिए कमांड देता है।
यह कुछ भी स्कैन नहीं करता, और यह कुछ भी एक्सप्लॉइट नहीं करता।
git clone https://github.com/xGhst0/reconkg && cd reconkg && pip install -e . --break-system-packages && python -m reconkg.selfcheck
वह अंतिम चरण बताता है कि वह क्या देख सकता है और क्या नहीं: क्या nmap का script.db मिला, कौन-से कॉर्पस कॉन्फ़िगर किए गए हैं, और कितने यथार्थवादी फ़िंगरप्रिंट वास्तव में कोई लीड उत्पन्न करते हैं। इसे पहले चलाएँ। डिफ़ॉल्ट रूप से उत्तर "नौ हस्तलिखित CVE" है, और selfcheck यही बताता है, बजाय इसके कि आपको अन्यथा मान लेने दिया जाए।
नौ अंतर्निहित प्रविष्टियाँ एक प्रदर्शन फ़िक्स्चर हैं। किसी भी वास्तविक उपयोग के लिए:
export NVD_API_KEY=... # free: https://nvd.nist.gov/developers/request-an-api-key
python -m reconkg.fetch --dest ~/.reconkg/feeds --all
python -m reconkg.builddb --feeds ~/.reconkg/feeds --out ~/.reconkg/vuln.db
export RECONKG_VULN_DB=~/.reconkg/vuln.db
export RECONKG_EXPLOIT_DB=~/.reconkg/exploits.db
export RECONKG_SCRIPT_DB=/usr/share/nmap/scripts/script.db
API key के बिना NVD 5 requests प्रति 30 seconds तक सीमित कर देता है और पूरा
pull लगभग चार घंटे लेता है, पच्चीस मिनट के बजाय। यह checkpoint करता है,
इसलिए बाधित pull फिर से शुरू हो जाता है। --since केवल वही pull करता है जो बदला है।
यदि कोई corpus variable सेट है और फ़ाइल खोली नहीं जा सकती, तो reconkg शुरू होने से इंकार कर देता है। जब आपने 300,000 मांगे हों और चुपचाप नौ entries परोस दिए जाएं, तो इसका मतलब होगा ऐसा scan जो कुछ नहीं ढूंढता और ऐसा दिखता है जैसे काम कर गया।
python -m reconkg.app # serves http://127.0.0.1:8765/ui
python -m reconkg.console # REPL
app केवल लूपबैक पर बाइंड होता है, इसे बदलने के लिए कोई फ़्लैग नहीं है। यह प्रक्रिया आपके स्कैन परिणाम रखती है और उन होस्ट्स के लिए कमांड जारी करती है जिन्हें आप परीक्षण कर रहे हैं; नेटवर्क के बाकी हिस्से से उस तक पहुँच बनाए रखने की तुलना में SSH टनल एक छोटी कीमत है। --port इसे स्थानांतरित करता है, RECONKG_PORT एक डिफ़ॉल्ट सेट करता है।
प्रमाणीकरण। प्रत्येक रूट को Authorization: Bearer <token> की आवश्यकता होती है, जो RECONKG_TOKENS से name:role:token के रूप में आता है (भूमिकाएँ: viewer, scanner, operator, admin; टोकन कम से कम 16 अक्षरों के)। यदि यह सेट नहीं है, तो app केवल उस प्रक्रिया के लिए एक टोकन बनाता है और स्टार्टअप पर उसे प्रिंट करता है — डिस्क पर नहीं लिखा जाता, हर पुनःआरंभ पर अलग।
एक ब्राउज़र सादे नेविगेशन में हेडर संलग्न नहीं कर सकता, इसलिए सीधे /ui खोलने पर 401 आएगा। हेडर-इंजेक्ट करने वाले एक्सटेंशन का उपयोग करें, या API को चलाएँ:
export RECONKG_TOKENS="me:admin:$(openssl rand -hex 16)"
curl -H "Authorization: Bearer ${RECONKG_TOKENS##*:}" \
http://127.0.0.1:8765/api/corpus
UI क्लिक पर provenance के साथ knowledge graph दिखाता है, ताकि आप देख सकें क्यों किसी CVE को किसी host से जोड़ा गया, बजाय किसी score पर भरोसा करने के, और KEV और EPSS को तौलते हुए triage priority के अनुसार क्रमबद्ध एक ledger भी।
हर सुझाया गया command एक NSE category के साथ आता है जो बताती है कि इसे चलाने से target पर क्या असर होता है। यह शब्दावली nmap की है, यहाँ गढ़ी नहीं गई है।
| Category | reconkg क्या करता है |
|---|---|
safe, discovery, version | composed, डिफ़ॉल्ट रूप से दिखाया जाता है |
intrusive, vuln, unclassified | composed, बॉक्स टिकाने पर दिखाया जाता है, authorisation चेतावनी के साथ |
exploit, dos, fuzzer, brute | named, कभी composed नहीं |
अंतिम पंक्ति ही सीमा है। यदि किसी lead के लिए कोई कार्यशील exploit मौजूद है, तो reconkg आपको module या template और उसे कहाँ खोजना है बताता है। यह उसे किसी ऐसे invocation में नहीं जोड़ता जिसमें आपका target पहले से शामिल हो। Metasploit सुझाव show options पर रुक जाते हैं — वह चरण जहाँ आप RHOSTS पढ़कर पुष्टि करते हैं कि यह वही host है जिसके विरुद्ध आपको अधिकृत किया गया है।
यह आपके स्वयं के बॉक्स पर एक keystroke का अंतर है, और इस बात में कहीं बड़ा अंतर कि यह tool क्या है।
Safety को प्रति check वर्गीकृत किया जाता है, कभी प्रति tool नहीं। यह नखरा नहीं है:
मौजूदा nuclei CVE templates exploit करके detection प्राप्त करते हैं — एक Langflow RCE के माध्यम से subprocess.run('cat /etc/passwd') payload post करता है और root:.*:0:0: पर match करता है। जो भी यह मानता है कि "nuclei detect करता है, Metasploit exploit करता है" वह पहले ही template पर गलत साबित होता है, इसलिए nuclei को unclassified माना जाता है और वह opt-in के पीछे रहता है।
selfcheck चापलूसी भरा नहीं, बल्कि वास्तविक hit rate प्रिंट करता है।describe() 30 दिन से अधिक पुराने corpus को stale चिह्नित करता है और बताता है कि कौन सा feed पुराना है।pip install -r requirements-dev.txt
python -m pytest tests/ -q # 1219 tests
python -m audit.mutation # mutation testing, 12 targets at 100%
python -m audit.scale_bench # corpus scale benchmark
docs/ में डिज़ाइन नोट्स और ऊपर दिए गए निर्णयों के पीछे का तर्क शामिल है। audit/AUDIT.md निष्कर्षों का रिकॉर्ड है: दस adversarial राउंड्स में 47 निष्कर्ष, जिसमें उस एक बग आकार का विश्लेषण भी शामिल है जो उनमें से 13 के लिए ज़िम्मेदार है, और इस बात का ईमानदार मूल्यांकन कि किसने इसे रोका है और किसने नहीं।
MIT — देखें LICENSE।
reconkg कोई भी vulnerability डेटा शिप नहीं करता। कॉर्पोरा आपकी मशीन पर उन फ़ीड्स से बनाए जाते हैं जिन्हें आप स्वयं फ़ेच करते हैं, जिससे उनके लाइसेंस का सम्मान करने का दायित्व आपका ही रहता है; विशेष रूप से ExploitDB का इंडेक्स GPL-2.0-or-later है और इसे यहाँ जानबूझकर कभी पुनर्वितरित नहीं किया जाता।
reconkg जो कुछ भी उत्सर्जित करता है, वह किसी मनुष्य द्वारा चलाए जाने के लिए एक सुझाव है। किसी ऐसे सिस्टम के विरुद्ध intrusive या vuln जाँच चलाना जिसका आप स्वामी नहीं हैं या जिसके परीक्षण के लिए आपके पास लिखित प्राधिकरण नहीं है, अधिकांश न्यायक्षेत्रों में अवैध है।