marcocesarato/PHP-Antimalware-Scanner
GitHub: marcocesarato/PHP-Antimalware-Scanner
一款免费的 PHP 恶意代码扫描器,通过特征匹配和代码分析帮助开发者检测并清理项目中的恶意软件。
Stars: 776 | Forks: 120

`)存储在报告文件中。
通过合理的配置组合,此扫描器不仅可以在你自己的 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://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://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: 截图
### 报告

### 交互式 CLI

PHP Antimalware Scanner
    [](https://github.com/marcocesarato/PHP-Antimalware-Scanner) ## 描述 PHP Antimalware Scanner 是一个免费的工具,用于扫描 PHP 文件并分析你的项目,以查找其中包含的任何恶意代码。 它提供了一个交互式的文本终端控制台界面,用于扫描文件或给定目录中的所有文件(文件路径也可以使用 `--filter-paths` 或 `--ignore-paths` 进行管理),并找出似乎包含恶意代码的 PHP 代码文件。当检测到疑似恶意软件时,系统会询问要采取什么操作(例如添加到白名单、删除文件、尝试清理受感染代码等)。 该软件包还可以在报告模式下(`--report|-r`)扫描 PHP 文件,因此无需交互也不会向终端控制台输出任何内容。在这种情况下,结果将以 HTML(默认)或文本格式(`--report-format使用标志:`--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
标签:DNS 反向解析, ffuf, OpenVAS, PHP, URL收集, Webshell检测, 恶意软件扫描, 请求拦截