
WAF + YARA (WAFARAY)로 악성코드 탐지를 강화하세요
기본적으로 주요 아이디어는 WAF가 파일을 백엔드로 전달하기 전에 WAF + YARA(YARA 오른쪽에서 왼쪽으로 읽으면 ARAY)를 사용하여 WAF 수준에서 악성 파일을 탐지하는 것입니다. 예: 웹 기능을 통해 업로드된 파일 https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload 참조
웹 페이지에서 파일 업로드를 허용할 때, 대부분의 WAF는 파일을 백엔드로 보내기 전에 검사하지 않습니다. WAF + YARA를 구현하면 WAF가 파일을 백엔드로 전달하기 전에 악성코드 탐지를 제공할 수 있습니다.
네, 한 가지 해결책은 ModSecurity + ClamAV를 사용하는 것입니다. 대부분의 페이지에서는 ClamAV를 데몬이 아닌 프로세스로 호출합니다. 이 경우 파일 하나를 분석하는 데 최대 50초 이상이 소요될 수 있습니다. 이 리소스를 참조하십시오: https://kifarunix.com/intercept-malicious-file-upload-with-modsecurity-and-clamav/
:- (약간의 단서가 여기 Black Hat Asia 2019에 있습니다. 계속 읽어보시고 아래의 빠른 LAB 배포를 확인하십시오.
기본적으로 빠른 배포입니다. (1) 사전 컴파일된 YARA 규칙을 ModSecurity(WAF)와 함께 사용자 정의 규칙을 통해 바로 사용할 수 있습니다. (2) 이 사용자 정의 규칙은 악성 코드를 포함할 수 있는 파일을 검사하고 탐지하며, (3) 일반적으로 웹 기능(파일 업로드)에서 의심스러운 파일이 감지되면 ModSecurity에 의해 403 Forbidden 코드로 거부됩니다.
✔️ YaraCompile.py는 모든 YARA 규칙을 컴파일합니다. (Python3 코드)
✔️ test.conf는 ModSecurity 규칙을 포함하는 가상 호스트입니다. (ModSecurity 코드)
✔️ ModSecurity 규칙은 업로드하려는 파일을 검사하기 위해 modsec_yara.py를 호출합니다. (Python3 코드)
✔️ YARA는 두 가지 옵션을 반환합니다: 1 (200 OK) 또는 0 (403 Forbidden)
/YaraRules/Compiled/YaraRules/rules/YaraRules/YaraScripts/etc/apache2/sites-enabled/temporal 블루팀: 규칙 시행, 최적의 알림, 웹 기능을 통해 업로드된 파일의 악성코드 탐지.레드팀/침투 테스터: 그레이박스 범위, 악성 파일 업로드 및 우회, 규칙 시행.보안 책임자: 지속적인 알림, 위협 헌팅.SOC: 악성 파일에 대한 최적의 모니터링.CERT: 악성코드 분석, 새로운 IOC 식별.프루프 오브 컨셉은 Debian 11.3.0 (stable) x64 OS 시스템, OWASP CRC v3.3.2 및 Yara 4.0.5를 기반으로 합니다. 자동 설치 스크립트는 wafaray_install.sh에 있으며, 선택적 수동 설치 가이드는 manual_instructions.txt에서 찾을 수 있습니다. 또한 PHP 페이지가 WAF + YARA를 사용한 악성 파일 상호 작용 및 탐지를 관찰하기 위한 "모의" 페이지로 생성되었습니다.
✔️ 1단계: Debian 11.3.0 다운로드: https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso
✔️ 2단계: VMware 또는 VirtualBox를 사용하여 배포
✔️ 3단계: 설치 후 아래 지침을 따르십시오:
alex@waf-labs:~$ su root
root@waf-labs:/home/alex#
# YOUR_USER를 사용자 이름으로 변경하는 것을 잊지 마십시오 (예: 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
# LAB 환경 테스트
alex@waf-labs:~$ firefox localhost:8080/upload.php
YARA 규칙이 다운로드되고 컴파일된 후입니다.
ModSecurity를 배포할 때와 유사하게 적용하려는 규칙 종류를 사용자 정의해야 합니다. 다음 로그는 웹 애플리케이션 방화벽 + YARA가 악성 파일을 탐지한 예시입니다. 이 경우 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
⚠️ 테스트 시 주의하십시오. 다음 데모는 격리된 가상 머신에서 테스트되었습니다. ⚠️
악성 파일이 업로드되고, 파일이 최소 하나의 YARA 규칙과 일치하면 ModSecurity 규칙과 YARA가 백엔드로의 업로드를 거부합니다. (악성코드 예시: https://secure.eicar.org/eicar.com.txt) 파일을 실행하지 마십시오.
이 데모에서는 YARA 규칙을 검증하기 위해 933110 - PHP Inject Attack 규칙을 비활성화했습니다.
악성 파일이 업로드되고, 파일이 최소 하나의 YARA 규칙과 일치하면 ModSecurity 규칙과 YARA가 백엔드로의 업로드를 거부합니다. (PHP 웹쉘 예시: https://github.com/drag0s/php-webshell) 파일을 실행하지 마십시오.
악성 파일이 업로드되고, 파일이 최소 하나의 YARA 규칙과 일치하면 ModSecurity 규칙과 YARA가 백엔드로의 업로드를 거부합니다. (Malware Bazaar (RecordBreaker) 예시: https://bazaar.abuse.ch/sample/94ffc1624939c5eaa4ed32d19f82c369333b45afbbd9d053fa82fe8f05d91ac2/) 파일을 실행하지 마십시오.
더 많은 YARA 규칙을 다운로드하려면 다음 저장소를 참조하십시오:
Alex Hernandez aka (@_alt3kx_)
Jesus Huerta aka @mindhack03d
Israel Zeron Medina aka @spk085