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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
fuzzable — स्थैतिक विश्लेषण ढांचा जो स्रोत कोड और बाइनरी में fuzzable फंक्शन लक्ष्यों की पहचान करता है, harness टेम्पलेट उत्पन्न करता है, और स्वचालित भेद्यता खोज के लिए AFL++ और libFuzzer के साथ एकीकृत होता है। | Kitploit
उपकरण/GitHubGitHub/ex0dus-0x/fuzzable
स्थैतिक विश्लेषणभेद्यता विश्लेषणरिवर्स इंजीनियरिंगफज़िंगबाइनरी विश्लेषण
GitHubex0dus-0x/fuzzable

fuzzable

स्थैतिक विश्लेषण ढांचा जो स्रोत कोड और बाइनरी में fuzzable फंक्शन लक्ष्यों की पहचान करता है, harness टेम्पलेट उत्पन्न करता है, और स्वचालित भेद्यता खोज के लिए AFL++ और libFuzzer के साथ एकीकृत होता है।

रिपॉजिटरी देखें
5495912 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

फ़ज़बल

Build Status PyPI version Blackhat

स्टैटिक विश्लेषण के साथ फज़ करने योग्य लक्ष्य की खोज को स्वचालित करने के लिए फ्रेमवर्क

example

परिचय

सॉफ्टवेयर पर सुरक्षा मूल्यांकन करने वाले भेद्यता शोधकर्ता अक्सर AFL++ और libFuzzer जैसे शक्तिशाली टूल्स के माध्यम से कवरेज-निर्देशित फ़ज़िंग की क्षमताओं का उपयोग करते हैं। यह महत्वपूर्ण है क्योंकि यह बग हंटिंग प्रक्रिया को स्वचालित करता है और लक्ष्यों में शोषण योग्य स्थितियों को तेजी से प्रकट करता है। हालांकि, बड़े और जटिल कोडबेस या बंद-स्रोत बाइनरी का सामना करते समय, शोधकर्ताओं को मैन्युअल रूप से ऑडिट करने और उन्हें रिवर्स इंजीनियर करने में काफी समय देना पड़ता है ताकि उन फ़ंक्शनों की पहचान की जा सके जहाँ फ़ज़िंग-आधारित अन्वेषण उपयोगी हो सकता है।

फ़ज़बल एक फ्रेमवर्क है जो C/C++ स्रोत कोड और बाइनरी दोनों के साथ एकीकृत होता है ताकि भेद्यता शोधकर्ताओं को फ़ज़िंग के लिए उपयुक्त फ़ंक्शन लक्ष्यों की पहचान करने में सहायता मिल सके। यह सॉफ्टवेयर में जोखिम भरे व्यवहारों और उन्हें निष्पादित करने वाले फ़ंक्शनों को इंगित करने के लिए कई स्थैतिक विश्लेषण-आधारित ह्यूरिस्टिक्स लागू करके किया जाता है। शोधकर्ता फिर फ्रेमवर्क का उपयोग बुनियादी हार्नेस टेम्पलेट उत्पन्न करने के लिए कर सकते हैं, जिनका उपयोग भेद्यता की खोज के लिए या Google के oss-fuzz प्रोजेक्ट जैसे सतत फ़ज़िंग पाइपलाइन के हिस्से के रूप में एकीकृत करने के लिए किया जा सकता है।

एक स्टैंडअलोन टूल के रूप में चलने के अलावा, Fuzzable को Binary Ninja डिस्सेम्बलर के लिए एक प्लगइन के रूप में भी एकीकृत किया गया है, और अन्य डिस्सेम्बली बैकएंड के लिए समर्थन विकसित किया जा रहा है।

टूल के बारे में मूल ब्लॉग पोस्ट यहाँ देखें, जो स्थैतिक विश्लेषण ह्यूरिस्टिक्स के तकनीकी विनिर्देशों और यह टूल कैसे अस्तित्व में आया, पर प्रकाश डालता है। यह टूल Black Hat Arsenal USA 2022 में भी प्रदर्शित किया गया है।

विशेषताएं

  • Angr और Binary Ninja के साथ बाइनरी और tree-sitter के साथ स्रोत कोड आर्टिफैक्ट्स का विश्लेषण करने का समर्थन करता है।
  • स्टैटिक विश्लेषण को स्टैंडअलोन CLI टूल या Binary Ninja प्लगइन दोनों के रूप में चलाएँ।
  • फ़ज़िंग अभियानों को तेजी से बनाने के लिए हार्नेस जनरेशन।

