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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
manul — मैन्युल एक कवरेज-निर्देशित समांतर फ़ज़र है जो विंडोज, लिनक्स और मैकओएस पर ओपन-सोर्स और ब्लैकबॉक्स बाइनरीज़ के लिए है। | Kitploit
उपकरण/GitHubGitHub/mxmssh/manul
गतिशील विश्लेषण (सैंडबॉक्सिंग)भेद्यता विश्लेषणफज़िंगबाइनरी विश्लेषण
GitHubmxmssh/manul

manul

मैन्युल एक कवरेज-निर्देशित समांतर फ़ज़र है जो विंडोज, लिनक्स और मैकओएस पर ओपन-सोर्स और ब्लैकबॉक्स बाइनरीज़ के लिए है।

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

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

सभी देखें →

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

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

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

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

Manul

Travis AppVeyor

Logo

Manul एक कवरेज-निर्देशित समानांतर फज़र है जो विंडोज़, लिनक्स और macOS (बीटा) पर ओपन-सोर्स और ब्लैक-बॉक्स बायनरीज़ के लिए है, जो शुद्ध Python में लिखा गया है।

Quick Start

root@kitploit:~
pip3 install psutil
git clone https://github.com/mxmssh/manul
cd manul
mkdir in
mkdir out
echo "AAAAAA" > in/test
python3 manul.py -i in -o out -n 4 "linux/test/test_afl @@"

Radamsa स्थापित करना

root@kitploit:~
sudo apt-get install gcc make git wget
git clone https://gitlab.com/akihe/radamsa.git && cd radamsa && make && sudo make install

विंडोज़ पर radamsa स्थापित करने की आवश्यकता नहीं है; Manul इस प्लेटफॉर्म पर radamsa नेटिव लाइब्रेरी के साथ वितरित किया जाता है।

सार्वजनिक CVE की सूची

CVE IDsProductFinder
CVE-2019-9631 CVE-2019-7310 CVE-2019-9959PopplerMaksim Shudrak
CVE-2018-17019 CVE-2018-16807 CVE-2019-12175Bro/ZeekMaksim Shudrak

यदि आप Manul का उपयोग करके कोई नई बग खोजने में सफल हुए हैं, तो कृपया मुझसे संपर्क करें और मैं आपको सूची में जोड़ दूंगा।

डेमो

Short Demo

निर्भरताएँ

  1. Python3 (Python2 1 जनवरी 2020 से अप्रचलित है, लेकिन Manul को Python2 के साथ भी ठीक काम करना चाहिए)
  2. psutil
  3. विंडोज़ प्लेटफॉर्म पर pywin32 (pip install pywin32) (केवल DBI पर्सिस्टेंस मोड के लिए आवश्यक)।

कवरेज-निर्देशित फ़ज़िंग

वर्तमान में, Manul दो प्रकार की इंस्ट्रुमेंटेशन का समर्थन करता है: AFL-आधारित (afl-gcc, afl-clang और afl-clang-fast) और DBI।

कवरेज-निर्देशित फ़ज़िंग (AFL इंस्ट्रुमेंटेशन मोड)

अपने लक्ष्य को afl-gcc या afl-clang-fast और Address Sanitizer के साथ इंस्ट्रुमेंट करें (बेहतर परिणामों के लिए अनुशंसित)। उदाहरण के लिए:

root@kitploit:~
CC=afl-gcc CXX=afl-g++ CFLAGS=-fsanitize=address CXXFLAGS=-fsanitize=address cmake <path_to_your_target>
make -j 8
root@kitploit:~
USE_ASAN=1 CC=afl-clang-fast CXX=afl-clang-fast++ cmake <path_to_your_target>
make -j 8

अधिक विवरण के लिए ये निर्देश देखें।

DBI मोड में कवरेज-निर्देशित फ़ज़िंग

इस मोड में आपको अपने लक्ष्य को इंस्ट्रुमेंट करने की आवश्यकता नहीं है, लेकिन आपको विंडोज़ या लिनक्स के लिए DynamoRIO फ्रेमवर्क का नवीनतम संस्करण डाउनलोड करना होगा।

Manul लिनक्स और विंडोज़ के लिए x86/x64 प्रीकंपाइल्ड क्लाइंट के साथ वितरित किया जाता है। आप इन्हें निम्नलिखित फ़ोल्डरों में पा सकते हैं:

