_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
PHP-malware-finder는 악성 코드/웹쉘에서 자주 사용되는 PHP 기능을 사용하여 난독화/위조 코드와 파일을 탐지하는 데 최선을 다합니다.
다음 인코더/난독 처리기/웹셸 목록도 감지됩니다.
물론 PMF를 우회하는 것은 쉽지 않지만 그 목표는 두뇌가 작동하는 사람이 아닌 꼬마와 바보를 잡는 것입니다. PMF에 대한 어리석은 맞춤형 우회를 보고하는 경우 하나(또는 둘 다) 범주에 속할 가능성이 높으며 이전 설명을 다시 읽어야 합니다.
탐지는 파일 시스템을 크롤링하고 일련의 YARA 규칙에 대해 파일을 테스트하여 수행됩니다. 예, 정말 간단합니다!
해시 기반 접근 방식을 사용하는 대신 PMF는 의미 체계 패턴을 최대한 많이 사용하여 " $_GET
변수가 두 번 디코딩되고 압축이 풀린 다음 system
과 같은 일부 위험한 기능에 전달됩니다"와 같은 항목을 감지하려고 시도합니다.
git clone https://github.com/jvoisin/php-malware-finder.git
cd php-malware-finder && make
또는 마지막 2단계를 go install github.com/jvoisin/php-malware-finder
로 대체하면 ${GOROOT}/bin
폴더에 PMF를 직접 컴파일하고 설치할 수 있습니다.
$ ./php-malware-finder -h
Usage:
php-malware-finder [OPTIONS] [Target]
Application Options:
-r, --rules-dir= Alternative rules location (default: embedded rules)
-a, --show-all Display all matched rules
-f, --fast Enable YARA's fast mode
-R, --rate-limit= Max. filesystem ops per second, 0 for no limit (default: 0)
-v, --verbose Verbose mode
-w, --workers= Number of workers to spawn for scanning (default: 32)
-L, --long-lines Check long lines
-c, --exclude-common Do not scan files with common extensions
-i, --exclude-imgs Do not scan image files
-x, --exclude-ext= Additional file extensions to exclude
-u, --update Update rules
-V, --version Show version number and exit
Help Options:
-h, --help Show this help message
또는 yara
사용하려는 경우:
$ yara -r ./data/php.yar /var/www
우리는 화이트리스트 시스템과 탐욕스러운 정규 표현식에 해시를 사용하고 있으므로 최소한 YARA 3.4를 사용해야 한다는 점을 명심하세요. 소스에서 yara를 빌드하려는 경우 해시를 지원하려면 시스템에 libssl-dev를 설치해야 합니다.
아, 그리고 make tests
사용하여 포괄적인 테스트 모음을 실행할 수 있습니다.
Go 및 libyara를 설치하지 않으려면 docker 이미지를 사용하여 스캔하려는 폴더를 컨테이너의 /data
디렉터리에 마운트하면 됩니다.
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
whitelist.yar 파일을 확인하세요. 게으른 경우 generate_whitelist.py 스크립트를 사용하여 전체 폴더에 대한 화이트리스트를 생성할 수 있습니다.
왜냐하면:
PHP-malware-finder는 GNU Lesser General Public License v3에 따라 라이센스가 부여됩니다.
놀라운 YARA 프로젝트는 Apache v2.0 라이선스에 따라 라이선스가 부여됩니다.
패치, 화이트리스트 또는 샘플은 물론 환영할 만한 것입니다.