
Mejora tu detección de malware con WAF + YARA (WAFARAY)
En esencia, la idea principal fue usar WAF + YARA (YARA derecha a izquierda = ARAY) para detectar archivos maliciosos a nivel de WAF antes de que el WAF pueda reenviarlos al backend, p.ej. archivos subidos a través de funciones web ver: https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
Cuando una página web permite la subida de archivos, la mayoría de los WAF no inspeccionan los archivos antes de enviarlos al backend. Implementar WAF + YARA podría proporcionar detección de malware antes de que el WAF reenvíe los archivos al backend.
Sí, una solución es usar ModSecurity + Clamav, la mayoría de las páginas llaman a ClamAV como un proceso y no como un demonio, en este caso, analizar un archivo podría tardar más de 50 segundos por archivo. Ver este recurso: https://kifarunix.com/intercept-malicious-file-upload-with-modsecurity-and-clamav/
:-( Unas pocas pistas aquí Black Hat Asia 2019 por favor continúa leyendo y mira nuestro rápido despliegue de LAB.
Básicamente, es un despliegue rápido (1) con reglas YARA precompiladas y listas para usar a través de ModSecurity (WAF) usando una regla personalizada; (2) esta regla personalizada realizará una inspección y detección de los archivos que puedan contener código malicioso, (3) típicamente funciones web (subida de archivos) si el archivo es sospechoso lo rechazará recibiendo un código 403 Prohibido por ModSecurity.
✔️ YaraCompile.py compila todas las reglas yara. (Código Python3)
✔️ test.conf es un host virtual que contiene las reglas de mod security. (Código ModSecurity)
✔️ Las reglas de ModSecurity llaman a modsec_yara.py para inspeccionar el archivo que se intenta subir. (Código Python3)
✔️ Yara devuelve dos opciones 1 (200 OK) o 0 (403 Prohibido)
/YaraRules/Compiled/YaraRules/rules/YaraRules/YaraScripts/etc/apache2/sites-enabled/temporal BlueTeamers: Aplicación de reglas, mejor alertamiento, detección de malware en archivos subidos a través de funciones web.RedTeamers/pentesters: Alcance GreyBox, subir y evadir con un archivo malicioso, aplicación de reglas.Oficiales de Seguridad: Mantener alertas, caza de amenazas.SOC: Mejor monitoreo de archivos maliciosos.CERT: Análisis de malware, determinar nuevos IOC.La Prueba de Concepto está basada en el sistema operativo Debian 11.3.0 (estable) x64, OWASP CRC v3.3.2 y Yara 4.0.5, encontrarás el script de instalación automática aquí wafaray_install.sh y una guía de instalación manual opcional aquí: manual_instructions.txt; también se ha creado una página PHP como "simulacro" para observar la interacción y detección de archivos maliciosos usando WAF + YARA.
✔️ Paso 1: Descargar Debian 11.3.0: https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso
✔️ Paso 2: Desplegar usando VMware o VirtualBox
✔️ Paso 3: Una vez instalado, sigue las instrucciones a continuación:
alex@waf-labs:~$ su root
root@waf-labs:/home/alex#
# Recuerda cambiar YOUR_USER por tu nombre de usuario (p.ej. waf)
root@waf-labs:/home/alex# sed -i 's/^\(# User privi.*\)/\1\nalex ALL=(ALL) NOPASSWD:ALL/g' /etc/sudoers
root@waf-labs:/home/alex# exit
alex@waf-labs:~$ sudo sed -i 's/^\(deb cdrom.*\)/#\1/g' /etc/apt/sources.list
alex@waf-labs:~$ sudo sed -i 's/^# \(deb\-src http.*\)/ \1/g' /etc/apt/sources.list
alex@waf-labs:~$ sudo sed -i 's/^# \(deb http.*\)/ \1/g' /etc/apt/sources.list
alex@waf-labs:~$ echo -ne "\n\ndeb http://deb.debian.org/debian/ bullseye main\ndeb-src http://deb.debian.org/debian/ bullseye main\n" | sudo tee -a /etc/apt/sources.list
alex@waf-labs:~$ sudo apt-get update
alex@waf-labs:~$ sudo apt-get install sudo -y
alex@waf-labs:~$ sudo apt-get install git vim dos2unix net-tools -y
alex@waf-labs:~$ git clone https://github.com/alt3kx/wafaray
alex@waf-labs:~$ cd wafaray
alex@waf-labs:~$ dos2unix wafaray_install.sh
alex@waf-labs:~$ chmod +x wafaray_install.sh
alex@waf-labs:~$ sudo ./wafaray_install.sh >> log_install.log
# Prueba tu entorno LAB
alex@waf-labs:~$ firefox localhost:8080/upload.php
Una vez descargadas y compiladas las reglas YARA.
Es similar a cuando despliegas ModSecurity, necesitas personalizar qué tipo de regla deseas aplicar. El siguiente log es un ejemplo de cuando el Cortafuegos de Aplicaciones Web + Yara detectó un archivo malicioso, en este caso, se detectó eicar.
Message: Access denied with code 403 (phase 2). File "/temporal/20220812-184146-YvbXKilOKdNkDfySME10ywAAAAA-file-Wx1hQA" rejected by
the approver script "/YaraRules/YaraScripts/modsec_yara.py": 0 SUSPECTED [YaraSignature: eicar]
[file "/etc/apache2/sites-enabled/test.conf"] [line "56"] [id "500002"]
[msg "Suspected File Upload:eicar.com.txt -> /temporal/20220812-184146-YvbXKilOKdNkDfySME10ywAAAAA-file-Wx1hQA - URI: /upload.php"]
$ sudo service apache2 stop
$ sudo service apache2 start
$ cd /var/log
$ sudo tail -f apache2/test_access.log apache2/test_audit.log apache2/test_error.log
⚠️ Ten cuidado con tu prueba. Las siguientes demos fueron probadas en máquinas virtuales aisladas. ⚠️
Se sube un archivo malicioso, y las reglas de ModSecurity más Yara deniegan la subida del archivo al backend si el archivo coincide con al menos una regla YARA. (Ejemplo de Malware: https://secure.eicar.org/eicar.com.txt) NO EJECUTES EL ARCHIVO.
Para esta demo, deshabilitamos la regla 933110 - PHP Inject Attack para validar las reglas YARA.
Se sube un archivo malicioso, y las reglas de ModSecurity más Yara deniegan la subida del archivo al backend si el archivo coincide con al menos una regla YARA. (Ejemplo de WebShell PHP: https://github.com/drag0s/php-webshell) NO EJECUTES EL ARCHIVO.
Se sube un archivo malicioso, y las reglas de ModSecurity más Yara deniegan la subida del archivo al backend si el archivo coincide con al menos una regla YARA. (Ejemplo de Malware Bazaar (RecordBreaker): https://bazaar.abuse.ch/sample/94ffc1624939c5eaa4ed32d19f82c369333b45afbbd9d053fa82fe8f05d91ac2/) NO EJECUTES EL ARCHIVO.
En caso de que quieras descargar más reglas yara, puedes ver los siguientes repositorios:
Alex Hernandez aka (@_alt3kx_)
Jesus Huerta aka @mindhack03d
Israel Zeron Medina aka @spk085