
Kernel-Level-iptables-Backdoor, die alle Pakete mit gesetztem RFC-3514-Evil-Bit akzeptiert und dabei Firewall-Regeln umgeht. Enthält In-Tree- und Out-of-Tree-Builds für Linux.
iptable_eviliptable_evil ist eine sehr spezifische Hintertür für iptables, die alle Pakete mit gesetztem Evil Bit durchlässt, unabhängig von den Firewall-Regeln.
Die erste Implementierung befindet sich in iptable_evil.c, die eine Tabelle zu iptables hinzufügt und eine Modifikation eines Kernel-Headers erfordert, um Platz dafür zu schaffen.
Die zweite Implementierung ist eine modifizierte Version des ip_tables-Kernmoduls und seiner Abhängigkeiten, die alle Evil-Pakete durchlässt.
Ich habe es mit Linux-Kernel Version 5.8.0-48 getestet, aber es sollte auf so ziemlich jeder Kernel-Version mit einer vollständigen Implementierung von iptables anwendbar sein.
RFC3514, veröffentlicht am 1. April 2003, definiert das zuvor ungenutzte höchstwertige Bit des IP-Fragment-Offset-Feldes als Sicherheitsflag.
Für RFC-konforme Systeme zeigt eine 1 an dieser Bitposition böswillige Absicht an und bewirkt, dass das Paket blockiert wird.
Standardmäßig ist dieses Bit ausgeschaltet, kann aber in Ihrer Software eingeschaltet werden, wenn Sie das vollständige IP-Paket zusammenbauen (wie es einige Hacking-Tools tun), oder im Linux-Kernel mithilfe dieses Patches (gespiegelt in diesem Repository hier).
Wenn ein Paket vom Linux-Kernel empfangen wird, wird es von iptables verarbeitet und je nach konfigurierten Regeln entweder an den Userspace gesendet, abgelehnt oder modifiziert.
Insbesondere verwendet jede iptables-Tabelle die Funktion ipt_do_table in ip_tables.c, um zu entscheiden, ob ein bestimmtes Paket akzeptiert wird.
Ich habe dies modifiziert, um automatisch jedes Paket mit gesetztem Evil Bit zu akzeptieren und die gesamte weitere Verarbeitung zu überspringen.
Ich habe auch versucht, eine weitere Tabelle (iptable_evil.c) hinzuzufügen, die alle Evil-Pakete akzeptiert und andere zur Verarbeitung an die Standardtabellen weitergibt, aber ich habe nie herausgefunden, wie man die Pakete an die nächste Tabelle übergibt, und entschied, dass die ipt_do_table-Hintertür als Machbarkeitsnachweis ausreicht.
Ich musste für einen meiner Kurse ein ziemlich großes Projekt in Computersicherheit durchführen und dokumentieren, und das schien eine coole Idee zu sein. Das ist wahrscheinlich mehr Arbeit, als er dafür erwartet hatte, aber ¯\_(ツ)_/¯.
Die evil-Tabelle erfordert eine Modifikation der Kernel-Header, daher erfordert die Installation die Verwendung eines Kernels, der durch einen vollständigen Tree-Build erzeugt wurde.
replace-existing in Ihren Kernel-Quellbaum und überschreiben Sie vorhandene Dateien.iptable_evil.c nach linux-X.Y.Z/net/ipv4/netfilterip_tables.c nach linux-X.Y.Z/net/ipv4/netfilteriptables -t filter -Liptables -t evil -L (dies wird eine verwirrende Ausgabe haben, aber lädt das Modul)Dies ist deutlich einfacher und schneller, unterstützt aber die evil-Tabelle nicht und markiert den Kernel als "befleckt" (tainted).
Es sollte möglich sein, die so erzeugten ko-Dateien auf einen anderen Computer mit exakt derselben Kernel-Version zu kopieren, aber ich habe es nicht getestet.
make ausrmmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.koUm dies zu testen, müssen Sie entweder Ihren gesamten Kernel mit diesem Patch neu erstellen oder Ihre eigenen Pakete mit einem Tool wie Scapy erzeugen.
Ich habe die erste Option gewählt, weil ich den Kernel bereits für die evil-Tabelle baute.
Im ersten Screenshot habe ich den gesamten Datenverkehr zu dieser VM in iptables blockiert, kann aber trotzdem per SSH verbinden, weil meine Pakete das Evil Bit gesetzt haben, wie der zweite Screenshot zeigt.

Wenn Sie von einer VM, die das Evil Bit nicht setzt, eine Verbindung zur Hintertür-VM herstellen, wird die SSH-Verbindung schließlich eine Zeitüberschreitung (Timeout) verursachen.

Paketmitschnitte der SSH-Verbindungen mit und ohne Hintertür befinden sich im Ordner docs/ in diesem Repository zur Ansicht.
iptables_uwu (hauptsächlich um die Namen der Dinge zu nennen, die man recherchieren sollte): https://github.com/benjojo/iptables-uwuiptables funktioniert und wie man Ziele und Module hinzufügt: https://inai.de/documents/Netfilter_Modules.pdf