root@kitploit:~
linux/dbi_32|dbi_64/libbinafl.so (DynamoRIO क्लाइंट)
win/dbi_32|dbi_64/binafl.dll

दुर्भाग्य से, DynamoRIO को MacOS पर आधिकारिक रूप से समर्थित नहीं किया गया है।

ब्लैक-बॉक्स बायनरीज़ को फ़ज़ करने के लिए DynamoRIO का उपयोग करना

आप DynamoRIO रिलीज़ पैकेज DynamoRIO डाउनलोड पेज पर पा सकते हैं।

आपको manul.config फ़ाइल में निम्नलिखित पंक्तियों को अनकमेंट करना होगा और DynamoRIO लॉन्चर और क्लाइंट का सही पथ प्रदान करना होगा।

root@kitploit:~
# Manul को कवरेज प्रदान करने के लिए DBI फ्रेमवर्क चुनें ("dynamorio" या "pin")। उदा. dbi = dynamorio
dbi = dynamorio
# यदि dbi पैरामीटर None नहीं है, तो dbi इंजन लॉन्चर और dbi क्लाइंट का पथ निर्दिष्ट किया जाना चाहिए।
dbi_root = /home/max/DynamoRIO/bin64/drrun
dbi_client_root = /home/max/manul/linux/dbi_64/libbinafl.so
dbi_client_libs = None

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

root@kitploit:~
dbi_persistence_mode = 1
dbi_target_module = afl_test
dbi_target_method = open_file
#dbi_target_offset = 0x3198 # वैकल्पिक रूप से आप नाम के बजाय इस फ़ंक्शन का ऑफ़सेट प्रदान कर सकते हैं
dbi_fuzz_iterations = 1000

winAFL के लेखक यहाँ बहुत अच्छी व्याख्या प्रदान करते हैं कि यह वास्तव में कैसे काम करता है। Manul लक्ष्य के साथ संवाद करने और उसे इंस्ट्रुमेंट करने के लिए winAFL इंस्ट्रुमेंटेशन लाइब्रेरी के एक बड़े हिस्से का उपयोग करता है।

महत्वपूर्ण नोट: 32-बिट बायनरीज़ को फ़ज़ करने के लिए 32-बिट लॉन्चर और 32-बिट क्लाइंट, और 64-बिट बायनरीज़ के लिए 64-बिट लॉन्चर और 64-बिट क्लाइंट का उपयोग करें!

DynamoRIO क्लाइंट लाइब्रेरी संकलित करना

इंस्ट्रुमेंटेशन लाइब्रेरी को संकलित करने के लिए, आपको DynamoRIO के नवीनतम संस्करण का उपयोग करना होगा। इंस्ट्रुमेंटेशन लाइब्रेरी का स्रोत कोड Manul मुख्य फ़ोल्डर में स्थित dbi_clients_src में पाया जा सकता है।

root@kitploit:~
64-बिट लिनक्स

cd dbi_clients_src
wget <DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz> - नवीनतम DynamoRIO डाउनलोड करें
tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz
mkdir client_64
cd client_64
cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz/cmake
make
root@kitploit:~
32-बिट लिनक्स
cd dbi_clients_src
wget <DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz> - नवीनतम DynamoRIO डाउनलोड करें
tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz
mkdir client_64
cd client_64
CFLAGS=-m32 CXXFLAGS=-m32 cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz/cmake
make

विंडोज़ पर, लाइब्रेरी को संकलित करने का सबसे आसान तरीका Visual Studio (2017 और 2013 संस्करणों पर परीक्षण किया गया) स्थापित करना, VS20XX Cross Tools Command Prompt लॉन्च करना और निम्नलिखित कमांड चलाना है:

root@kitploit:~
64-बिट विंडोज़
cd dbi_clients_src
<DynamoRIO का नवीनतम संस्करण डाउनलोड और निकालें>
mkdir client_64
cd client_64
cmake -G"Visual Studio 15 Win64" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake
cmake --build . --config RelWithDebInfo (या यदि आवश्यक हो तो केवल Debug)
root@kitploit:~
32-बिट विंडोज़
cd dbi_clients_src
<DynamoRIO का नवीनतम संस्करण डाउनलोड और निकालें>
mkdir client_32
cd client_32
cmake -G"Visual Studio 15" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake
cmake --build . --config RelWithDebInfo (या यदि आवश्यक हो तो केवल Debug)

