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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sfuzz — riscv से x86 बाइनरी अनुवाद और आधुनिक फ़ज़िंग तकनीकों का उपयोग करके उच्च प्रदर्शन फ़ज़िंग | Kitploit
उपकरण/GitHubGitHub/seal9055/sfuzz
गतिशील विश्लेषण (सैंडबॉक्सिंग)भेद्यता विश्लेषणफज़िंगबाइनरी विश्लेषण
GitHubseal9055/sfuzz

sfuzz

riscv से x86 बाइनरी अनुवाद और आधुनिक फ़ज़िंग तकनीकों का उपयोग करके उच्च प्रदर्शन फ़ज़िंग

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

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

सभी देखें →

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

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

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

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

SFUZZ

प्रारंभ तिथि: दिसंबर, 2021

यह एक कवरेज-निर्देशित (coverage-guided), इम्यूलेशन-आधारित ग्रेबॉक्स फज़र है जो नियर-नेटिव प्रदर्शन प्राप्त करने के लिए एक कस्टम जस्ट-इन-टाइम कंपाइलर का उपयोग करता है। यह निष्पादन के दौरान RISC-V elf बाइनरीज़ को x86 में JIT-संकलित करने से पहले उन्हें एक इंटरमीडिएट रिप्रेजेंटेशन में लिफ्ट करके काम करता है। JIT संकलन के दौरान कोड को इंस्ट्रूमेंट किया जाता है ताकि कवरेज ट्रैकिंग, asan, cmpcov, या स्नैपशॉट-आधारित फज़िंग जैसे फज़िंग-सुधार सक्षम हो सकें।


विशेषताएँ

  • मल्टी-थ्रेडेड, कितनी भी संख्या में थ्रेड्स का समर्थन करने वाला और लगभग रैखिक रूप से स्केल करने वाला
  • उच्च प्रदर्शन के लिए कस्टम JIT कंपाइलर और, अधिक महत्वपूर्ण रूप से, अनुकूलन-क्षमता जो qemu जैसे अन्य समाधानों के साथ हासिल करना कठिन है
  • कस्टम मेमोरी प्रबंधन इकाई, जो एक बार फिर उच्च अनुकूलन तथा बाइट-स्तरीय अनुमति जाँच और डर्टी-बिट-आधारित इम्यूलेटर रीसेट जैसी अत्यधिक लाभकारी सुविधाओं की अनुमति देती है। इसके अतिरिक्त, हीप-रूटीन के सुरक्षित उपयोग की अनुमति देने के लिए हुक भी लागू किए गए हैं।
  • आसान इन-मेमोरी फज़िंग की अनुमति देने के लिए वर्चुअलाइज़्ड फ़ाइल प्रबंधन
  • स्नैपशॉट-आधारित फज़िंग, ताकि निष्पादन के दौरान लक्ष्य की मेमोरी/रजिस्टर स्थिति का स्नैपशॉट लिया जा सके और सभी भविष्य के फज़ केस इस आधार-रेखा पर आधारित हों
  • एज-स्तरीय कवरेज ट्रैकिंग, और इस फीडबैक पर आधारित कवरेज-निर्देशित फज़िंग
  • विभिन्न म्यूटेटर, क्रैश डिडुप्लीकेशन, और एक सरल सीड शेड्यूलिंग एल्गोरिदम

विवरण

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

कई मायनों में, यह एक प्रूफ-ऑफ-कॉन्सेप्ट से अधिक है, जिस पर मैं कंपाइलर इंटर्नल्स सीखने के लिए काम करना चाहता था, और विभिन्न फज़िंग तकनीकों — जैसे अलग-अलग कवरेज मेट्रिक्स, सीड शेड्यूलर और स्नैपशॉट-आधारित फज़िंग — के साथ प्रयोग करने के लिए एक इम्यूलेशन-आधारित प्लेग्राउंड रखना चाहता था। हालाँकि, अधिक JIT अनुकूलन और सबसे महत्वपूर्ण रूप से mips या arm जैसी अधिक लोकप्रिय आर्किटेक्चर शामिल करने वाले एक्सटेंशन के साथ, इसका उपयोग निश्चित रूप से क्लोज़्ड-सोर्स कोड को कुशलतापूर्वक फज़ करने के लिए किया जा सकता है, जिसे केवल पुनर्संकलन द्वारा इंस्ट्रूमेंट नहीं किया जा सकता।

अब तक मेरे द्वारा किए गए परीक्षणों को देखते हुए, sfuzz में कई अन्य लोकप्रिय फज़र की तुलना में काफी कम ओवरहेड है, जिसके परिणामस्वरूप बहुत तेज़ प्रदर्शन मिलता है, विशेषकर छोटे फज़ केसों के लिए।

