
कर्नेल-स्तरीय iptables बैकडोर जो RFC 3514 evil bit सेट होने पर सभी पैकेट्स को स्वीकार करता है, फ़ायरवॉल नियमों को बायपास करते हुए। इसमें Linux के लिए in-tree और out-of-tree बिल्ड शामिल हैं।
iptable_eviliptable_evil एक बहुत विशिष्ट बैकडोर है iptables के लिए जो सभी पैकेट्स को अनुमति देता है जिनमें evil bit सेट है, फायरवॉल नियमों की परवाह किए बिना।
प्रारंभिक कार्यान्वयन iptable_evil.c में है, जो iptables में एक टेबल जोड़ता है और इसके लिए एक स्थान डालने हेतु कर्नेल हेडर को संशोधित करने की आवश्यकता होती है।
दूसरा कार्यान्वयन ip_tables कोर मॉड्यूल और उसके आश्रितों का एक संशोधित संस्करण है जो सभी Evil पैकेट्स को अनुमति देता है।
मैंने इसे Linux कर्नेल संस्करण 5.8.0-48 पर परीक्षण किया है, लेकिन यह iptables के पूर्ण कार्यान्वयन वाले लगभग किसी भी कर्नेल संस्करण पर लागू होना चाहिए।
RFC3514, 1 अप्रैल 2003 को प्रकाशित, IP फ्रैगमेंट ऑफसेट फ़ील्ड के पहले से अप्रयुक्त उच्च-क्रम बिट को एक सुरक्षा फ़्लैग के रूप में परिभाषित करता है।
RFC-अनुरूप प्रणालियों के लिए, उस बिट स्थान में 1 का अर्थ है दुर्भावनापूर्ण इरादा और पैकेट को अवरुद्ध कर देगा।
डिफ़ॉल्ट रूप से, यह बिट बंद होता है, लेकिन आपके सॉफ़्टवेयर में इसे चालू किया जा सकता है यदि आप अपने IP पैकेट को पूर्ण रूप से असेंबल कर रहे हैं (जैसा कि कुछ हैकिंग टूल करते हैं), या Linux कर्नेल में इस पैच का उपयोग करके (इस रिपॉज़िटरी में यहाँ मिरर किया गया)।
जब Linux कर्नेल द्वारा एक पैकेट प्राप्त होता है, तो इसे iptables द्वारा संसाधित किया जाता है और या तो यूज़रस्पेस को भेजा जाता है, अस्वीकार किया जाता है, या कॉन्फ़िगर किए गए नियमों के आधार पर संशोधित किया जाता है।
विशेष रूप से, प्रत्येक iptables टेबल ip_tables.c में फ़ंक्शन ipt_do_table का उपयोग यह तय करने के लिए करता है कि दिए गए पैकेट को स्वीकार करना है या नहीं।
मैंने इसे संशोधित किया है ताकि evil bit सेट वाले किसी भी पैकेट को स्वचालित रूप से स्वीकार कर लिया जाए और आगे की सभी प्रक्रिया को छोड़ दिया जाए।
मैंने एक और टेबल (iptable_evil.c) जोड़ने का प्रयास भी किया जो सभी evil पैकेट को स्वीकार करेगी और दूसरों को प्रसंस्करण के लिए मानक टेबल को सौंप देगी, लेकिन मैं कभी यह पता नहीं लगा सका कि पैकेट को अगली टेबल पर कैसे पास किया जाए और मैंने तय किया कि प्रूफ़ ऑफ़ कॉन्सेप्ट के लिए ipt_do_table बैकडोर पर्याप्त है।
मुझे अपनी एक कक्षा के लिए कम्प्यूटिंग सुरक्षा में एक अच्छा बड़ा प्रोजेक्ट करना और लिखना था, और यह एक अच्छा विचार लगा। यह शायद उससे अधिक काम है जितनी उसे उम्मीद थी लेकिन ¯\_(ツ)_/¯.
evil टेबल को कर्नेल हेडर्स के संशोधन की आवश्यकता होती है, इसलिए इसे स्थापित करने के लिए पूर्ण ट्री बिल्ड के माध्यम से उत्पादित कर्नेल के साथ चलने की आवश्यकता होती है।
replace-existing की सामग्री को अपने कर्नेल स्रोत ट्री में कॉपी करें, मौजूदा फ़ाइलों को ओवरराइट करते हुए।iptable_evil.c को linux-X.Y.Z/net/ipv4/netfilter पर कॉपी करेंip_tables.c को linux-X.Y.Z/net/ipv4/netfilter पर कॉपी करेंiptables -t filter -Liptables -t evil -L (इसका आउटपुट भ्रमित करने वाला होगा, लेकिन यह मॉड्यूल को लोड करेगा)यह काफी आसान और तेज़ है, लेकिन evil टेबल का समर्थन नहीं करता और कर्नेल को "tainted" के रूप में चिह्नित करता है।
इसके द्वारा उत्पादित ko फ़ाइलों को समान कर्नेल संस्करण वाले दूसरे कंप्यूटर पर कॉपी करना संभव होना चाहिए, लेकिन मैंने इसका परीक्षण नहीं किया है।
make चलाएँrmmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.koइसका परीक्षण करने के लिए, आपको या तो इस पैच के साथ अपने पूरे कर्नेल को पुनर्निर्माण करना होगा या Scapy जैसे टूल का उपयोग करके अपने स्वयं के पैकेट बनाने होंगे।
मैंने पहला विकल्प चुना क्योंकि मैं पहले से ही evil टेबल के लिए कर्नेल बना रहा था।
पहले स्क्रीनशॉट में, मैंने iptables में इस VM के सभी ट्रैफ़िक को अवरुद्ध कर दिया है, लेकिन मैं अभी भी SSH पर कनेक्ट करने में सक्षम हूं क्योंकि मेरे पैकेट्स में evil bit सेट है, जैसा कि दूसरे स्क्रीनशॉट में दिखाया गया है।

जब एक VM से (जो evil bit सेट नहीं करता) बैकडोर वाले VM से कनेक्ट किया जाता है, तो SSH कनेक्शन अंततः टाइम आउट हो जाएगा।

बैकडोर और गैर-बैकडोर SSH कनेक्शनों के पैकेट कैप्चर इस रिपो में docs/ फ़ोल्डर में आपके अवलोकन के लिए हैं।
iptables_uwu (मुख्यतः शोध करने के लिए चीजों के नाम देने के लिए): https://github.com/benjojo/iptables-uwuiptables कैसे काम करता है और इसमें लक्ष्य और मॉड्यूल कैसे जोड़ें: https://inai.de/documents/Netfilter_Modules.pdf