
أداة تدقيق وتجاوز جدار الحماية من الجيل التالي
v0.2
Fireaway هي أداة لتدقيق وتجاوز وإخراج البيانات ضد قواعد فحص الطبقة 7/معرف التطبيق (AppID) على الجدران النارية من الجيل التالي، بالإضافة إلى آليات الدفاع الأخرى للفحص العميق للحزم، مثل منع فقدان البيانات (DLP) والوكلاء المدركون للتطبيقات. تستند هذه التكتيكات إلى مبدأ ضرورة السماح بإنشاء اتصالات عبر الجدار الناري من الجيل التالي (NGFW) لرؤية بيانات الطبقة 7 لتصفيتها، بالإضافة إلى تزوير التطبيقات لإخفاء قنوات الاتصال داخل سجلات الجدار الناري كحركة مرور مستخدم عادية، مثل تصفح الإنترنت. في حالة تجاوز أدوات منع فقدان البيانات، يرسل Fireaway البيانات في "أجزاء" صغيرة لا تطابق محفزات التعبيرات العادية وقواعد DLP الأخرى، بالإضافة إلى تضمين البيانات في رؤوس HTTP المزورة للتطبيقات المشروعة التي لم يتم تصميم معظم تقنيات منع فقدان البيانات لفحصها. وقد نجحت الأداة أيضًا في هزيمة محركات الكشف عن الشذوذ والاستدلال من خلال قدرتها على تزوير رؤوس التطبيقات وإخفاء البيانات داخلها.
بدء تشغيل خادم FireAway: عادةً ما يتم تشغيل خادم FireAway على جانب الخروج من الجدار الناري (مثل خادم على الإنترنت)، ويستمع على منفذ يُعتقد أنه مغلق لمعرفة ما إذا كانت أي قواعد قائمة على التطبيقات تسمح بحركة المرور بالخروج على هذا المنفذ، أو لاستقبال أجزاء البيانات الأولية لمعرفة ما إذا كانت DLP أو الوكلاء التطبيقيون يمكنهم التعرف عليها:
python fa_server.py <port to listen on> <mode number>
يمكن تشغيل الخادم في أربعة أوضاع:
وضع الاختبار (الوضع 0) - استقبال البيانات المرسلة بشكل تسلسلي أو بيانات اختبار تم إنشاؤها عشوائيًا. تُكتب البيانات كما يتم استقبالها ولا يلزم إعادة التجميع.
استقبال الأجزاء التسلسلي (الوضع 1) - يتم إرسال البيانات إلى خادم واحد أو أكثر بأحجام أجزاء يحددها العميل بشكل تسلسلي. يقوم Fa_server بتسجيل الطابع الزمني لاستلام الجزء في المخرجات، ويستخدم وقت الاستلام كمفتاح ترتيب أثناء إعادة التجميع. سيكون هناك أيضًا "مفتاح إعادة تجميع" يولده الخادم لاستخدامه مع fa_assembler.py. هذا مفتاح عشوائي مكون من 4 أحرف يُستخدم كفاصل بين الأجزاء، بحيث لا توجد هذه الأحرف في أجزاء البيانات المنقولة.
استقبال الأجزاء العشوائي (الوضع 2) - يتم إرسال البيانات إلى خادم واحد أو أكثر بترتيب عشوائي. يعتمد هذا الوضع على إرسال رسالة "مفتاح التسلسل" من العميل إلى خادم عشوائي في المجموعة. عند بدء تشغيل كل خادم، سيطلب الخادم إدخال "معرف مفتاح التسلسل". يجب أن يكون هذا نمطًا غير موجود في الملف المرسل حتى يتمكن الخادم من تحديد البيانات المستلمة عبر اتصال كمفتاح التسلسل بشكل صحيح. تأكد من استخدام نفس معرف مفتاح التسلسل على جميع الخوادم! سيختار العميل خادمًا عشوائيًا لإرسال مفتاح التسلسل إليه، لذلك من المهم أن تتمكن جميع الخوادم من تحديد موقع مفتاح التسلسل في بياناتها المستلمة. سيتم تسجيل مفتاح التسلسل بواسطة الخادم المستلم في ملف يسمى 'SequenceKey.txt'.
استقبال أجزاء التطبيق المزيف (الوضع 3) - يتم إرسال بيانات مشفرة بـ Base64 إلى خادم واحد أو أكثر داخل رؤوس HTTP لتزوير التطبيقات المشروعة. سيقوم هذا الوضع أيضًا بإنشاء "مفتاح إعادة تجميع" لاستخدامه مع سكريبت fa_assembler.
سيتم حفظ جميع البيانات التي تستقبلها الخوادم على المنفذ المحدد في ملف ReceivedData.txt في الدليل الذي تم تشغيل الخادم منه. إذا اكتشف الخادم اختلافًا في أحجام كمية البيانات المستلمة (مما يشير إلى تنشيط التصفية من الجدار الناري)، فسيتم عرض هذا الإخراج على وحدة تحكم الخادم:
Got the same or lower amount of data on two consecutive runs. If sending test data, maximum data leak size may have been reached.
بدء تشغيل عميل FireAway/مزور التطبيقات: يحتوي عميل FireAway على ثلاثة أوضاع:
وضع الاختبار (الوضع 0) - إرسال بيانات عشوائية بأحجام أجزاء متزايدة لمعرفة كمية البيانات التي يمكن إرسالها قبل أن تتدخل ضوابط الطبقة 7 وتوقف تدفق حركة المرور.
وضع الإخراج التسلسلي (الوضع 1) - فتح ملف وإرساله على شكل أجزاء بحجم محدد. سيتم نقل البيانات بشكل تسلسلي.
وضع الإخراج العشوائي (الوضع 2) - فتح ملف وإرساله على شكل أجزاء بحجم محدد، ولكن بترتيب عشوائي. عند استخدام هذا الوضع، سيطلب العميل معرف مفتاح التسلسل. هذه هي القيمة المحددة على الخوادم البعيدة، وسيقوم العميل بوضع علامة على مفتاح التسلسل المُنشأ باستخدام المعرف، والذي يتم إرساله إلى خادم عشوائي إذا تم توفير قائمة أو إلى عنوان IP الخاص بالخادم المحدد، قبل إرسال الملف.
لبدء تشغيل العميل الأساسي:
python fa_client.py <FireAway server IP or path of server list file> <Fireaway Server Port> <Client mode>
يجب أن تكون قائمة الخوادم ملفًا نصيًا بسيطًا يحتوي على قائمة عناوين IP، سطر واحد لكل عنوان. إذا تم استخدام خادم واحد فقط، يمكن تحديد عنوان IP واحد بدلاً من ذلك.
يحتوي عميل تزوير التطبيقات على ثلاثة أوضاع:
وضع الاختبار (الوضع 0) - إرسال بيانات اختبار عشوائية داخل رؤوس HTTP بأجزاء متزايدة الحجم لتحديد كمية البيانات التي يمكن إرسالها قبل أن تتدخل ضوابط الطبقة 7 وتوقف تدفق حركة المرور.
وضع الإخراج المشفر بـ Base64 (الوضع 1) - ترميز ملف إدخال بـ Base64 وإرسال أجزاء من الملف المشفر داخل رؤوس HTTP تم إنشاؤها عشوائيًا لتجاوز DLP وإخفاء الإرسال كتطبيق شرعي.
لبدء تشغيل عميل تزوير التطبيقات:
python fa_spoof.py <FireAway Server IP or path of server list file > <Fireaway Server Port> <Client mode>
سيقوم تزوير التطبيقات بإدراج رؤوس HTTP بشكل عشوائي داخل رؤوس التطبيقات التي تبدو شرعية (مثل Facebook, LinkedIn, إلخ) مع أجزاء البيانات لتلويث السجلات بتطبيقات مختلفة بغرض إخفاء إخراج البيانات.
معيد تجميع Fireaway: يُستخدم معيد تجميع Fireaway (fa_assembler.py) لإعادة تجميع البيانات التي استقبلتها خوادم Fireaway. يحتوي المجمّع على ثلاثة أوضاع، تتوافق مع وضع الخوادم التي استقبلت البيانات:
الوضع 1 - إعادة تجميع البيانات التي تم استقبالها بترتيب تسلسلي بواسطة خوادم في الوضع 1. سيطلب المجمّع تحديد مفتاح إعادة التجميع للملف الذي يحتوي على البيانات المستلمة لكل خادم، وهو القيمة العشوائية التي أنشأها الخادم وعرضها عند بدء التشغيل. يمكن أيضًا العثور على هذه القيمة من خلال فحص الملفات التي تحتوي على الأجزاء المستلمة، والنظر إلى الأحرف الأربعة الأولى.
الوضع 2 - إعادة تجميع البيانات التي تم استقبالها بترتيب عشوائي بواسطة خوادم في الوضع 2. سيطلب المجمّع المسار إلى مفتاح التسلسل، الذي تم استقباله من العميل بواسطة خادم عشوائي أثناء الإرسال. سيطلب أيضًا مفاتيح إعادة التجميع لكل ملف.
الوضع 3 - إعادة تجميع البيانات المشفرة بـ Base64 التي تم استقبالها في رؤوس HTTP لتطبيقات مزيفة. هذا البيانات، مثل الوضع 1، سيطلب أيضًا مفتاح إعادة التجميع.
لبدء تشغيل معيد التجميع:
python fa_assembler.py <reassembly mode> <comma separated paths to files to reassemble>
سيتم حفظ المخرجات في اسم الملف المحدد.
يرجى الإبلاغ عن أي مشكلات أو استفسارات عبر Github.