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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/avalz/waf-a-mole
تجاوز WAFأمن الويبالاختبار العشوائيتعلم الآلةالهجوم العدائي
GitHubavalz/waf-a-mole

WAF-A-MoLE

مُختبر اختراق مُوجَّه قائم على الطفرات لجدران الحماية لتطبيقات الويب المعتمدة على التعلّم الآلي

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

الأكثر شعبية

عرض الكل →

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

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

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

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

WAF-A-MoLE

مُشعِّلٌ موجَّهٌ قائمٌ على الطفرات لجدران الحماية النارية لتطبيقات الويب المعتمدة على التعلم الآلي، مستوحىً من AFL ومبنيٌّ على FuzzingBook لأندرياس زيلر وآخرين.

بالنظر إلى استعلام حقن SQL مُدخل، يحاول إنتاج استعلام ثابت دلاليًا قادر على تجاوز جدار الحماية الناري المستهدف. يمكنك استخدام هذه الأداة لتقييم متانة منتجك من خلال السماح لـ WAF-A-MoLE باستكشاف فضاء الحلول لإيجاد "نقاط عمياء" خطيرة لم يغطيها المصنِّف المستهدف.

Python Version License Documentation Status

المعمارية

هندسة WAF-A-MoLE

يأخذ WAF-A-MoLE حمولة أولية ويُدخلها في مجمَّع الحمولات، الذي يدير طابورًا ذا أولوية مُرتبًا حسب درجة ثقة جدار الحماية الناري في كل حمولة.

خلال كل تكرار، يُمرَّر رأس مجمَّع الحمولات إلى المُشعِّل، حيث يتم تحويره عشوائيًا بتطبيق أحد مشغلات التحوير المتاحة.

مشغلات الطفرات

جميع مشغلات الطفرات تحافظ على الدلالة وتستفيد من القدرة التعبيرية العالية للغة SQL (في هذه النسخة، MySQL).

فيما يلي مشغلات الطفرات المتاحة في النسخة الحالية من WAF-A-MoLE.

كيفية الاستشهاد بنا

يطبِّق WAF-A-MoLE المنهجية المقدمة في "WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning". يمكن أيضًا العثور على نسخة ما قبل الطباعة من مقالتنا على arXiv.

إذا كنت ترغب في الاستشهاد بنا، يُرجى استخدام المرجع التالي (BibTeX):

root@kitploit:~
@inproceedings{demetrio20wafamole,
  title={WAF-A-MoLE: evading web application firewalls through adversarial machine learning},
  author={Demetrio, Luca and Valenza, Andrea and Costa, Gabriele and Lagorio, Giovanni},
  booktitle={Proceedings of the 35th Annual ACM Symposium on Applied Computing},
  pages={1745--1752},
  year={2020}
}

تشغيل WAF-A-MoLE

المتطلبات الأساسية

  • numpy
  • keras
  • scikit-learn
  • joblib
  • sqlparse
  • networkx
  • Click

الإعداد

pip install -r requirements.txt

مثال استخدام

يمكنك تقييم متانة جدار الحماية الناري الخاص بك، أو تجربة WAF-A-MoLE ضد بعض المصنِّفات النموذجية. في الحالة الأولى، ألقِ نظرة على صنف Model. يجب على نموذجك المخصص تنفيذ هذا الصنف ليتم تقييمه بواسطة WAF-A-MoLE. لقد قدمنا بالفعل مغلِّفات لمصنِّفات sci-kit learn و keras يمكن توسيعها لتناسب مرحلة استخراج الميزات الخاصة بك (إن وجدت).

المساعدة

wafamole --help