स्थापना

कुछ बाइनरी लक्ष्यों को कुछ सैनिटाइज़िंग (जैसे सिग्नेचर मैचिंग, या इनलाइनिंग से फ़ंक्शनों की पहचान) की आवश्यकता हो सकती है, और इसलिए fuzzable मुख्य रूप से Binary Ninja को एक डिस्सेम्बली बैकएंड के रूप में उपयोग करता है क्योंकि यह इन समस्याओं को प्रभावी ढंग से हल करने में सक्षम है। इसलिए, इसका उपयोग स्टैंडअलोन टूल और प्लगइन दोनों के रूप में किया जा सकता है।

चूंकि Binary Ninja सभी के लिए सुलभ नहीं है और सुरक्षा मूल्यांकन के लिए और संभावित रूप से क्लाउड में स्केल करने की मांग हो सकती है, एक angr फ़ॉलबैक बैकएंड भी समर्थित है। मैं भविष्य में अन्य डिस्सेम्बलरों को भी शामिल करने की आशा करता हूं (प्राथमिकता: Ghidra)।

कमांड लाइन (स्टैंडअलोन)

यदि आपके पास Binary Ninja Commercial है, तो स्टैंडअलोन हेडलेस उपयोग के लिए API स्थापित करना सुनिश्चित करें:

root@kitploit:~
$ python3 /Applications/Binary\ Ninja.app/Contents/Resources/scripts/install_api.py

pip से स्थापित करें:

root@kitploit:~
$ pip install fuzzable

मैनुअल/डेवलपमेंट बिल्ड

हम निर्भरता प्रबंधन और बिल्डिंग के लिए poetry का उपयोग करते हैं। मैनुअल बिल्ड करने के लिए, तृतीय-पक्ष मॉड्यूल के साथ रिपॉजिटरी क्लोन करें:

root@kitploit:~
$ git clone --recursive https://github.com/ex0dus-0x/fuzzable

मैन्युअल रूप से स्थापित करने के लिए:

root@kitploit:~
$ cd fuzzable/

# poetry के बिना
$ pip install .

# poetry के साथ
$ poetry install

# विकास virtualenv के लिए poetry के साथ
$ poetry shell

अब आप टूल के साथ बाइनरी और/या स्रोत कोड का विश्लेषण कर सकते हैं!

root@kitploit:~
# एकल साझा ऑब्जेक्ट लाइब्रेरी बाइनरी का विश्लेषण
$ fuzzable analyze examples/binaries/libbasic.so

# एकल C स्रोत फ़ाइल का विश्लेषण
$ fuzzable analyze examples/source/libbasic.c

# एकाधिक C/C++ फ़ाइलों और हेडर वाले वर्कस्पेस का विश्लेषण
$ fuzzable analyze examples/source/source_bundle/

Binary Ninja प्लगइन

fuzzable को Binary Ninja प्लगइन मार्केटप्लेस के माध्यम से आसानी से स्थापित किया जा सकता है Binary Ninja > Manage Plugins पर जाकर और इसे खोजकर। यहाँ fuzzable प्लगइन चलने का एक उदाहरण है, फ़ज़िंग और आगे भेद्यता मूल्यांकन के लिए लक्ष्यों की सटीकता से पहचान करना:

binja_example

उपयोग

fuzzable आपके विश्लेषण को बेहतर ढंग से ट्यून करने में मदद करने के लिए विभिन्न विकल्पों के साथ आता है। भविष्य की योजनाओं और किसी भी सुविधा अनुरोध में और अधिक समर्थित किया जाएगा।

स्थैतिक विश्लेषण ह्यूरिस्टिक्स

फ़ज़ क्षमता निर्धारित करने के लिए, fuzzable यह निर्धारित करने के लिए कई ह्यूरिस्टिक्स का उपयोग करता है कि गतिशील विश्लेषण के लिए कौन से लक्ष्य सबसे अधिक व्यवहार्य हैं। इन ह्यूरिस्टिक्स को scikit-criteria लाइब्रेरी का उपयोग करके अलग-अलग भार दिया जाता है, जो सर्वोत्तम उम्मीदवारों को निर्धारित करने के लिए मल्टी-क्राइटेरिया निर्णय विश्लेषण का उपयोग करता है। ये मीट्रिक और उनके भार यहाँ देखे जा सकते हैं:

