
Backdoor de iptables a nivel de kernel que acepta todos los paquetes con el bit malvado RFC 3514 activado, evitando las reglas del cortafuegos. Incluye compilaciones dentro del árbol y fuera del árbol para Linux.
iptable_eviliptable_evil es un backdoor muy específico para iptables que permite todos los paquetes con el evil bit activado, sin importar las reglas del firewall.
La implementación inicial está en iptable_evil.c, que añade una tabla a iptables y requiere modificar un encabezado del kernel para insertar un espacio para ella. La segunda implementación es una versión modificada del módulo central ip_tables y sus dependientes para permitir todos los paquetes Evil.
Lo he probado en la versión de kernel de Linux 5.8.0-48, pero esto debería ser aplicable a prácticamente cualquier versión del kernel con una implementación completa de iptables.
RFC3514, publicado el 1 de abril de 2003, define el bit de orden superior previamente no utilizado del campo de desplazamiento de fragmentos IP como una bandera de seguridad. Para los sistemas compatibles con RFC, un 1 en esa posición de bit indica intención malvada y hará que el paquete sea bloqueado.
Por defecto, este bit está desactivado, pero se puede activar en su software si está ensamblando la totalidad de su paquete IP (como hacen algunas herramientas de hacking), o en el kernel de Linux usando este parche (reflejado en este repositorio aquí).
Cuando un paquete es recibido por el kernel de Linux, es procesado por iptables y enviado al espacio de usuario, rechazado o modificado según las reglas configuradas. En particular, cada tabla de iptables usa la función ipt_do_table en ip_tables.c para decidir si aceptar un paquete dado. He modificado eso para aceptar automáticamente cualquier paquete con el evil bit activado y saltar todo procesamiento adicional.
También intenté agregar otra tabla (iptable_evil.c) que aceptara todos los paquetes evil y entregara otros a las tablas estándar para su procesamiento, pero nunca descubrí cómo pasar los paquetes a la siguiente tabla y decidí que el backdoor de ipt_do_table era suficiente como prueba de concepto.
Necesitaba hacer y redactar un proyecto bastante grande en seguridad informática para una de mis clases, y esto parecía una idea genial. Esto es probablemente más trabajo de lo que él esperaba para esto, pero ¯\_(ツ)_/¯.
La tabla evil requiere modificación de los encabezados del kernel, por lo que instalarla requiere ejecutar con un kernel producido a través de la construcción completa del árbol.
replace-existing a tu árbol de fuentes del kernel, sobrescribiendo los archivos existentes.iptable_evil.c a linux-X.Y.Z/net/ipv4/netfilterip_tables.c a linux-X.Y.Z/net/ipv4/netfilteriptables -t filter -Liptables -t evil -L (esto tendrá una salida confusa, pero cargará el módulo)Esto es significativamente más fácil y rápido, pero no soporta la tabla evil y marca el kernel como "contaminado" (tainted). Debería ser posible copiar los archivos ko producidos por esto a otra computadora con exactamente la misma versión del kernel, pero no lo he probado.
makermmod iptable_*rmmod ip_tablesinsmod ip_tables.koinsmod iptable_filter.koPara probar esto, necesitas reconstruir todo tu kernel con este parche o crear tus propios paquetes usando una herramienta como Scapy. Opté por la primera opción porque ya estaba construyendo el kernel para la tabla evil.
En la primera captura de pantalla, he bloqueado todo el tráfico a esta máquina virtual en iptables, pero aún puedo conectarme por SSH porque mis paquetes tienen el evil bit activado, como muestra la segunda captura.

Al conectarse a la máquina virtual con backdoor desde una máquina virtual que no establece el evil bit, la conexión SSH eventualmente se agotará.

Las capturas de paquetes de conexiones SSH con y sin backdoor están en la carpeta docs/ de este repositorio para su consulta.
iptables_uwu de Ben Cox (principalmente para dar los nombres de cosas a investigar): https://github.com/benjojo/iptables-uwuiptables y cómo agregar objetivos y módulos: https://inai.de/documents/Netfilter_Modules.pdf