Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
manul — Manul هو مفزر متوازي موجه بالتغطية للثنائيات مفتوحة المصدر والصندوق الأسود على أنظمة Windows و Linux و MacOS. | Kitploit
أدوات/GitHubGitHub/mxmssh/manul
التحليل الديناميكي (عزل)تحليل الثغرات الأمنيةالاختبار العشوائيتحليل الملفات الثنائية
GitHubmxmssh/manul

manul

Manul هو مفزر متوازي موجه بالتغطية للثنائيات مفتوحة المصدر والصندوق الأسود على أنظمة Windows و Linux و MacOS.

عرض المستودع
33567منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مانول

Travis AppVeyor

شعار

مانول هو مدمج موازٍ موجه بالتغطية للتطبيقات مفتوحة المصدر ومغلقة المصدر على ويندوز ولينكس وماك أو إس (نسخة تجريبية) مكتوب بلغة بايثون النقية.

بداية سريعة

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 على ويندوز، حيث يتم توزيع مانول مع المكتبة الأصلية لـ radamsa على هذا النظام الأساسي.

قائمة بـ CVEs العامة

معرفات CVEالمنتجالمكتشف
CVE-2019-9631 CVE-2019-7310 CVE-2019-9959PopplerMaksim Shudrak
CVE-2018-17019 CVE-2018-16807 CVE-2019-12175Bro/ZeekMaksim Shudrak

إذا تمكنت من العثور على خطأ جديد باستخدام مانول، فيرجى الاتصال بي وسأضيفك إلى القائمة.

عرض توضيحي

عرض توضيحي قصير

المتطلبات

  1. Python3 (تم إيقاف Python2 اعتبارًا من 1 يناير 2020 ولكن مانول ما زال يعمل بشكل جيد تحت Python2)
  2. psutil
  3. pywin32 (pip install pywin32) على ويندوز (مطلوب لوضع استمرارية DBI فقط).

التدمير الموجه بالتغطية

حاليًا، يدعم مانول نوعين من التجهيز: القائم على 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 لويندوز أو لينكس.

يتم توزيع مانول مع عملاء مُجمَّعين مسبقًا لويندوز ولينكس بتقنيتي x86/x64. يمكنك العثور عليهم في المجلدات التالية:

root@kitploit:~
linux/dbi_32|dbi_64/libbinafl.so (عميل DynamoRIO)
win/dbi_32|dbi_64/binafl.dll

لسوء الحظ، DynamoRIO غير مدعوم رسميًا على ماك أو إس.

استخدام DynamoRIO لتدمير التطبيقات مغلقة المصدر

يمكنك العثور على حزم إصدار DynamoRIO الأحدث على صفحة تحميل DynamoRIO.

يجب إلغاء تعليق الأسطر التالية في ملف manul.config وتقديم المسار الصحيح لمشغل DynamoRIO وعميله.

root@kitploit:~
# اختر إطار 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

بالإضافة إلى ذلك، يمكنك زيادة أداء حملة التدمير مغلقة المصدر باستخدام التدمير المستمر في الذاكرة. في هذا الوضع، يجب توجيه مانول لتجهيز دالة معينة (نعم، تحتاج إلى العثور عليها عن طريق فك تجميع ثنائيك) وسيقوم بتشغيلها في حلقة عن طريق إلغاء تعليق الأسطر التالية:

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 شرحًا جيدًا جدًا لكيفية عمل ذلك فعليًا هنا. يستخدم مانول جزءًا كبيرًا من كود مكتبة تجهيز winAFL للتواصل وتجهيز الهدف.

ملاحظة هامة: يجب استخدام مشغل 32 بت وعميل 32 بت لتدمير التطبيقات ذات 32 بت، ومشغل 64 بت وعميل 64 بت للتطبيقات ذات 64 بت!

تجميع مكتبة عميل DynamoRIO

لتجميع مكتبة التجهيز، تحتاج إلى استخدام أحدث إصدار من DynamoRIO. يمكن العثور على الكود المصدري لمكتبة التجهيز في 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 لتدمير التطبيقات مغلقة المصدر على لينكس

