PHP Malware Finder

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 列表:

当然,绕过 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/

Scroll to Top