
Verbessern Sie Ihre Malware-Erkennung mit WAF + YARA (WAFARAY)
Im Wesentlichen entstand die Hauptidee, WAF + YARA (YARA rückwärts = ARAY) zu verwenden, um bösartige Dateien auf WAF-Ebene zu erkennen, bevor die WAF sie an das Backend weiterleiten kann, z.B. Dateien, die über Webfunktionen hochgeladen werden. Siehe: https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
Wenn eine Webseite das Hochladen von Dateien erlaubt, überprüfen die meisten WAFs die Dateien nicht, bevor sie an das Backend gesendet werden. Die Implementierung von WAF + YARA könnte eine Malware-Erkennung bieten, bevor die WAF die Dateien an das Backend weiterleitet.
Ja, eine Lösung ist die Verwendung von ModSecurity + ClamAV. Die meisten Seiten rufen ClamAV als Prozess und nicht als Daemon auf. In diesem Fall kann die Analyse einer Datei mehr als 50 Sekunden pro Datei dauern. Siehe diese Ressource: https://kifarunix.com/intercept-malicious-file-upload-with-modsecurity-and-clamav/
:-( Ein paar Hinweise hier Black Hat Asia 2019 bitte lesen Sie weiter und sehen Sie unten unsere schnelle LAB-Bereitstellung.
Im Grunde ist es eine schnelle Bereitstellung (1) mit vorkompilierten und einsatzbereiten YARA-Regeln über ModSecurity (WAF) unter Verwendung einer benutzerdefinierten Regel; (2) diese benutzerdefinierte Regel führt eine Inspektion und Erkennung der Dateien durch, die möglicherweise bösartigen Code enthalten; (3) typischerweise lehnen Webfunktionen (Datei-Upload) verdächtige Dateien ab, die einen 403-Code Forbidden von ModSecurity erhalten.
✔️ Der YaraCompile.py kompiliert alle YARA-Regeln. (Python3-Code)
✔️ Die test.conf ist ein virtueller Host, der die ModSecurity-Regeln enthält. (ModSecurity-Code)
✔️ Die ModSecurity-Regeln rufen modsec_yara.py auf, um die Datei zu inspizieren, die hochgeladen werden soll. (Python3-Code)
✔️ YARA gibt zwei Optionen zurück: 1 (200 OK) oder 0 (403 Forbidden)
/YaraRules/Compiled/YaraRules/rules/YaraRules/YaraScripts/etc/apache2/sites-enabled/temporal Blueteamers: Regelumsetzung, bestes Alerting, Malware-Erkennung bei über Webfunktionen hochgeladenen Dateien.Redteamers/Pentester: GreyBox-Bereich, Hochladen und Umgehen mit einer bösartigen Datei, Regelumsetzung.Security Officers: Alerting aufrechterhalten, Bedrohungsjagd.SOC: Bestes Monitoring zu bösartigen Dateien.CERT: Malware-Analyse, neue IOCs bestimmen.Der Proof of Concept basiert auf Debian 11.3.0 (stable) x64, OWASP CRC v3.3.2 und Yara 4.0.5. Sie finden das automatische Installationsskript hier wafaray_install.sh und eine optionale manuelle Installationsanleitung hier: manual_instructions.txt. Außerdem wurde eine PHP-Seite als "Mock" erstellt, um die Interaktion und Erkennung bösartiger Dateien mit WAF + YARA zu beobachten.
✔️ Schritt 1: Laden Sie Debian 11.3.0 herunter: https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso
✔️ Schritt 2: Bereitstellung mit VMware oder VirtualBox
✔️ Schritt 3: Nach der Installation befolgen Sie bitte die folgenden Anweisungen:
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
Sobald die YARA-Regeln heruntergeladen und kompiliert wurden.
Es ist ähnlich wie bei der Bereitstellung von ModSecurity: Sie müssen anpassen, welche Art von Regel Sie anwenden möchten. Das folgende Protokoll ist ein Beispiel dafür, dass die Web Application Firewall + Yara eine bösartige Datei erkannt hat; in diesem Fall wurde EICAR erkannt.
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
⚠️ Seien Sie vorsichtig bei Ihrem Test. Die folgenden Demos wurden auf isolierten virtuellen Maschinen getestet. ⚠️
Eine bösartige Datei wird hochgeladen, und die ModSecurity-Regeln plus Yara verweigern das Hochladen der Datei an das Backend, wenn die Datei mit mindestens einer YARA-Regel übereinstimmt. (Beispiel für Malware: https://secure.eicar.org/eicar.com.txt) FÜHREN SIE DIE DATEI NICHT AUS.
Für diese Demo deaktivieren wir die Regel 933110 - PHP Inject Attack, um die YARA-Regeln zu validieren. Eine bösartige Datei wird hochgeladen, und die ModSecurity-Regeln plus Yara verweigern das Hochladen der Datei an das Backend, wenn die Datei mit mindestens einer YARA-Regel übereinstimmt. (Beispiel für WebShell PHP: https://github.com/drag0s/php-webshell) FÜHREN SIE DIE DATEI NICHT AUS.
Eine bösartige Datei wird hochgeladen, und die ModSecurity-Regeln plus Yara verweigern das Hochladen der Datei an das Backend, wenn die Datei mit mindestens einer YARA-Regel übereinstimmt. (Beispiel für Malware Bazaar (RecordBreaker): https://bazaar.abuse.ch/sample/94ffc1624939c5eaa4ed32d19f82c369333b45afbbd9d053fa82fe8f05d91ac2/) FÜHREN SIE DIE DATEI NICHT AUS.
Falls Sie weitere YARA-Regeln herunterladen möchten, finden Sie hier die folgenden Repositories:
Alex Hernandez aka (@_alt3kx_)
Jesus Huerta aka @mindhack03d
Israel Zeron Medina aka @spk085