From:https://github.com/jvoisin/php-malware-finder
PHP 恶意软件查找器
_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___ Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
Detect potentially malicious PHP files.
它检测到什么?
PHP-malware-finder 尽最大努力检测混淆/狡猾的代码以及使用恶意软件/webshell 中经常使用的 PHP 函数的文件。
还检测到以下编码器/混淆器/Webshell 列表:
- 矮脚鸡
- 最佳 PHP 混淆器
- 羧胺
- 密码设计
- Cyklodev
- Joes Web 工具混淆器
- P.A.S.(P.A.S.)
- PHP 嘉米
- Php 混淆器编码
- 旋转 OBF
- 韦夫利3
- 原子
- 眼镜蛇混淆器
- 纳米
- 诺瓦热
- php 编码
- 腾克
- 网络恶意软件收集
- webtoolsvn
- 海妖-ng
当然,绕过 PMF 是微不足道的,但它的目标是抓住孩子和白痴,而不是大脑正常的人。如果您报告了 PMF 的愚蠢定制旁路,您可能属于一个(或两个)类别,并且应该重新阅读之前的声明。
它是如何工作的?
检测是通过抓取文件系统并针对 设置 YARA 规则。是的,就这么简单!
PMF 没有使用基于哈希的方法 ,而是尽可能多地使用语义模式来检测诸如“$_GET 变量被解码两次、解压缩,然后传递给某些危险的函数(如系统 )”之类的内容。
安装
从源头
- 安装 Go >= 1.17(使用包管理器,或手动 )
- 安装 libyara >= 4.2(从源代码)
- 下载 php-malware-finder:
git clone https://github.com/jvoisin/php-malware-finder.git - 构建 php-malware-finder:
cd php-malware-finder &; make
或者将最后 2 个步骤替换为 go install github.com/jvoisin/php-malware-finder ,这将直接编译并安装 PMF 到你的 ${GOROOT}/bin 文件夹中。
如何使用它?
$ ./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 测试来运行综合测试套件。
码头工人
如果您想避免安装 Go 和 libyara,您也可以使用我们的 docker 映像,只需将要扫描的文件夹挂载到容器的 /data 目录:
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
白名单
检查 whitelist.yar 文件。 如果你懒惰,你可以使用 generate_whitelist.py 脚本。
为什么我应该使用它而不是其他东西?
因为:
- 它不会为每个样本使用单个规则 ,因为它只关心查找恶意模式,而不关心特定的 webshell
- 它有一个完整的测试套件 ,以避免回归
- 它的白名单系统不依赖于文件名
- 它不依赖于(缓慢的) 熵计算
- 它使用贫民窟式的静态分析,而不是依赖于文件哈希
- 由于前面提到的伪静态分析,它(尤其是)在混淆文件上运行良好
发 牌
PHP-malware-finder 是 许可 根据 GNU Lesser General Public License v3。
令人惊叹的 YARA 项目在 Apache v2.0 许可下获得许可。
补丁、白名单或示例当然非常受欢迎。
我本地安装及使用方法:/security/php-malware-finder-usage/