
التكرار الأول لنظام Feedback WAF القائم على التعلم الآلي
تم إنشاء NGWAF بواسطة @yupengfei، @zhangbosen، @matthewng و @elizabethlim.
شكر خاص لـ @ruinahkoh على مساهماتها في المراحل الأولى من NGWAF.
NGWAF هو إثبات مفهوم تجريبي وغير جاهز للاستخدام الإنتاجي في شكله الحالي.
المحتويات
مع النمو الهائل لتطبيقات الويب منذ أوائل العقد الأول من القرن الحادي والعشرين، أصبحت الهجمات القائمة على الويب أكثر انتشارًا تدريجيًا. أحد الحلول الشائعة هو جدار حماية تطبيقات الويب (WAF). ومع ذلك، يمكن أن يكون تعديل قواعد جدران الحماية الحالية لتحسين آليات الكشف معقدًا وصعبًا. يسعى NGWAF إلى معالجة هذه العيوب بهندسة معمارية جديدة تعتمد على التعلم الآلي والحجر الصحي إلى نظام خادع (honeypot).
مستوحى من نقاط الألم الفعلية في تشغيل جدران الحماية، يهدف NGWAF إلى تبسيط وإعادة تصور عمليات WAF من خلال العمليات التالية:
| نقطة الألم | ميزة NGWAF |
|---|---|
| صيانة آليات وقواعد الكشف يمكن أن تكون معقدة | الاستفادة من التعلم الآلي لأتمتة عملية إنشاء وتحديث آليات الكشف |
| الحظر الفوري للحركة الضارة يقلل من فرص التعلم من سلوك المهاجم لتحسينات WAF مستقبلية | القضاء على التهديد من خلال إعادة التوجيه إلى الحجر الصحي بدلاً من الإسقاط والحظر التقليديين للحركة الضارة |
لتسهيل النشر وجعله محمولاً، قمنا بحاويات (containerise) للمكونات المختلفة في الهندسة المعمارية باستخدام docker وقمنا بتكوينها في ملف docker-compose. هذا يسمح بتشغيله على تثبيت جديد بسرعة وسهولة حيث تتم معالجة التبعيات تلقائيًا بواسطة docker. يمكن توسيع النشر ليكون منتشرًا في مجموعة kubernetes محلية أو قائمة على مزود سحابي، مما يجعله قابلاً للتوسع حيث يمكن للمستخدمين زيادة عدد العقد/الحاويات (pods) للتعامل مع كميات كبيرة من الحركة.
تم اختبار النشر على macOS (Docker desktop)، و linux (ubuntu).
يعمل NGWAF فورًا بثلاثة مكونات رئيسية، هذه المكونات كما ذكر أعلاه جميعها محتواة في حاويات وقابلة للتوسع حسب الاستخدام المرغوب. يمكن تخصيص المورد المحمي عن طريق إجراء تغيير في النشر داخل الإعداد.
الهندسة المعمارية عالية المستوى لـ NGWAF مع تدفقات الحركة المتوقعة من الأطراف المختلفة
تم تصميم NGWAF مع مراعاة فوائد المستخدم الرئيسية التالية:
يستبدل NGWAF مجموعات القواعد التقليدية بنماذج التعلم العميق لتقليل تعقيد إدارة وتحديث القواعد. بدلاً من تحرير القواعد يدويًا، يقوم التعلم الآلي في NGWAF بأتمتة عملية تعلم الأنماط من البيانات الضارة. يتم تنظيف البيانات المجمعة من بيئة الحجر الصحي وتجميعها تلقائيًا، مما يسمح بإعادة تدريبها في نموذج الكشف الخاص بنا إذا رغب في ذلك.
يعتمد NGWAF على بنية جديدة تتكون من بيئة تفاعلية وحجر صحي مصممة لعزل المهاجمين المحتملين. على عكس جدران الحماية التقليدية التي تقوم بالحظر عند الكشف، يقوم NGWAF بتحويل المهاجمين إلى أنظمة محاكاة، مما يحاصرهم لتخفيف تأثير أفعالهم الضارة. تعمل البيئة أيضًا كحوض (sinkhole) لجمع أساليب الهجوم الحالية، مما يتيح مراقبة وجمع البيانات الضارة. يمكن استخدام هذه البيانات لتحسين قدرة الكشف لـ NGWAF.
NGWAF قيد التشغيل: عند اكتشاف حقن SQL، يعيد NGWAF التوجيه إلى بيئة الحجر الصحي لدينا، بدلاً من إسقاط أو حظر المحاولة.
المبدأ التوجيهي وراء إنشاء NGWAF هو الحماية من المخاطر التي أبرزتها وثيقة الوعي القياسية لمشروع أمان تطبيقات الويب المفتوح - OWASP Top 10 2021.
يتم جمع بيانات التدريب وعمليات التحقق من الامتثال لـ NGWAF وإجراؤها بناءً على هذا المطلب.
من يحتاج إلى اليدوي عندما يمكننا الذهاب إلى العصبي
بدلاً من مجموعات القواعد التقليدية التي تتطلب من المحللين تحديد القواعد وإضافتها يدويًا بمرور الوقت، يستفيد NGWAF من خطوط أنابيب التعلم الآلي من البداية إلى النهاية لآلية الكشف، مما يقلل بشكل كبير من تعقيد إدارة قواعد WAF، خاصةً للكشف عن الحمولات المعقدة.
للقيام بذلك، احتجنا أولاً إلى إنشاء نموذج أساسي وهندسة معمارية يمكن للمستخدمين البدء بها، قبل أن يستخدموا لاحقًا البيانات التي تم جمعها من تطبيقاتهم الخاصة لإعادة التدريب والضبط الدقيق:
الهندسة العامة للنموذج الأساسي هي RNN بسيطة مع وحدة LSTM ثنائية الاتجاه مثلما هو أدناه:
الصورة مأخوذة من Tensorflow (الرابط)
باستخدام هذه البنية RNN، تمكنا من تحقيق تحسينات في الأداء على النماذج الأبسط:
على الرغم من أننا قمنا بتضمين سجلات من تطبيقات مختلفة لتحسين قابلية تعميم النموذج الأساسي، إلا أن المزيد من الصيانة وإعادة تدريب النموذج ستكون مهمة من أجل:
لمعالجة هذا الأمر، يستفيد مستخدمو NGWAF من خط أنابيب إعادة تدريب النموذج من البداية إلى النهاية المعبأ لدينا، ويمكنهم بسهولة تشغيل صيانة النموذج بخطوات بسيطة دون الحاجة إلى البحث تحت الغطاء. (انظر القسم 3 أدناه).
لا تدعهم يذهبون، احتجزهم!
على عكس جدران الحماية التقليدية حيث يتم حظر أو إسقاط الحركة الضارة على الفور. يتبع NGWAF نهجًا أكثر مرونة. حيث يقوم بإعادة توجيه واحتجاز الجهات الفاعلة الضارة داخل بيئة الحجر الصحي. تتكون هذه البيئة من أنظمة خادعة محاكاة تفاعلية متنوعة لمحاولة جمع المزيد من أساليب/بيانات الهجوم، وسيتم استخدام هذه البيانات لتعزيز معدل الكشف لـ NGWAF عن الهجمات الأكثر حداثة وتعقيدًا.
حاليًا، تقوم بيئة الحجر الصحي في NGWAF بإعادة توجيه جميع البيانات التي يقدمها المهاجم المحتجز إلى مجموعة ELK الخاصة بنا للتحليل والتصور. يتم تنظيف البيانات تلقائيًا إلى مكونات مختلفة لطلب HTTP، ثم يتم تعبئتها داخليًا على الخادم الخلفي للبيئة بتنسيق JSON قبل إعادة التوجيه. يساعد هذا في تقليل تكلفة العمالة المطلوبة لتنظيف البيانات وفهرستها عندما نبدأ عملية إعادة التدريب.
يتيح NGWAF حاليًا للمستخدمين إجراء تغييرات على مظهر الواجهة الأمامية لأنظمة الخداع الخاصة بنا داخل بيئة الحجر الصحي (بناءً على نسخة مخصصة من drupot). على المستخدمين ببساطة استبدال مجلد الأصول داخل حجم docker بأصول الواجهة الأمامية التي يختارونها.
NGWAF متكيف أيضًا مع المستخدمين الذين يرغبون في ربط أنظمة الخداع الخاصة بهم كجزء من بيئة الحجر الصحي. على المستخدمين فقط إعادة توجيه طلبات HTTP الخاصة بنظام الخداع إلى الخادم الخلفي للبيئة (ستقوم العمليات الخلفية تلقائيًا بتنظيف البيانات وإعادة توجيهها إلى لوحة تحليل - مجموعة ELK).
الذكاء ليس ذكاءً حقًا حتى تتمكن من مواصلة التعلم
مع ظهور حمولات وأنماط هجوم جديدة، من المهم ترقية قدرات الكشف لضمان الأمان. لذلك، تم بناء وظيفة إعادة تدريب في NGWAF لضمان أن يتمكن المدافعون من تدريب نموذج التعلم الآلي لاكتشاف تلك الحمولات الأحدث. سيظل المستخدمون غير المألوفين بعلوم البيانات أو الشبكات العصبية قادرين على ضبط النماذج باستخدام هذه الواجهة البسيطة، حيث يتم التعامل مع الخطوات المعقدة نيابة عنهم.
يحتاج المستخدمون فقط إلى تحميل عينة صغيرة من البيانات الموسومة من نظامهم الحي (على سبيل المثال، في حدود الألف المنخفضة)، والتي سيتم استخدامها لضبط النموذج الحالي في الخلفية:
عند اكتمال التدريب، سيتم تزويد المستخدمين أيضًا ببعض التشخيصات الموجزة للنموذج (على سبيل المثال، الأداء على مجموعة الاختبار وعند عتبات النقاط المختلفة) لتقييم النموذج الجديد.
لبدء عملية إعادة التدريب، توجه إلى لوحة التحكم واتبع هذه الخطوات:
payload [str]: يجب أن يكون هذا إما الحمولة من نظامك، أو بعض الأمثلة النصية (على سبيل المثال، أمثلة حقن SQL)label [int]: يجب أن يكون 0 للأمثلة غير الضارة و 1 للأمثلة الضارةis_url [bool]: يجب أن يكون TRUE إذا كانت الحمولة من نظامك (أي تتضمن معلومات نظام أخرى مثل المسار والجهاز)، و FALSE إذا كانت مثالًا نصيًا (على سبيل المثال "1==1")http://localhost:8088 لعرض لوحة إدارة NGWAF.
يستخدم NGWAF مجموعة ELK لالتقاط سجلات بيانات الشبكة التي تمر عبر NGWAF، مما يسمح للمستخدمين بمراقبة حركة المرور التي تمر عبر NGWAF لمزيد من التحليل.
يأتي NGWAF أيضًا مع إشعار Telegram مباشر، لإعلام المالكين بالتهديدات الضارة الحية التي يكتشفها NGWAF.
أنظمة التشغيل المختبرة
مع تشغيل Docker، قم بتشغيل الملف التالي باستخدام الأمر أدناه:
./run.sh
لاستبدال الأهداف، قم بتوجيه المتغيرين dest_server و honey_pot_server إلى الأهداف الصحيحة في ملف /waf/WafApp/waf.py
# Replace me
dest_server = "dvwa"
honey_pot_server = "drupot:5000"
بمجرد أن تكون حاوية Docker قيد التشغيل، يمكنك زيارة localhost الخاص بك، حيث تعمل هذه المنافذ على تشغيل هذه الخدمات:
قم أيضًا بإعداد ما يلي في ملف waf-secrets.env
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"
# TELEGRAM CONFIG
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"
قم أيضًا بإعداد ما يلي في ملف waf-admin-secrets.env
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxxx.xxx"
API_KEY="******************"
BUCKET_NAME="******************"
ACCESS_KEY_ID="******************"
SECRET_ACCESS_KEY="******************"
SQL_USERNAME="******************"
SQL_PASSWORD="******************"
SQL_SERVER="******************"
SQL_DATABASE_NAME="******************"
NGWAF هو مشروع قيد التطوير، مفتوح المصدر، قد تتغير الوظائف والميزات من تحديث إلى آخر. إذا كنت مهتمًا بالمساهمة، فلا تتردد في إنشاء issue أو طلب سحب (pull request)!
| بنية النموذج |
|---|
| الدقة |
|---|
| درجة F1 |
|---|
| نموذجنا النهائي | 0.995 | 0.993 |
| شبكة عصبية بدون وحدة LSTM | 0.956 | 0.891 |
| شجرة القرار | 0.878 | 0.840 |
| الانحدار اللوجستي | 0.946 | 0.914 |
| المنفذ | الخدمة | ملاحظات | بيانات الدخول (إن وجدت) |
|---|
| 8080 | DVWA | حيث يقيم WAF | admin:password |
| 5601 | Elasticsearch | لعرض السجلات | elastic:changeme |
| 8088 | لوحة الإدارة | لوحة التحكم لإدارة نموذج WAF | |
| 5001 | Drupot | نظام خادع |