_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
PHP-malware-finder 尽最大努力检测混淆/狡猾的代码以及使用恶意软件/webshell 中经常使用的 PHP 函数的文件。
还检测到以下编码器/混淆器/webshell 列表:
当然,绕过 PMF 是微不足道的,但它的目标是抓住小孩子和白痴,而不是有大脑的人。如果您报告了针对 PMF 的愚蠢定制绕过,您可能属于一个(或两个)类别,并且应该重新阅读之前的声明。
检测是通过爬行文件系统并根据一组 YARA 规则测试文件来执行的。是的,就是这么简单!
PMF 没有使用基于哈希的方法,而是尽可能多地尝试使用语义模式来检测诸如“ $_GET
变量被解码两次、解压缩,然后传递给某些危险函数(如system
)”之类的情况。
git clone https://github.com/jvoisin/php-malware-finder.git
cd php-malware-finder && make
或者用go install github.com/jvoisin/php-malware-finder
替换最后 2 个步骤,这将直接在${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 许可证获得许可的。
补丁、白名单或样本当然是非常受欢迎的。