كان مانول يدعم في البداية التدمير الموجه بالتغطية عبر 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.config الافتراضي حيث يمكن للمستخدم العثور على جميع الخيارات المدعومة وأمثلة الاستخدام. يجب تحديد الخيارات بالتنسيق التالي Format: <option_name> = <value>. يمكن استخدام الرمز # لتجاهل سطر.

قاموس

dict = /home/max/dictionaries/test.dict. تسمح استراتيجية الطفرات في AFL للمستخدم بتحديد قائمة من الرموز المخصصة التي يمكن إدراجها في أماكن عشوائية في الملف المدمَّر. يدعم مانول هذه الوظيفة عبر هذا الخيار (يُفضل المسارات المطلقة).

أوزان المطفرات

mutator_weights=afl:7,radamsa:2,my_mutator:1. تسمح أوزان المطفرات للمستخدم بإخبار مانول بعدد الطفرات لكل 10 عمليات تنفيذ التي يجب أن يقوم بها مدمج معين. في هذا المثال، سيتم تنفيذ مطفر AFL في 7/10 من الطفرات، و Radamsa 2/10، وسيحصل my_mutator المخصص على 1/10. إذا كنت تريد تعطيل مطفر معين، يجب تعيين الوزن إلى 0 (مثل mutator_weights=afl:0,radamsa:1,my_mutator:9).

بذرة محددة (خيار Radamsa)

deterministic_seed = False|True. بتقديم True، ستصبح طفرات Radamsa حتمية وبالتالي كل تشغيلة لمانول ستؤدي إلى نفس المخرجات.

طباعة ملخص لكل خيط

print_per_thread = False|True. بتفعيل هذا الخيار، سيقوم مانول بطباعة ملخص لكل خيط يتم تنفيذه بدلاً من الملخص الكلي.

تعطيل المسارات المتقلبة

disable_volatile_bytes = False|True بتفعيل هذا الخيار، لن يقوم مانول بإدراج المسارات المتقلبة في القائمة السوداء.

خادم الشوكة الخاص بـ AFL (UNIX فقط)

forkserver_on = False|True تفعيل أو تعطيل خادم الشوكة الخاص بـ AFL.

خيارات DBI

dbi = dynamorio|pin. يخبر هذا الخيار مانول بإطار DBI الذي سيتم استخدامه لتجهيز الهدف.

dbi_root = <path>. يخبر هذا الخيار مانول بمكان العثور على المشغل الرئيسي لإطار DBI.

dbi_client_root = <path>. يخبر هذا الخيار مانول بمكان العثور على عميل 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>. سيحاول مانول البحث عن الدالة المستهدفة في الوحدة المحددة هنا.

dbi_target_method = <function name>. اسم الدالة المراد تغليفها للاستمرارية.

dbi_target_offset = <offset of function e.g. 0x3198>. إزاحة الدالة المراد تغليفها للاستمرارية. يمكن استخدام هذا الخيار بدلاً من dbi_target_method إذا كانت رموز التصحيح غير متوفرة.

dbi_fuzz_iterations = 500. عدد تكرارات التدمير التي سيتم تشغيلها في الذاكرة قبل إعادة تشغيل البرنامج بالكامل. يمكنك تجربة هذه الوسيطة للعثور على القيمة التي تعمل بشكل أفضل مع هدفك.

dbi_thread_coverage = False. تجهيز التغطية فقط من الخيط الذي نفذ الدالة المستهدفة (غير مدعوم بعد).

المهلة

timeout = 10. الوقت الذي يجب الانتظار قبل قتل الهدف وإرسال حالة الاختبار التالية.

انتظار التهيئة

init_wait = 1. يمكن استخدام هذا الخيار لتعيين مهلة مطلوبة لتهيئة الهدف.

خيارات Netmaster و Netslave

