
Migliora il rilevamento del malware con WAF + YARA (WAFARAY)
In sostanza, l'idea principale è stata quella di utilizzare WAF + YARA (YARA da destra a sinistra = ARAY) per rilevare file dannosi a livello WAF prima che il WAF possa inoltrarli al backend, ad esempio file caricati tramite funzioni web vedere: https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
Quando una pagina web permette il caricamento di file, la maggior parte dei WAF non ispeziona i file prima di inviarli al backend. Implementare WAF + YARA potrebbe fornire il rilevamento di malware prima che il WAF inoltri i file al backend.
Sì, una soluzione è usare ModSecurity + Clamav, la maggior parte delle pagine chiama ClamAV come processo e non come demone, in questo caso analizzare un file potrebbe richiedere più di 50 secondi per file. Vedi questa risorsa: https://kifarunix.com/intercept-malicious-file-upload-with-modsecurity-and-clamav/
:-( Qualche indizio qui Black Hat Asia 2019 per favore continua a leggere e guarda sotto il nostro rapido deployment LAB.
Fondamentalmente, è un deployment rapido (1) con regole YARA precompilate e pronte all'uso tramite ModSecurity (WAF) usando una regola personalizzata; (2) questa regola personalizzata eseguirà un'ispezione e rilevamento dei file che potrebbero contenere codice dannoso, (3) tipicamente funzioni web (upload di file) se il file è sospetto verranno rifiutati ricevendo un codice 403 Forbidden da ModSecurity.
✔️ YaraCompile.py compila tutte le regole yara. (Codice Python3)
✔️ test.conf è un virtual host che contiene le regole mod security. (Codice ModSecurity)
✔️ Le regole ModSecurity chiamano modsec_yara.py per ispezionare il file che si sta cercando di caricare. (Codice Python3)
✔️ Yara restituisce due opzioni 1 (200 OK) o 0 (403 Forbidden)
/YaraRules/Compiled/YaraRules/rules/YaraRules/YaraScripts/etc/apache2/sites-enabled/temporal Blueteamers: Applicazione delle regole, migliori alert, rilevamento malware sui file caricati tramite funzioni web.Redteamers/pentesters: Ambito GreyBox, upload e bypass con un file dannoso, applicazione delle regole.Security Officers: Mantenere gli alert, threat hunting.SOC: Miglior monitoraggio dei file dannosi.CERT: Analisi malware, determinazione di nuovi IOC.La Proof of Concept è basata su sistema operativo Debian 11.3.0 (stable) x64, OWASP CRC v3.3.2 e Yara 4.0.5. Troverai lo script di installazione automatica qui wafaray_install.sh e una guida opzionale per l'installazione manuale qui: manual_instructions.txt. È stata creata anche una pagina PHP come "mock" per osservare l'interazione e il rilevamento di file dannosi usando WAF + YARA.
✔️ Passo 1: Scarica Debian 11.3.0: https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso
✔️ Passo 2: Deploy usando VMware o VirtualBox
✔️ Passo 3: Una volta installato, segui le istruzioni qui sotto:
alex@waf-labs:~$ su root
root@waf-labs:/home/alex#
# Ricordati di cambiare YOUR_USER con il tuo nome utente (es. 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
# Testa il tuo ambiente LAB
alex@waf-labs:~$ firefox localhost:8080/upload.php
Una volta scaricate e compilate le regole Yara.
È simile a quando deployi ModSecurity: devi personalizzare che tipo di regola applicare. Il seguente log è un esempio di quando il Web Application Firewall + Yara ha rilevato un file dannoso, in questo caso è stato rilevato 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
⚠️ Fai attenzione ai tuoi test. Le seguenti demo sono state testate su macchine virtuali isolate. ⚠️
Viene caricato un file dannoso e le regole ModSecurity più Yara negano il caricamento del file al backend se il file corrisponde ad almeno una regola Yara. (Esempio di Malware: https://secure.eicar.org/eicar.com.txt) NON ESECUIRE IL FILE.
Per questa demo, disabilitiamo la regola 933110 - PHP Inject Attack per convalidare le regole Yara.
Viene caricato un file dannoso e le regole ModSecurity più Yara negano il caricamento del file al backend se il file corrisponde ad almeno una regola Yara. (Esempio di WebShell PHP: https://github.com/drag0s/php-webshell) NON ESECUIRE IL FILE.
Viene caricato un file dannoso e le regole ModSecurity più Yara negano il caricamento del file al backend se il file corrisponde ad almeno una regola Yara. (Esempio di Malware Bazaar (RecordBreaker): https://bazaar.abuse.ch/sample/94ffc1624939c5eaa4ed32d19f82c369333b45afbbd9d053fa82fe8f05d91ac2/) NON ESECUIRE IL FILE.
Nel caso tu voglia scaricare più regole yara, puoi vedere i seguenti repository:
Alex Hernandez aka (@_alt3kx_)
Jesus Huerta aka @mindhack03d
Israel Zeron Medina aka @spk085