root@kitploit:~
Usage: wafamole [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  evade  Launch WAF-A-MoLE against a target classifier.

wafamole evade --help

root@kitploit:~
Usage: wafamole evade [OPTIONS] MODEL_PATH PAYLOAD

  Launch WAF-A-MoLE against a target classifier.

Options:
  -T, --model-type TEXT     Type of classifier to load
  -t, --timeout INTEGER     Timeout when evading the model
  -r, --max-rounds INTEGER  Maximum number of fuzzing rounds
  -s, --round-size INTEGER  Fuzzing step size for each round (parallel fuzzing
                            steps)
  --threshold FLOAT         Classification threshold of the target WAF [0.5]
  --random-engine TEXT      Use random transformations instead of evolution
                            engine. Set the number of trials
  --output-path TEXT        Location were to save the results of the random
                            engine. NOT USED WITH REGULAR EVOLUTION ENGINE
  --help                    Show this message and exit.

تجاوز النماذج النموذجية

نقدم بعض النماذج المُدرَّبة مسبقًا التي يمكنك التجربة بها، والموجودة في wafamole/models/custom/example_models. المصنِّفات التي استخدمناها مُدرجة في الجدول أدناه.

بالإضافة إلى جدران الحماية النارية القائمة على التعلم الآلي، يدعم WAF-a-MoLE أيضًا جدران الحماية النارية القائمة على القواعد. على وجه التحديد، يوفر مغلِّفًا لجدار الحماية الناري ModSecurity المُزوَّد بـ OWASP Core Rule Set (CRS)، استنادًا إلى مشروع pymodsecurity.

WAF-BRAIN - شبكة عصبية متكررة

تجاوز المصنِّف المُدرَّب مسبقًا لـ WAF-Brain باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type waf-brain wafamole/models/custom/example_models/waf-brain.h5  "admin' OR 1=1#"

ML-Based-WAF - SVM غير خطي (مع مجموعة بيانات WAF-A-MoLE الأصلية)

تجاوز المصنِّف SVM المُدرَّب مسبقًا لـ ML-Based-WAF باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc.dump  "admin' OR 1=1#"

ML-Based-WAF - SVM غير خطي (مع مجموعتي بيانات SQLiV5/SQLiV3)

تجاوز المصنِّف SVM المُدرَّب مسبقًا لـ ML-Based-WAF باستخدام مكافئ لـ admin' OR 1=1#. لاحظ أن SQLiV5 هي مجموعة بيانات مأخوذة من Kaggle موسعة بسلسلة من الاستعلامات التي تم إنشاؤها بواسطة WAF-A-MoLE نفسه، كدليل على المفهوم أن استعلامات WAF-A-MoLE يمكن أن تعزز متانة جدار الحماية الناري بإعادة التدريب. استخدم mlbasedwaf_svc_sqliv3.dump لتجاوز الجدار الناري المُدرَّب بمجموعة بيانات Kaggle الأصلية (SQLiV3).

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc_sqliv5.dump  "admin' OR 1=1#"

ML-Based-WAF - الانحدار التدرج العشوائي (SGD)

تجاوز المصنِّف SGD المُدرَّب مسبقًا لـ ML-Based-WAF باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_sgd.dump  "admin' OR 1=1#"

ML-Based-WAF - AdaBoost

تجاوز المصنِّف AdaBoost المُدرَّب مسبقًا لـ ML-Based-WAF باستخدام مكافئ لـ admin' OR 1=1# (يستغرق وقتًا أطول من النماذج الأخرى، حوالي 2 إلى 5 دقائق من وقت التشغيل).

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_ada.dump  "admin' OR 1=1#"

قائم على الرموز - Naive Bayes

تجاوز المصنِّف Naive Bayes المُدرَّب مسبقًا والقائم على الرموز باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/naive_bayes_trained.dump  "admin' OR 1=1#"

قائم على الرموز - Random Forest

تجاوز المصنِّف Random Forest المُدرَّب مسبقًا والقائم على الرموز باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/random_forest_trained.dump  "admin' OR 1=1#"

قائم على الرموز - SVM خطي

تجاوز المصنِّف SVM الخطي المُدرَّب مسبقًا والقائم على الرموز باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/lin_svm_trained.dump  "admin' OR 1=1#"

قائم على الرموز - SVM غاوسي

تجاوز المصنِّف SVM الغاوسي المُدرَّب مسبقًا والقائم على الرموز باستخدام مكافئ لـ admin' OR 1=1#.

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/gauss_svm_trained.dump  "admin' OR 1=1#"

SQLiGoT

تجاوز المصنِّف SQLiGOT المُدرَّب مسبقًا باستخدام مكافئ لـ admin' OR 1=1#. استخدم DP، UP، DU، أو UU لـ (على التوالي) موجه متناسب، غير موجه متناسب، موجه غير متناسب وغير موجه غير متناسب.

root@kitploit:~
wafamole evade --model-type DP wafamole/models/custom/example_models/graph_directed_proportional_sqligot "admin' OR 1=1#"

OWASP ModSecurity CRS - جدار ناري قائم على القواعد

تجاوز OWASP ModSecurity CRS باستخدام مكافئ لـ admin' OR 1=1#. يحتاج المستخدم أيضًا إلى تحديد مستوى البارانويا بالإضافة إلى المسار لتحديد موقع قواعد CRS (مثل /etc/coreruleset).

root@kitploit:~
wafamole evade --model-type modsecurity_pl[1-4] /etc/coreruleset "admin' OR 1=1#"

قبل تشغيل التقييم على SQLiGoT

هذه المصنِّفات أكثر متانة من غيرها، حيث أن مرحلة استخراج الميزات تنتج متجهات ذات بنية أكثر تعقيدًا، وجميع المصنِّفات المُدرَّبة مسبقًا تمت تنظيمها بشدة. قد يستغرق الأمر ساعات لبعض المتغيرات لإنتاج حمولة تحقق التجاوز (انظر قسم المعيار).

ملاحظة حول نماذج ML-Based-WAF الأحدث

تمت مؤخرًا إضافة بعض النماذج المستندة إلى نسخة معدلة قليلاً من ML-Based-WAF الخاص بـ vladan-stojnic، من امتداد لـ WAF-A-MoLE بعنوان wafamole++ بواسطة nidnogg. قد يستغرق اختبار نموذج AdaBoost وقتًا أطول من المعتاد (عادةً 2 إلى 5 دقائق).

هناك متغيرات مُدرَّبة باستخدام مجموعة بيانات SQLiV5.json، بينما تستخدم معظمها حقن SQL الأصلي من مجموعة بيانات WAF-A-MoLE افتراضيًا.

يتم توفير دفتر ملاحظات على Google Colaboratory مع إجراءات التدريب لبعض هذه النماذج، باستخدام مجموعة بيانات WAF-A-MoLE الأصلية (المعدلة إلى تنسيق SQLiV5). يمكن استخدام أي مجموعة بيانات طالما أنها بنفس تنسيق SQLiV5.json.

محولات مخصصة

أولاً، أنشئ صنف Model مخصصًا ينفذ طريقتي extract_features و classify.

root@kitploit:~
class YourCustomModel(Model):
    def extract_features(self, value: str):
    	# TODO: extract features
        feature_vector = your_custom_feature_function(value)
        return feature_vector

    def classify(self, value):
    	# TODO: compute confidence
        confidence = your_confidence_eval(value)
        return confidence

ثم، أنشئ كائنًا من النموذج وقم بإنشاء كائن engine يستخدم صنف النموذج الخاص بك.

root@kitploit:~
model = YourCustomModel() #your init
engine = EvasionEngine(model)
result = engine.evaluate(payload, max_rounds, round_size, timeout, threshold)

المعيار

قمنا بتقييم WAF-A-MoLE ضد جميع نماذجنا النموذجية.

يُظهر الرسم البياني أدناه الوقت الذي استغرقه WAF-A-MoLE لتحوير الحمولة admin' OR 1=1# حتى تم قبولها كحميدة من قبل كل مصنِّف.

على المحور x لدينا الوقت (بالثواني، بمقياس لوغاريتمي). على المحور y لدينا قيمة الثقة، أي مدى تأكد المصنِّف من أن حمولة معينة هي حقن SQL (بالنسبة المئوية).

لاحظ أن كون المصنِّف "متأكدًا بنسبة 50%" من أن الحمولة هي حقن SQL يعادل رمي قطعة نقدية. هذا هو عتبة التصنيف المعتادة: إذا كانت الثقة أقل، يتم تصنيف الحمولة على أنها حميدة.

المعيار الزمني

تم إجراء التجارب على DigitalOcean Standard Droplets.

المساهمة

الأسئلة وتقارير الأخطاء وطلبات السحب مرحب بها.

على وجه الخصوص، إذا كنت مهتمًا بتوسيع هذا المشروع، فإننا نبحث عن المساهمات التالية:

  1. محولات جدران نارية جديدة
  2. مشغلات طفرات جديدة
  3. خوارزميات بحث جديدة

الفريق

  • Luca Demetrio - CSecLab، DIBRIS، جامعة جنوة
  • Andrea Valenza - CSecLab، DIBRIS، جامعة جنوة
  • Gabriele Costa - SysMA، IMT Lucca
  • Giovanni Lagorio - CSecLab، DIBRIS، جامعة جنوة
تنزيل الأداة
المشغلمثال
تبديل حالة الأحرفadmin' OR 1=1# ⇒ admin' oR 1=1#
استبدال المسافاتadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
حقن التعليقاتadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
إعادة كتابة التعليقاتadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
ترميز الأعداد الصحيحةadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
تبديل العواملadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
الثابت المنطقيadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
خلط الأرقامadmin' OR 1=1# ⇒ admin' OR 2=2#
اسم المصنفالخوارزمية
WafBrainشبكة عصبية متكررة
ML-Based-WAFSVM غير خطي
ML-Based-WAFالانحدار التدرج العشوائي
ML-Based-WAFAdaBoost
قائم على الرموزNaive Bayes
قائم على الرموزRandom Forest
قائم على الرموزSVM خطي
قائم على الرموزSVM غاوسي
SQLiGoT - موجه متناسبSVM غاوسي
SQLiGoT - موجه غير متناسبSVM غاوسي
SQLiGoT - غير موجه متناسبSVM غاوسي
SQLiGoT - غير موجه غير متناسبSVM غاوسي