HiddenWall - Generador de módulos del kernel de Linux para reglas personalizadas con Netfilter (Puertos de bloque, Modo oculto, Funciones de rootkit, etc.)


HiddenWall es un generador de módulos del kernel de Linux para reglas personalizadas con netfilter. (puertos de bloque, modo oculto , funciones de rootkit , etc.). La motivación: en una mala situación, el atacante puede hacer que caigan sus iptables / ufw ... pero si tiene HiddenWall, el atacante no encontrará el módulo oculto del kernel que bloquea el acceso externo, porque tiene un gancho para netfilter en el kernel land (piense como una segunda capa para firewall).
Mi propósito inicial en este proyecto es proteger mi servidor personal, ahora es proteger las máquinas de mis amigos. Cuando hablo de "amigos", digo gente que no sabe cómo escribir código de bajo nivel. Al usar HiddenWall, puede generar su módulo de kernel personalizado para la configuración de su firewall.
El programador de bajo nivel puede escribir nuevas plantillas para módulos, etc ...


Primer paso, comprenda antes de ejecutar
Verificar si la versión del kernel es 3.x, 4.x o 5.x:
uname -r
Clonar el repositorio
git clone https://github.com/CoolerVoid/HiddenWall
Entrar en la carpeta
cd HiddenWall/module_generator
Edite sus reglas de firewall en las reglas de directorio / server.yaml, los scripts de python usan ese archivo para generar un nuevo módulo de firewall.
$ cat rules/server.yaml
module_name: SandWall
public_ports: 80,443,53
unhide_key: AbraKadabra
hide_key: Shazam
fake_device_name: usb14
liberate_in_2_out: True
whitelist: 
- machine: 
   ip: 192.168.100.181
   open_ports: 22,21
- machine:
   ip: 192.168.100.22
   open_ports: 22
Si desea estudiar el código estático para generar, busque el contenido en el directorio "plantillas". 

Segundo paso, genere su módulo.
Si desea generar un módulo de kernel siguiendo su archivo YAML de reglas, siga ese comando:
$ python3 WallGen.py --template template/hiddenwall.c -r rules/server.yaml
Esto genera un módulo genérico con reglas de server.yaml, si desea usar otra plantilla, puede usar "wall.c", por lo que el módulo de plantilla "hiddenwall" tiene la opción de ejecutarse en modo oculto (no es visible para "# lsmod" por ejemplo). 

Tercer paso, instale su módulo
Para probar el módulo:
# cd output; make clean; make
# insmod SandWall.ko
La regla de YAML para generar un módulo es simple, deje todo en paquetes, acepte los puertos 80,443 y 53. La máquina 192 * .181 puede conectarse en los puertos 22 y 21 ... 
si usa nmap en localhost / 127.0.0.1 puede ver los puertos abiertos ... porque la regla liberate_in_2_out es verdadera. 
La contraseña para activar el Firewall es "AbraKadabra". 
Contraseña para activar Firewall invisible es "Shazam". 
Debe enviar la contraseña para su dispositivo falso "usb14". 
Para salir del módulo, necesita activar el comando "lsmod" ...
# echo "AbraKadabra" > /dev/usb14
# lsmod | grep SandWall
# rmmod SandWall

Notas aleatorias
Probadas en ubuntu 16 y fedora 29 en los núcleos "3.x", "4.x" y "5.x". 

TODO
Suport a IPV6. Macro para seleccionar la interfaz (para usar múltiples modos para cada interfaz). Opción para eliminar los últimos registros cuando gire el modo de ocultar. Opción para buscar y eliminar otros kits de herramientas ... Generador de código para BFP ...

Referencias
Wikipedia Netfilter https://en.wikipedia.org/wiki/Netfilter 
Linux Device Drivers http://lwn.net/Kernel/LDD3/ 
Diamorphine de M0nad https://github.com/m0nad/Diamorphine/


Comentarios