जैसा कि उल्लेख किया गया है, अधिक गहन जानकारी के लिए तकनीकी ब्लॉग पोस्ट देखें कि इन मीट्रिक का उपयोग क्यों और कैसे किया जाता है।

कई मीट्रिक बड़े पैमाने पर Vincenzo Iozzo के 0-नॉलेज फ़ज़िंग में मूल कार्य से प्रेरित थे।

आप जिस भी लक्ष्य का विश्लेषण करना चाहते हैं वह विविध है, और fuzzable प्रोग्राम लक्ष्य में हर एज केस व्यवहार का हिसाब नहीं रख पाएगा। इसलिए, विश्लेषण के दौरान इन भारों को ट्यून करना महत्वपूर्ण हो सकता है ताकि यह देखा जा सके कि क्या अलग-अलग परिणाम आपके उपयोग के मामले के लिए अधिक समझ में आते हैं। CLI में इन भारों को ट्यून करने के लिए, बस --score-weights तर्क निर्दिष्ट करें:

root@kitploit:~
$ fuzzable analyze <TARGET> --score-weights=0.2,0.2,0.2,0.2,0.2

विश्लेषण फ़िल्टरिंग

डिफ़ॉल्ट रूप से, fuzzable निम्नलिखित मानदंडों के आधार पर फ़ंक्शन लक्ष्यों को फ़िल्टर करेगा:

  • शीर्ष-स्तरीय प्रविष्टि कॉल - ऐसे फ़ंक्शन जिन्हें लक्ष्य में किसी अन्य कॉल द्वारा नहीं बुलाया जाता है। ये आदर्श प्रवेश बिंदु हैं जिनमें संभावित रूप से बहुत अधिक कवरेज होता है।
  • स्टैटिक कॉल - (केवल स्रोत) ऐसे फ़ंक्शन जो static हैं और हेडर के माध्यम से उजागर नहीं होते हैं।
  • आयात - (केवल बाइनरी) लक्ष्य के कार्यान्वयन द्वारा उपयोग की जा रही अन्य लाइब्रेरी निर्भरताएं।

fuzzable द्वारा फ़िल्टर किए गए कॉल को देखने के लिए, --list_ignored फ़्लैग सेट करें:

root@kitploit:~
$ fuzzable analyze --list-ignored <TARGET>

Binary Ninja में, आप इस सेटिंग को Settings > Fuzzable > List Ignored Calls में चालू कर सकते हैं।

यदि fuzzable गलती से उन महत्वपूर्ण कॉलों को फ़िल्टर कर देता है जिनका विश्लेषण किया जाना चाहिए, तो रन के दौरान उन्हें शामिल करने के लिए --include-* तर्कों का उपयोग करने की अनुशंसा की जाती है:

root@kitploit:~
# फ़िल्टर किए गए सभी गैर-शीर्ष-स्तरीय कॉल शामिल करें
$ fuzzable analyze --include-nontop <TARGET>

# विशेष प्रतीक शामिल करें जो फ़िल्टर किए गए थे
$ fuzzable analyze --include-sym <SYM> <TARGET>

Binary Ninja में, यह Settings > Fuzzable > Include non-top level calls और Symbols to Exclude के माध्यम से समर्थित है।

हार्नेस जनरेशन

अब जब आपको अपने फ़ज़ करने के लिए आदर्श उम्मीदवार मिल गए हैं, तो fuzzable आपको फ़ज़िंग हार्नेस उत्पन्न करने में भी मदद करेगा जो (लगभग) फ़ाइल-आधारित फ़ज़र (जैसे AFL++, Honggfuzz) या इन-मेमोरी फ़ज़र (libFuzzer) के साथ उपयोग के लिए इंस्ट्रूमेंट और कंपाइल करने के लिए तैयार हैं। CLI में ऐसा करने के लिए:

root@kitploit:~
# एक उम्मीदवार से हार्नेस उत्पन्न करें
$ fuzzable create-harness target --symbol-name=some_unsafe_call

# हार्नेस में न्यूनतम और आवश्यक संशोधन करें
$ vim target_some_unsafe_call_harness.cpp

# AFL-QEMU के लिए उदाहरण संकलन, जो उत्पन्न हार्नेस की टिप्पणियों में निर्दिष्ट है
$ clang target_some_unsafe_call_harness.cpp -no-pie -o target_some_unsafe_call_harness -ldl

