marcocesarato/PHP-Antimalware-Scanner

GitHub: marcocesarato/PHP-Antimalware-Scanner

一款免费的 PHP 恶意代码扫描器,通过特征匹配和代码分析帮助开发者检测并清理项目中的恶意软件。

Stars: 776 | Forks: 120

![Version](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b166a54ff0a45fed706102d3298eeb00c5ac6bda35865ac331a9bf73f907bc64.png)

PHP Antimalware Scanner

![Version](https://img.shields.io/badge/version-0.15.1-brightgreen?style=for-the-badge) ![Requirements](https://img.shields.io/badge/php-%3E%3D%207.4-4F5D95?style=for-the-badge) ![Code Style](https://img.shields.io/badge/code%20style-PSR-blue?style=for-the-badge) ![License](https://img.shields.io/github/license/marcocesarato/PHP-Antimalware-Scanner?style=for-the-badge) [![GitHub](https://img.shields.io/badge/GitHub-Repo-6f42c1?style=for-the-badge)](https://github.com/marcocesarato/PHP-Antimalware-Scanner) ## 描述 PHP Antimalware Scanner 是一个免费的工具,用于扫描 PHP 文件并分析你的项目,以查找其中包含的任何恶意代码。 它提供了一个交互式的文本终端控制台界面,用于扫描文件或给定目录中的所有文件(文件路径也可以使用 `--filter-paths` 或 `--ignore-paths` 进行管理),并找出似乎包含恶意代码的 PHP 代码文件。当检测到疑似恶意软件时,系统会询问要采取什么操作(例如添加到白名单、删除文件、尝试清理受感染代码等)。 该软件包还可以在报告模式下(`--report|-r`)扫描 PHP 文件,因此无需交互也不会向终端控制台输出任何内容。在这种情况下,结果将以 HTML(默认)或文本格式(`--report-format `)存储在报告文件中。 通过合理的配置组合,此扫描器不仅可以在你自己的 PHP 项目上运行,还支持在许多其他平台上运行(例如,使用 `--lite|-l` 标志有助于减少误报)。 :warning: *请记住,对于因此类操作而导致的任何计算机系统损坏或数据丢失,你将自行承担全部责任。在运行扫描器之前,你有责任对数据进行充分的保护和备份。* ## :blue_book: 环境要求 - php 7.4+(推荐 PHP 8.x) - php-xml - php-zip - php-mbstring - php-json - php-common - php-curl - php-gd ## :book: 安装 ### 发布版本 你可以通过以下任一方法从 GitHub 下载或直接从控制台安装扫描器。 #### 下载 前往 GitHub 页面点击 Releases 选项卡,或者直接下载原始文件: [![下载](https://img.shields.io/badge/Download-Latest%20Build-important?style=for-the-badge)](https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner) #### 控制台 1. 在控制台中运行此命令(扫描器将被下载到你当前的目录): `wget https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner` 2. 运行扫描器: `php scanner ./dir-to-scan -l ...` 3. *(可选)* 安装为 bin 命令(Unix Bash) 运行以下命令: wget https://raw.githubusercontent.com/marcocesarato/PHP-Antimalware-Scanner/master/dist/scanner -O /usr/bin/awscan.phar && \ printf '#!/bin/bash\nphp /usr/bin/awscan.phar $@' > /usr/bin/awscan && \ chmod u+x,g+x /usr/bin/awscan.phar && \ chmod u+x,g+x /usr/bin/awscan && \ export PATH=$PATH":/usr/bin" 现在你只需使用以下命令即可运行扫描器:`awscan ./dir-to-scan -l...` ### Composer 该软件包可在 [Packagist](https://packagist.org/packages/marcocesarato/amwscan) 上获取。 ##### 全局安装(推荐) 要进行系统级安装,请使用: ``` composer global require marcocesarato/amwscan ``` 安装完成后,使用以下命令运行扫描器: ``` php $(composer global config home)/vendor/marcocesarato/amwscan/src/index.php [options] ``` 或者创建一个别名以便更方便地使用: ``` alias amwscan='php $(composer global config home)/vendor/marcocesarato/amwscan/src/index.php' ``` 然后你可以运行:`amwscan [options]` ##### 项目级安装 要在特定项目中进行安装: ``` composer require marcocesarato/amwscan ``` 安装完成后,使用以下命令运行扫描器: ``` php vendor/marcocesarato/amwscan/src/index.php [options] ``` ### 源码 ##### 下载 点击 GitHub 页面上的“Clone or download”或从以下地址下载: [![下载](https://img.shields.io/badge/Download-Source-important?style=for-the-badge)](https://codeload.github.com/marcocesarato/PHP-Antimalware-Scanner/zip/master) ##### Git 1. 安装 git 2. 在你的终端中复制并运行以下命令和链接: `git clone https://github.com/marcocesarato/PHP-Antimalware-Scanner` 3. 切换到新的 `~/PHP-Antimalware-Scanner` 目录: `cd ~/PHP-Antimalware-Scanner/` 4. 为确保你的 master 分支保持最新,请使用 pull 命令: `git pull https://github.com/marcocesarato/PHP-Antimalware-Scanner` 5. 尽情使用吧 ## :whale: Docker 1. 下载源码 2. 构建命令 `docker build --tag amwscan-docker .` 3. 运行命令 `docker run -it --rm amwscan-docker bash` ## :test_tube: 测试 本项目包含一套全面的测试套件,涵盖单元测试和集成测试。 ### 运行测试 ``` # 运行所有测试 composer test # 仅运行单元测试 composer test:unit # 仅运行集成测试 composer test:integration # 生成覆盖率报告 composer test:coverage ``` ### 编写测试 测试分为以下几类: - **Unit Tests** (`tests/Unit/`) - 针对单个类的快速、隔离测试 - **Integration Tests** (`tests/Integration/`) - 包含各种配置的 CLI 执行测试 - **Test Fixtures** (`tests/Fixtures/`) - 用于测试的示例文件(干净文件、恶意软件、混淆代码) 有关编写和调试测试的详细信息,请参阅 [TESTING.md](TESTING.md)。 ### 持续集成 测试会在 Pull Request 和 push 时自动运行,涵盖多个 PHP 版本(7.4、8.0、8.1、8.2、8.3)。 ## :mag_right: 扫描模式 你首先需要决定的是扫描强度,你需要对扫描进行校准,使其在扫描过程中尽可能减少误报,同时不遗漏真正的恶意软件。 为此,你可以选择查杀级别。 扫描器提供了几种预定义模式: | 模式 | 别名 | 🚀 | 描述 | | --------------------------- | ----- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | None *(默认)* | | 🔴 | 搜索所有的函数、exploit 和恶意软件特征,没有任何限制 | | Only exploits | `-e` | 🟠 | 仅搜索 exploit 定义
使用标志:`--only-exploits` | | Lite mode | `-l` | 🟡 | 搜索带有某些限制的 exploit 和恶意软件特征 *(在 WordPress 和其他平台上可能会检测到较少的误报)*
使用标志:`--lite` | | Only functions | `-f`| 🟡 | 仅搜索函数 *(对于某些混淆代码,函数可能无法被检测到)*
使用标志:`--only-functions` | | Only signatures | `-s` | 🟢 | 仅搜索恶意软件特征 *(对于 WordPress 和其他平台来说,这可能是一个减少误报的较好解决方案)*
使用标志:`--only-signatures` | ## :computer: 用法 ### 命令行 ``` php amwscan ./mywebsite/http/ -l -s --only-exploits php amwscan -s --max-filesize="5MB" php amwscan -s -logs="/user/marco/scanner.log" php amwscan --lite --only-exploits php amwscan --exploits="double_var2" --functions="eval, str_replace" php amwscan --ignore-paths="/my/path/*.log,/my/path/*/cache/*" ``` #### 无法运行? 如果上述命令不起作用,你可以通过手动执行用于恶意软件扫描的脚本来运行: `php dist/scanner ` 要查看所有选项,请查阅[文档](https://marcocesarato.github.io/PHP-Antimalware-Scanner/options) ### 建议 如果你正在对 WordPress 项目或其他热门平台运行扫描器,请使用 `--only-signatures` 或 `--lite` 标志,以获得误报较少的检查结果,但这可能会遗漏一些危险的 exploit,比如 `nano`。 ### 编程方式调用 在编程方式下,静默模式和自动跳过将自动启用。 ``` use AMWScan\Scanner; $app = new Scanner(); $report = $app->setPathScan("my/path/to/scan") ->enableBackups() ->setPathBackups("/my/path/backups") ->enableLiteMode() ->setAutoClean() ->run(); ``` ##### Report 对象 ``` object(stdClass) (7) { ["scanned"] => int(0) ["detected"] => int(0) ["removed"] => array(0) {} ["ignored"] => array(0) {} ["edited"] => array(0) {} ["quarantine"] => array(0) {} ["whitelist"] => array(0) {} } ``` ## :art: 截图 ### 报告 ![Screen Report](https://static.pigsec.cn/wp-content/uploads/repos/cas/79/795e6e0e2c1de0e6b8a5f383709a427e4eeefd82e6da7ff71875825f52ba1bc7.png) ### 交互式 CLI ![Screen Full](https://static.pigsec.cn/wp-content/uploads/repos/cas/2e/2efd66eae92ed53e40c6b214853fa4b1ed50983c7150e39415851f7ae692ce88.png)
标签:DNS 反向解析, ffuf, OpenVAS, PHP, URL收集, Webshell检测, 恶意软件扫描, 请求拦截