
Améliorez votre détection de malwares avec WAF + YARA (WAFARAY)
En substance, l'idée principale était d'utiliser WAF + YARA (YARA de droite à gauche = ARAY) pour détecter les fichiers malveillants au niveau du WAF avant que le WAF ne puisse les transmettre au backend, par exemple les fichiers téléchargés via des fonctions web voir : https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
Lorsqu'une page web permet de télécharger des fichiers, la plupart des WAF n'inspectent pas les fichiers avant de les envoyer au backend. Implémenter WAF + YARA pourrait fournir une détection de malwares avant que le WAF ne transmette les fichiers au backend.
Oui, une solution consiste à utiliser ModSecurity + ClamAV, la plupart des pages appellent ClamAV en tant que processus et non en tant que démon, dans ce cas, analyser un fichier peut prendre plus de 50 secondes par fichier. Voir cette ressource : https://kifarunix.com/intercept-malicious-file-upload-with-modsecurity-and-clamav/
:-( Quelques indices ici Black Hat Asia 2019 veuillez continuer à lire et voir ci-dessous notre déploiement LAB rapide.
Fondamentalement, c'est un déploiement rapide (1) avec des règles YARA pré-compilées et prêtes à l'emploi via ModSecurity (WAF) en utilisant une règle personnalisée ; (2) cette règle personnalisée effectuera une inspection et une détection des fichiers qui pourraient contenir du code malveillant, (3) généralement les fonctions web (téléchargement de fichiers) si le fichier est suspect, elles le rejetteront en recevant un code 403 Interdit par ModSecurity.
✔️ Le YaraCompile.py compile toutes les règles yara. (Code Python3)
✔️ Le test.conf est un hôte virtuel qui contient les règles de mod security. (Code ModSecurity)
✔️ Les règles ModSecurity appellent le modsec_yara.py afin d'inspecter le fichier qui tente d'être téléchargé. (Code Python3)
✔️ Yara retourne deux options 1 (200 OK) ou 0 (403 Interdit)
/YaraRules/Compiled/YaraRules/rules/YaraRules/YaraScripts/etc/apache2/sites-enabled/temporal Blueteamers : Application des règles, meilleure alerte, détection de malwares sur les fichiers téléchargés via des fonctions web.Redteamers/pentesters : Portée GreyBox, téléchargement et contournement avec un fichier malveillant, application des règles.Security Officers : Maintien des alertes, chasse aux menaces.SOC : Meilleure surveillance des fichiers malveillants.CERT : Analyse des malwares, détermination des nouveaux IOC.La preuve de concept est basée sur un système d'exploitation Debian 11.3.0 (stable) x64, OWASP CRC v3.3.2 et Yara 4.0.5. Vous trouverez le script d'installation automatique ici wafaray_install.sh et un guide d'installation manuelle optionnel ici : manual_instructions.txt. De plus, une page PHP a été créée comme "mock" pour observer l'interaction et la détection de fichiers malveillants à l'aide de WAF + YARA.
✔️ Étape 1 : Téléchargez Debian 11.3.0 : https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso
✔️ Étape 2 : Déployez en utilisant VMware ou VirtualBox
✔️ Étape 3 : Une fois installé, veuillez suivre les instructions ci-dessous :
alex@waf-labs:~$ su root
root@waf-labs:/home/alex#
# Remember to change YOUR_USER by your username (e.g 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
# Test your LAB environment
alex@waf-labs:~$ firefox localhost:8080/upload.php
Une fois les règles Yara téléchargées et compilées.
C'est similaire au déploiement de ModSecurity, vous devez personnaliser le type de règle que vous souhaitez appliquer. Le journal suivant est un exemple de détection d'un fichier malveillant par le pare-feu applicatif web + Yara, dans ce cas, eicar a été détecté.
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
⚠️ Soyez prudent lors de vos tests. Les démonstrations suivantes ont été testées sur des machines virtuelles isolées. ⚠️
Un fichier malveillant est téléchargé, et les règles ModSecurity ainsi que Yara refusent le téléchargement du fichier vers le backend si le fichier correspondait à au moins une règle Yara. (Exemple de malware : https://secure.eicar.org/eicar.com.txt) N'EXÉCUTEZ PAS LE FICHIER.
Pour cette démonstration, nous désactivons la règle 933110 - PHP Inject Attack pour valider les règles Yara. Un fichier malveillant est téléchargé, et les règles ModSecurity ainsi que Yara refusent le téléchargement du fichier vers le backend si le fichier correspond à au moins une règle Yara. (Exemple de WebShell PHP : https://github.com/drag0s/php-webshell) N'EXÉCUTEZ PAS LE FICHIER.
Un fichier malveillant est téléchargé, et les règles ModSecurity ainsi que Yara refusent le téléchargement du fichier vers le backend si le fichier correspond à au moins une règle Yara. (Exemple de Malware Bazaar (RecordBreaker) : https://bazaar.abuse.ch/sample/94ffc1624939c5eaa4ed32d19f82c369333b45afbbd9d053fa82fe8f05d91ac2/) N'EXÉCUTEZ PAS LE FICHIER.
Si vous souhaitez télécharger plus de règles yara, vous pouvez consulter les dépôts suivants :
Alex Hernandez alias (@_alt3kx_)
Jesus Huerta alias @mindhack03d
Israel Zeron Medina alias @spk085