लिनक्स पर ब्लैक-बॉक्स बायनरीज़ को फ़ज़ करने के लिए Intel PIN का उपयोग करना

Manul ने प्रारंभ में Intel PIN कवरेज-निर्देशित फ़ज़िंग का समर्थन किया था, लेकिन कम प्रदर्शन और उच्च रखरखाव ओवरहेड के कारण, यह अब समर्थित नहीं है।

कमांड-लाइन तर्क

सबसे अधिक उपयोग किए जाने वाले विकल्प कमांड लाइन के माध्यम से प्रदान किए जा सकते हैं। अधिक विकल्प कॉन्फ़िगरेशन फ़ाइल (manul.config) का उपयोग करके समर्थित हैं।

root@kitploit:~
उदाहरण: python3 manul.py -i corpus -o out_dir -n 40 "target @@"

स्थितीय तर्क:
  target_binary  निष्पादित किया जाने वाला लक्ष्य बायनरी और विकल्प (कोट्स शामिल करना न भूलें जैसे "target e @@").

वैकल्पिक तर्क:
  -h, --help     यह सहायता संदेश दिखाएं और बाहर निकलें
  -n NFUZZERS    समानांतर फ़ज़र्स की संख्या
  -s             डंब फ़ज़िंग चलाएं (कोई कोड इंस्ट्रुमेंटेशन नहीं)
  -c CONFIG      अतिरिक्त विकल्पों वाली कॉन्फ़िगरेशन फ़ाइल का पथ (नीचे कॉन्फ़िगरेशन फ़ाइल विकल्प अनुभाग देखें)
  -r             पिछला सत्र पुनर्स्थापित करें

आवश्यक पैरामीटर:
  -i INPUT       प्रारंभिक कॉर्पस वाली निर्देशिका का पथ
  -o OUTPUT      आउटपुट निर्देशिका का पथ

कॉन्फ़िगरेशन फ़ाइल विकल्प

Manul डिफ़ॉल्ट manul.config फ़ाइल के साथ वितरित किया जाता है जहाँ उपयोगकर्ता सभी समर्थित विकल्प और उपयोग उदाहरण पा सकता है। विकल्पों को निम्नलिखित प्रारूप में निर्दिष्ट किया जाना चाहिए Format: <option_name> = <value>। प्रतीक # का उपयोग एक पंक्ति को अनदेखा करने के लिए किया जा सकता है।

शब्दकोश

dict = /home/max/dictionaries/test.dict। AFL उत्परिवर्तन रणनीति उपयोगकर्ता को कस्टम टोकन की एक सूची निर्दिष्ट करने की अनुमति देती है जिन्हें फ़ज़ की गई फ़ाइल में यादृच्छिक स्थानों पर डाला जा सकता है। Manul इस विकल्प के माध्यम से इस कार्यक्षमता का समर्थन करता है (पूर्ण पथ पसंद किए जाते हैं)।

उत्परिवर्तक भार

mutator_weights=afl:7,radamsa:2,my_mutator:1। उत्परिवर्तक भार उपयोगकर्ता को Manul को बताने की अनुमति देते हैं कि प्रति 10 निष्पादनों में कितने उत्परिवर्तन एक निश्चित फ़ज़र द्वारा किए जाने चाहिए। इस उदाहरण में, AFL उत्परिवर्तक 10 में से 7 उत्परिवर्तनों में निष्पादित होगा, Radamsa 10 में से 2 और कुछ कस्टम my_mutator को 10 में से 1 मिलेगा। यदि आप किसी निश्चित उत्परिवर्तक को अक्षम करना चाहते हैं, तो भार 0 निर्दिष्ट किया जाना चाहिए (जैसे mutator_weights=afl:0,radamsa:1,my_mutator:9)।

नियतात्मक बीज (Radamsa विकल्प)

deterministic_seed = False|True। True प्रदान करके, Radamsa उत्परिवर्तन नियतात्मक हो जाएंगे, जिससे Manul का प्रत्येक रन समान आउटपुट उत्पन्न करेगा।

प्रति थ्रेड सारांश प्रिंट करें

print_per_thread = False|True। इस विकल्प को सक्षम करके, Manul कुल सारांश के बजाय निष्पादित किए जा रहे प्रत्येक थ्रेड के लिए सारांश प्रिंट करेगा।

अस्थिर पथ अक्षम करें