इस फज़र के लिए किए गए फीचर्स/विकल्पों पर अधिक विवरण संलग्न ब्लॉगपोस्ट (https://seal9055.com/blog/fuzzing/sfuzz) और नीचे सूचीबद्ध दस्तावेज़ फ़ाइलों में दिए गए हैं:

  • मेमोरी प्रबंधन - memory_management.md
  • कोड जनरेशन - code_gen.md
  • फज़र कार्यान्वयन/विशेषताएँ - fuzzing.md
  • कुछ सरल परीक्षण - benchmarking.md

उपयोग

यह पूरा फज़र rust में लिखा गया है, इसलिए रिपॉजिटरी क्लोन करने के बाद, संकलन के लिए बस cargo build --release चलाएँ।

चूँकि फज़र वर्तमान में केवल RISC-V का समर्थन करता है, इसलिए लक्ष्य को नीचे दिए गए टूलचेन (या इसी जैसे किसी अन्य) का उपयोग करके RISC-V में संकलित करना आवश्यक है। वैकल्पिक रूप से, यदि आपके पास पहले से कोई RISC-V बाइनरी है, तो वह भी पूरी तरह से काम करेगी।

एक बार यह सेटअप हो जाने पर, बस इनपुट/आउटपुट डायरेक्ट्रीज़ बनाएँ, इनपुट डायरेक्ट्री में कुछ प्रारंभिक सीड फ़ाइलें जोड़ें और फज़र शुरू कर दें।

./sfuzz -i in -o out -- ./test_cases/simple_test @@

थ्रेड्स की संख्या निर्दिष्ट करने, स्नैपशॉट फज़िंग सक्षम करने, म्यूटेटर में डिक्शनरी जोड़ने, आदि के लिए कमांडलाइन विकल्पों के माध्यम से अतिरिक्त फ्लैग पास किए जा सकते हैं। अतिरिक्त विकल्पों की सूची sfuzz को -h फ्लैग के साथ चलाकर देखी जा सकती है।

यदि आप विभिन्न जटिलता वाले कुछ लक्ष्यों पर फज़र का परीक्षण करना चाहते हैं, तो tools/program_generator पर उपलब्ध progrem_generator का उपयोग विभिन्न जटिलता के प्रोग्राम स्वचालित रूप से उत्पन्न करने के लिए किया जा सकता है। ध्यान दें कि उसके बाद लक्ष्य को संकलित करने के लिए आपको RISC-V टूलचेन की आवश्यकता होगी।

फज़र के लिए बाइनरी संकलित करने हेतु Riscv टूलचेन

यह riscv बाइनरी संकलित करने के लिए एक टूलचेन सेट करता है जिन्हें इस परियोजना द्वारा लोड/उपयोग किया जा सकता है।

root@kitploit:~
Riscv compiler/tooling:
    sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev \
    libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev \
    libexpat-dev
    git clone https://github.com/riscv/riscv-gnu-toolchain && cd riscv-gnu-toolchain
    ./configure --prefix=/opt/riscv --with-arch=rv64i
    sudo make

Debugger:
    gdb-multiarch

TODO

यह सूची उन सुविधाओं के समूह को दर्शाती है जिन्हें भविष्य में लागू करने की योजना है।

  • कार्यशील मेमोरी प्रबंधन यूनिट
  • JIT कंपाइलर
  • इन-मेमोरी फज़िंग के लिए वर्चुअलाइज़्ड फ़ाइलें
  • बाइट-स्तरीय अनुमति जाँच + हुक्ड/सुरक्षित एलोकेटर
  • एज-स्तरीय कवरेज ट्रैक करना
  • लक्ष्य फ़ंक्शनों के आसपास छोटे लूप्स में फज़ करने हेतु पर्सिस्टेंट मोड
  • क्रैश डिडुपिंग / अद्वितीय क्रैश
  • अधिक विकल्प शामिल करने के लिए म्यूटेटर अपडेट करना
  • सीड शेड्यूलिंग
  • मैजिक वैल्यू और चेकसम को पार करने के लिए CmpCov
  • फज़र के आस-पास कुछ टूलिंग जोड़ना
  • उचित बेंचमार्किंग
  • RISC-V M और A एक्सटेंशन लागू करना, ताकि JIT newlib के बजाय glibc का उपयोग कर सके
  • संकलन गति सुधारने के लिए असेंबलर बदलना
  • अधिक आर्किटेक्चर के लिए समर्थन (जैसे mips, arm)

संदर्भ

  • fuzzing.md में सूचीबद्ध सभी शोधपत्र
  • इम्यूलेशन-आधारित फज़िंग - Brandon Falk GamozoLabs
  • Intel सॉफ्टवेयर डेवलपर मैनुअल
  • RISCV यूज़र ISA स्पेसिफिकेशन
  • Rv8: एक उच्च-प्रदर्शन RISC-V से x86 बाइनरी अनुवादक - Michael Clark & Bruce Hoult
  • Engineerining a compiler Keith D. Cooper & Londa Torczon
  • Cranelift [https://cfallin.org/blog/] - Chris Fallin
  • Generating Low-Overhead Dynamic Binary Translators - Mathias Payer & Thomas R. Gross
  • Efficiently Computing Static Single Assignment Form and the Control Dependence Graph - Cytron et al
  • Computing Liveness Sets for SSA-Form Programs - Brandner et al
  • Linear Scan Register Allocation on SSA Form - Christian Wimmer & Michael Franz
  • http://web.cs.ucla.edu/~palsberg/course/cs132/linearscan.pdf
  • AddressSanitizer: A Fast Address Sanity Checker https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf
टूल डाउनलोड करें
  • JIT अनुकूलन, और रजिस्टर आवंटन का एक और प्रयास