يتم استخدام الخيارين net_config_master و net_config_slave لتوزيع مثيلات مانول عبر الشبكة. عليك تنفيذ الخطوات الثلاث التالية لتشغيل التدمير الموزع.

  1. أنشئ ملفًا بقائمة المضيفين بالتنسيق التالي: IP:port حيث سيتم تنفيذ التوابع.
  2. ابدأ جميع مثيلات مانول التابعة على الأجهزة البعيدة (مع جميع الخيارات المطلوبة ومسار التطبيق الهدف) وقم بتفعيل الخيار التالي: net_config_slave = 0.0.0.0:1337. سيقوم مانول بتشغيل المثيل وسينتظر اتصالًا واردًا من المثيل الرئيسي على المنفذ 1337.
  3. ابدأ المثيل الرئيسي وقدم الملف الذي يحتوي على قائمة المثيلات التابعة التي تم إنشاؤها في الخطوة 1 باستخدام net_config_master = file_name.

وضع التصحيح

debug = False|True - طباعة معلومات التصحيح.

logging_enable = False|True - حفظ معلومات التصحيح في السجل.

الشعار

manul_logo = False|True - طباعة شعار مانول في البداية.

تعطيل الإحصائيات

no_stats = False|True - حفظ الإحصائيات.

تردد مزامنة الصورة النقطية (يوصى بـ 5000 لوضع DBI)

sync_freq = 10000. يسمح للمستخدم بتغيير تردد مزامنة الصورة النقطية للتغطية. يخبر هذا الخيار مانول بعدد المرات التي يجب فيها مزامنة التغطية بين مثيلات التدمير المتوازية. القيمة المنخفضة تقلل الأداء ولكنها تزيد التنسيق بين المثيلات.

مسار مخصص لحفظ الإخراج

#custom_path = test_path - يتيح هذا الخيار حفظ حالة الاختبار في مجلد مخصص (إذا أراد الهدف تحميلها من مكان محدد مسبقًا).

تدمير سطر الأوامر (تجريبي)

cmd_fuzzing = True|False. إذا تم تفعيل هذا الخيار، سيقوم مانول بتوفير الإدخال للهدف عبر سطر الأوامر بدلاً من الحفظ في ملف.

تجاهل الإشارات

user_signals = 6,2,1|None. يمكن للمستخدم إخبار مانول بأي إشارات من الهدف يجب تجاهلها (لا تعتبر تعطلًا).

تدمير الشبكة (تجريبي)

target_ip_port = 127.0.0.1:7715|None - يستخدم لتحديد IP و PORT الهدف. target_protocol = tcp|tcp - يستخدم لتحديد البروتوكول لإرسال الإدخال إلى الهدف عبر الشبكة. net_sleep_between_cases = 0.0. يمكن استخدام هذا الخيار لتحديد تأخير بين حالات الاختبار التي يتم إرسالها إلى الهدف.

حاليًا، تدمير الشبكة هو ميزة تجريبية (راجع المشكلات لمزيد من التفاصيل).

إضافة مطفر مخصص

يمكن إضافة مطفر مخصص في الخطوات الثلاث التالية: الخطوة 1. أنشئ ملف بايثون (.py) وأعطه اسمًا (مثل example_mutator.py)

الخطوة 2. أنشئ دالتين def init(fuzzer_id) و def mutate(data). راجع example_mutator لمزيد من التفاصيل. سيقوم مانول باستدعاء دالة init أثناء تهيئة التدمير و mutate لكل ملف يتم توفيره للهدف.

الخطوة 3. قم بتفعيل المطفر عن طريق تحديد اسمه باستخدام mutator_weights في ملف manul.config. مثلًا: mutator_weights=afl:2,radamsa:0,example_mutator:8.

ملاحظة: يجب دائمًا تحديد مطفرات AFL و Radamsa. إذا كنت تريد تعطيل AFL و/أو Radamsa، فقط قم بتعيين أوزان صفرية لهم.

تفاصيل فنية

قريباً

شاشة الحالة

شاشة الحالة

تنزيل الأداة