disable_volatile_bytes = False|True इस विकल्प को सक्षम करके, Manul अस्थिर पथों को ब्लैकलिस्ट नहीं करेगा।

AFL का forkserver (केवल UNIX)

forkserver_on = False|True AFL के forkserver को सक्षम या अक्षम करें।

DBI विकल्प

dbi = dynamorio|pin। यह विकल्प Manul को बताता है कि लक्ष्य को इंस्ट्रुमेंट करने के लिए किस DBI फ्रेमवर्क का उपयोग किया जाएगा।

dbi_root = <path>। यह विकल्प Manul को बताता है कि DBI फ्रेमवर्क का मुख्य लॉन्चर कहाँ खोजना है।

dbi_client_root = <path>। यह विकल्प Manul को बताता है कि इंस्ट्रुमेंटेशन करने के लिए DBI क्लाइंट कहाँ खोजना है।

dbi_client_libs = name_#1,name_#2|None। इस विकल्प का उपयोग उन लाइब्रेरीज़ की सूची निर्दिष्ट करने के लिए किया जा सकता है जिन्हें मुख्य लक्ष्य के साथ इंस्ट्रुमेंट किया जाना चाहिए (उदाहरण के लिए, आपके पास एक निष्पादन योग्य है जो लक्ष्य लाइब्रेरी और कुछ अन्य लोड करता है जहाँ आप बग खोजना चाहते हैं)।

dbi_persistence_mode = 0|1|2। इस विकल्प का उपयोग DBI पर्सिस्टेंट मोड के बीच चयन करने के लिए किया जाता है। 0 - कोई पर्सिस्टेंस नहीं, 1 - मानक पर्सिस्टेंस (फ़ंक्शन रैपिंग), 2 - अभी तक समर्थित नहीं है।

यदि dbi-persistence_mode = 1|2 है, तो निम्नलिखित विकल्प निर्दिष्ट किए जाने चाहिए:

dbi_target_module = <module name>। Manul यहाँ निर्दिष्ट मॉड्यूल में लक्ष्य फ़ंक्शन खोजने का प्रयास करेगा।

dbi_target_method = <function name>। पर्सिस्टेंस के लिए रैप किया जाने वाला फ़ंक्शन नाम।

dbi_target_offset = <function का ऑफ़सेट जैसे 0x3198>। पर्सिस्टेंस के लिए रैप किया जाने वाला फ़ंक्शन ऑफ़सेट। यदि डीबग प्रतीक उपलब्ध नहीं हैं, तो इस विकल्प का उपयोग dbi_target_method के बजाय किया जा सकता है।

dbi_fuzz_iterations = 500। पूरे प्रोग्राम के पुनरारंभ होने से पहले मेमोरी में चलने वाले फ़ज़ पुनरावृत्तियों की संख्या। आप अपने लक्ष्य के लिए सबसे अच्छा काम करने वाला मान खोजने के लिए इस तर्क के साथ खेल सकते हैं।

dbi_thread_coverage = False। केवल उस थ्रेड से कवरेज इंस्ट्रुमेंट करें जिसने लक्ष्य फ़ंक्शन को निष्पादित किया (अभी तक समर्थित नहीं है)।

टाइमआउट

timeout = 10। लक्ष्य को मारने और अगला परीक्षण मामला भेजने से पहले प्रतीक्षा करने का समय।

init_wait

init_wait = 1। इस विकल्प का उपयोग लक्ष्य को आरंभ करने के लिए आवश्यक टाइमआउट सेट करने के लिए किया जा सकता है।

Netslave और Netmaster विकल्प

net_config_master और net_config_slave विकल्पों का उपयोग Manul इंस्टेंस को नेटवर्क पर वितरित करने के लिए किया जाता है। वितरित फ़ज़िंग चलाने के लिए आपको निम्नलिखित 3 चरण करने होंगे।

  1. निम्नलिखित प्रारूप में होस्ट की सूची वाली एक फ़ाइल बनाएँ: IP:port जहाँ आपके स्लेव निष्पादित होंगे।
  2. रिमोट मशीनों पर सभी Manul स्लेव इंस्टेंस शुरू करें (सभी आवश्यक विकल्पों और लक्ष्य बायनरी के पथ के साथ) और निम्नलिखित विकल्प सक्षम करें: net_config_slave = 0.0.0.0:1337। Manul इंस्टेंस लॉन्च करेगा और पोर्ट 1337 पर मास्टर इंस्टेंस से आने वाले कनेक्शन की प्रतीक्षा करेगा।
  3. मास्टर इंस्टेंस शुरू करें और चरण 1 पर बनाई गई स्लेव इंस्टेंस की सूची वाली फ़ाइल net_config_master = file_name का उपयोग करके प्रदान करें।