# अपने आधार बीज बनाएं, आदर्श रूप से इनपुट के लिए अधिक अच्छी तरह से बने होने चाहिए
$ mkdir in/
$ echo "seed" >> in/seed

# ब्लैक बॉक्स फ़ज़िंग शुरू करें
$ afl-fuzz -Q -m none -i in/ -o out/ -- ./target_some_unsafe_call_harness

यदि यह लक्ष्य एक स्रोत कोडबेस है, तो सामान्य स्रोत टेम्पलेट का उपयोग किया जाएगा।

यदि लक्ष्य एक बाइनरी है, तो सामान्य ब्लैक-बॉक्स टेम्पलेट का उपयोग किया जाएगा, जिसका उपयोग आदर्श रूप से AFL-QEMU जैसे फ़ज़िंग एमुलेशन मोड के साथ किया जा सकता है। यदि प्रतीक सीधे dlopen करने के लिए निर्यात नहीं किया गया है, तो LIEF का उपयोग करके बाइनरी की एक प्रति को साझा ऑब्जेक्ट के रूप में भी बनाया जाएगा।

फिलहाल, यह सुविधा काफी प्रारंभिक है, क्योंकि यह केवल उपयुक्त मापदंडों के साथ एक स्टैंडअलोन C++ हार्नेस बनाएगा, और किसी भी रनटाइम व्यवहार (जैसे संरचनाओं को तत्काल करना और मुक्त करना) के लिए आवश्यक कोड स्वचालित रूप से उत्पन्न नहीं करेगा। हालांकि, fuzzable के लिए बनाए गए टेम्पलेट आपको अभी भी जल्दी से चालू कर देंगे। यहाँ कुछ महत्वाकांक्षी विशेषताएं हैं जिन्हें मैं भविष्य में लागू करना चाहूंगा:

  • पूर्ण हार्नेस संश्लेषण - हार्नेस बिना किसी मैन्युअल परिवर्तन के सीधे काम करेंगे।
  • DeepState फ्रेमवर्क (केवल स्रोत) का उपयोग करके संभावित यूनिट परीक्षणों से संश्लेषण।
  • प्रबंधित सतत फ़ज़िंग फ्लीट पर तत्काल तैनाती।

रिपोर्ट निर्यात करना

fuzzable विभिन्न स्वरूपों में रिपोर्ट उत्पन्न करने का समर्थन करता है। वर्तमान में समर्थित हैं JSON, CSV और Markdown। यह उपयोगी हो सकता है यदि आप इसे ऑटोमेशन के हिस्से के रूप में उपयोग कर रहे हैं जहाँ आप आउटपुट को एक क्रमबद्ध स्वरूप में इनजेस्ट करना चाहेंगे।

CLI में, बस उपयुक्त एक्सटेंशन के साथ फ़ाइल नाम के साथ --export तर्क पास करें:

root@kitploit:~
$ fuzzable analyze --export=report.json <TARGET>

Binary Ninja में, Plugins > Fuzzable > Export Fuzzability Report > ... पर जाएँ और वह प्रारूप चुनें जिसमें आप निर्यात करना चाहते हैं और वह पथ जहाँ आप इसे लिखना चाहते हैं।

योगदान

यह टूल लगातार विकसित किया जाएगा, और बाहरी अनुरक्षकों से कोई भी मदद सराहनीय है!

  • सुविधा अनुरोधों या बग के लिए जो आपके सामने आए हैं, एक issue बनाएँ।
  • फिक्स और संवर्द्धन के लिए जिन्हें आप इस टूल में योगदान करना चाहेंगे, एक pull request जमा करें।

लाइसेंस

Fuzzable MIT लाइसेंस के तहत लाइसेंस प्राप्त है।

टूल डाउनलोड करें
ह्यूरिस्टिकविवरणभार
फ़ज़ फ्रेंडली नामप्रतीक नाम ऐसे व्यवहार को दर्शाता है जो फ़ाइल/बफर इनपुट को अंतर्ग्रहण करता है0.3
जोखिम भरे सिंकतर्क जो जोखिम भरे कॉल में प्रवाहित होते हैं (जैसे memcpy)0.3
प्राकृतिक लूप्सडोमिनेंस फ्रंटियर के साथ पाए गए लूपों की संख्या0.05
चक्रीय जटिलताकिनारों + नोड्स पर आधारित फ़ंक्शन लक्ष्य की जटिलता0.05
कवरेज गहराईलक्ष्य जितने कैलीज़ में प्रवेश करता है उनकी संख्या0.3