
باب خلفي على مستوى النواة في iptables يقبل جميع الحزم التي تحتوي على evil bit (RFC 3514) المحدد، متجاوزًا قواعد جدار الحماية. يتضمن بنيات داخل الشجرة وخارجها لنظام Linux.
iptable_eviliptable_evil هو باب خلفي محدد جدًا لـ iptables يسمح بمرور جميع الحزم التي تحتوي على البت الشرير، بغض النظر عن قواعد جدار الحماية.
التنفيذ الأولي موجود في iptable_evil.c، الذي يضيف جدولًا إلى iptables ويتطلب تعديل رأس نواة (kernel header) لإدراج مكان له.
التنفيذ الثاني هو نسخة معدلة من الوحدة الأساسية ip_tables وتبعياتها للسماح بجميع الحزم الشريرة.
لقد اختبرته على إصدار نواة لينكس 5.8.0-48، ولكن من المفترض أن يكون هذا قابلاً للتطبيق على أي إصدار نواة تقريبًا مع تنفيذ كامل لـ iptables.
RFC3514، المنشور في 1 أبريل 2003، يحدد البت الأعلى ترتيبًا غير المستخدم سابقًا في حقل إزاحة التجزئة (IP fragment offset field) كعلامة أمان.
بالنسبة للأنظمة المتوافقة مع RFC، فإن وجود 1 في موضع ذلك البت يشير إلى نية شريرة وسيتسبب في حظر الحزمة.
افتراضيًا، هذا البت مغلق، ولكن يمكن تشغيله في برنامجك إذا كنت تقوم بتجميع حزمة IP بالكامل (كما تفعل بعض أدوات الاختراق)، أو في نواة لينكس باستخدام (منسوخ في هذا المستودع ).
عند استلام حزمة بواسطة نواة لينكس، تتم معالجتها بواسطة iptables وإما أن تُرسل إلى مساحة المستخدم، أو تُرفض، أو تُعدل بناءً على القواعد المُهيأة.
على وجه الخصوص، يستخدم كل جدول iptables الدالة ipt_do_table في ip_tables.c لتقرير ما إذا كان سيتم قبول حزمة معينة.
لقد قمت بتعديل ذلك لقبول أي حزمة تحتوي على البت الشرير تلقائيًا وتخطي جميع المعالجة الإضافية.
حاولت أيضًا إضافة جدول آخر (iptable_evil.c) الذي سيقبل جميع الحزم الشريرة ويسلم الأخرى إلى الجداول القياسية للمعالجة، ولكنني لم أتوصل أبدًا إلى كيفية تمرير الحزم إلى الجدول التالي وقررت أن الباب الخلفي ipt_do_table كان كافيًا كإثبات للمفهوم.
كنت بحاجة إلى تنفيذ وكتابة مشروع كبير إلى حد ما في أمن الحوسبة لأحد فصولي الدراسية، وبدا هذا فكرة رائعة. ربما هذا أكثر مما كان يتوقعه لهذا الأمر ولكن ¯\_(ツ)_/¯.
يتطلب جدول evil تعديل رؤوس النواة، لذا فإن تثبيته يتطلب التشغيل باستخدام نواة منتجة من خلال بناء الشجرة الكاملة.
replace-existing إلى شجرة مصدر النواة الخاصة بك، مع استبدال الملفات الموجودة.iptable_evil.c إلى linux-X.Y.Z/net/ipv4/netfilterip_tables.c إلى linux-X.Y.Z/net/ipv4/netfilteriptables -t filter -Liptables -t evil -L (سيكون لهذا إخراج مشوش، لكنه سيحمل الوحدة)هذا أسهل وأسرع بكثير، لكنه لا يدعم جدول evil ويضع علامة على النواة بأنها "ملوثة".
من المفترض أن يكون من الممكن نسخ ملفات ko المنتجة بواسطة هذا إلى كمبيوتر آخر بنفس إصدار النواة تمامًا، لكنني لم أختبر ذلك.
makermmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.koلاختبار هذا، تحتاج إما إلى إعادة بناء نواة كاملة باستخدام هذا التصحيح أو إنشاء حزمك الخاصة باستخدام أداة مثل Scapy.
اخترت الخيار الأول لأنني كنت بالفعل أبني النواة لجدول evil.
في لقطة الشاشة الأولى، قمت بحظر كل حركة المرور إلى هذا الجهاز الافتراضي في iptables، لكنني ما زلت قادرًا على الاتصال عبر SSH لأن حزمي تحتوي على البت الشرير، كما تظهر لقطة الشاشة الثانية.

عند الاتصال بالجهاز الافتراضي الذي يحتوي على الباب الخلفي من جهاز افتراضي لا يضبط البت الشرير، سينتهي اتصال SSH في النهاية بانتهاء المهلة.

التقاطات الحزم لاتصالات SSH مع الباب الخلفي وبدونه موجودة في مجلد docs/ في هذا المستودع للاطلاع عليها.
iptables_uwu لبين كوكس (في الغالب فقط لإعطاء أسماء الأشياء للبحث): https://github.com/benjojo/iptables-uwuiptables وكيفية إضافة أهداف ووحدات إليه: https://inai.de/documents/Netfilter_Modules.pdf