
Backdoor a livello kernel per iptables che accetta tutti i pacchetti con il bit evil dell'RFC 3514 impostato, bypassando le regole del firewall. Include build in-tree e out-of-tree per Linux.
iptable_eviliptable_evil è un backdoor molto specifico per iptables che consente (fa passare) tutti i pacchetti con il bit evil impostato, indipendentemente dalle regole del firewall.
L'implementazione iniziale è in iptable_evil.c, che aggiunge una tabella a iptables e richiede la modifica di un header del kernel per inserire uno spazio per essa.
La seconda implementazione è una versione modificata del modulo core ip_tables e dei suoi dipendenti per permettere il passaggio di tutti i pacchetti Evil.
L'ho testato sulla versione 5.8.0-48 del kernel Linux, ma dovrebbe essere applicabile praticamente a qualsiasi versione del kernel con un'implementazione completa di iptables.
L'RFC3514, pubblicata il 1° aprile 2003, definisce il bit più significativo, precedentemente inutilizzato, del campo "fragment offset" dell'IP come un flag di sicurezza.
Per i sistemi conformi all'RFC, un 1 in quella posizione indica intenti malevoli e farà sì che il pacchetto venga bloccato.
Per impostazione predefinita, questo bit è disattivato, ma può essere attivato nel vostro software se assemblate l'intero pacchetto IP (come fanno alcuni strumenti di hacking), oppure nel kernel Linux usando questa patch (rispecchiata in questo repository qui).
Quando un pacchetto viene ricevuto dal kernel Linux, viene elaborato da iptables e quindi inviato allo spazio utente, rifiutato o modificato in base alle regole configurate.
In particolare, ogni tabella di iptables utilizza la funzione ipt_do_table in ip_tables.c per decidere se accettare un determinato pacchetto.
L'ho modificata per accettare automaticamente qualsiasi pacchetto con il bit evil impostato e saltare ogni ulteriore elaborazione.
Ho anche tentato di aggiungere un'altra tabella (iptable_evil.c) che avrebbe accettato tutti i pacchetti evil e passato gli altri alle tabelle standard per l'elaborazione, ma non ho mai capito come passare i pacchetti alla tabella successiva e ho deciso che il backdoor di ipt_do_table fosse sufficiente come proof of concept.
Dovevo realizzare e documentare un progetto abbastanza grande in sicurezza informatica per uno dei miei corsi, e questa mi è sembrata un'idea interessante. Probabilmente è più lavoro di quanto si aspettasse per questo, ma ¯\_(ツ)_/¯.
La tabella evil richiede la modifica degli header del kernel, quindi l'installazione richiede l'esecuzione con un kernel prodotto tramite la costruzione completa dell'albero.
replace-existing nella directory del tuo kernel sorgente, sovrascrivendo i file esistenti.iptable_evil.c in linux-X.Y.Z/net/ipv4/netfilterip_tables.c in linux-X.Y.Z/net/ipv4/netfilteriptables -t filter -Liptables -t evil -L (l'output sarà confuso, ma il modulo verrà caricato)Questo è significativamente più semplice e veloce, ma non supporta la tabella evil e segna il kernel come "contaminato".
Dovrebbe essere possibile copiare i file ko prodotti da questo procedimento su un altro computer con la stessa identica versione del kernel,
ma non l'ho testato.
makermmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.koPer testarlo, devi ricostruire l'intero kernel con questa patch o creare i tuoi pacchetti usando uno strumento come Scapy.
Ho scelto la prima opzione perché stavo già costruendo il kernel per la tabella evil.
Nella prima schermata, ho bloccato tutto il traffico verso questa VM in iptables, ma riesco comunque a connettermi via SSH perché i miei pacchetti
hanno il bit evil impostato, come mostra la seconda schermata.

Quando ci si connette alla VM con backdoor da una VM che non imposta il bit evil, la connessione SSH alla fine scade.

Le catture dei pacchetti delle connessioni SSH con e senza backdoor si trovano nella cartella docs/ di questo repo per la vostra consultazione.
iptables_uwu di Ben Cox (principalmente per dare i nomi delle cose da ricercare): https://github.com/benjojo/iptables-uwuiptables e come aggiungere target e moduli: https://inai.de/documents/Netfilter_Modules.pdf