डीबग मोड

debug = False|True - डीबग जानकारी प्रिंट करें।

logging_enable = False|True - डीबग जानकारी लॉग में सहेजें।

लोगो

manul_logo = False|True - शुरुआत में Manul लोगो प्रिंट करें।

आँकड़े अक्षम करें

no_stats = False|True - सांख्यिकी सहेजें।

बिटमैप सिंक्रनाइज़ेशन आवृत्ति (DBI मोड के लिए 5000 अनुशंसित)

sync_freq = 10000। उपयोगकर्ता को कवरेज बिटमैप सिंक्रनाइज़ेशन आवृत्ति बदलने की अनुमति देता है। यह विकल्प Manul को बताता है कि इसे समानांतर फ़ज़िंग इंस्टेंस के बीच कितनी बार कवरेज सिंक्रनाइज़ करना चाहिए। कम मान प्रदर्शन को कम करता है लेकिन इंस्टेंस के बीच समन्वय बढ़ाता है।

आउटपुट सहेजने के लिए कस्टम पथ

#custom_path = test_path - यह विकल्प परीक्षण मामले को कस्टम फ़ोल्डर में सहेजने की अनुमति देता है (यदि लक्ष्य इसे किसी पूर्वनिर्धारित स्थान से लोड करना चाहता है)।

कमांड लाइन फ़ज़िंग (प्रायोगिक)

cmd_fuzzing = True|False। यदि यह विकल्प सक्षम है, तो Manul फ़ाइल में सहेजने के बजाय कमांड लाइन के माध्यम से लक्ष्य में इनपुट प्रदान करेगा।

सिग्नल अनदेखा करें

user_signals = 6,2,1|None। उपयोगकर्ता Manul को बता सकता है कि लक्ष्य से कौन से सिग्नल को अनदेखा किया जाना चाहिए (क्रैश के रूप में नहीं माना जाना चाहिए)।

नेटवर्क फ़ज़िंग (प्रायोगिक)

target_ip_port = 127.0.0.1:7715|None - लक्ष्य IP और PORT निर्दिष्ट करने के लिए उपयोग किया जाता है। target_protocol = tcp|tcp - नेटवर्क पर लक्ष्य में इनपुट भेजने के लिए प्रोटोकॉल निर्दिष्ट करने के लिए उपयोग किया जाता है। net_sleep_between_cases = 0.0। इस विकल्प का उपयोग लक्ष्य में भेजे जा रहे परीक्षण मामलों के बीच देरी को परिभाषित करने के लिए किया जा सकता है।

वर्तमान में, नेटवर्क फ़ज़िंग एक प्रायोगिक सुविधा है (अधिक विवरण के लिए issues देखें)।

कस्टम उत्परिवर्तक जोड़ना

कस्टम उत्परिवर्तक को निम्नलिखित तीन चरणों में जोड़ा जा सकता है: चरण 1. एक python (.py) फ़ाइल बनाएँ और इसे कुछ नाम दें (जैसे example_mutator.py)

चरण 2. दो फ़ंक्शन बनाएँ def init(fuzzer_id) और def mutate(data)। अधिक विवरण के लिए example_mutator देखें। Manul फ़ज़िंग आरंभीकरण के दौरान init फ़ंक्शन और लक्ष्य में प्रदान की जा रही प्रत्येक फ़ाइल के लिए mutate फ़ंक्शन को कॉल करेगा।

चरण 3. manul.config में mutator_weights का उपयोग करके इसका नाम निर्दिष्ट करके उत्परिवर्तक को सक्षम करें। उदा. mutator_weights=afl:2,radamsa:0,example_mutator:8।

नोट: AFL और Radamsa उत्परिवर्तकों को हमेशा निर्दिष्ट किया जाना चाहिए। यदि आप AFL और/या Radamsa को अक्षम करना चाहते हैं, तो बस उन्हें 0 भार निर्दिष्ट करें।

तकनीकी विवरण

TBD

स्थिति स्क्रीन

Status Screen

टूल डाउनलोड करें