baturkacamak/php-malware-audit

GitHub: baturkacamak/php-malware-audit

面向PHP和WordPress生态的静态恶意代码审计工具,通过启发式规则、语义关联分析和可选的YARA/ClamAV引擎,帮助安全人员高效识别插件、主题及存档中的可疑代码模式。

Stars: 0 | Forks: 0

# php-malware-audit `php-malware-audit` 是一款本地静态分析工具,用于审计 PHP 项目、WordPress 插件/主题以及 zip 存档中是否存在常见的恶意软件、Webshell、代码混淆和存在风险的远程加载模式。 它专为满足您所提出的调查需求而设计: - 目录或 zip 输入 - 可执行文件/二进制文件的发现 - 可疑扩展名检测 - 隐藏文件发现 - PHP/JS 混淆启发式检测 - 危险函数使用 - 远程端点和 proxy/script-loading 检测 - 超长编码 payload 检测 - 可选的 YARA 和 ClamAV 执行 - 基于白名单的抑制 - 文本和 JSON 报告 - HTML 报告 - SARIF 报告 - 基于预设的路径排除 - 并行文件扫描 - 哈希比较模式 - 递归嵌套存档扫描 - 简单的终端报告查看器 - WordPress IOC 启发式检测 - 熵和相关性评分 - 语义 PHP 分析 - 沙箱前置条件探测 ## 功能概述 该工具执行启发式检查,例如: - 通过文件头检测真实的二进制签名 - 可疑文件名和可疑扩展名 - 隐藏的点文件 - PHP 执行原语,如 `shell_exec`、`system`、`proc_open` - 混淆链,如 `eval(base64_decode(...))` - 超长的 base64 特征数据块 - 远程请求函数,如 `wp_remote_get`、`curl_exec`、`fsockopen` - 嵌入意外文件类型的 PHP 代码 - vendor CLI 脚本和可执行权限报告 - WordPress 用户/角色/权限更改 - WordPress AJAX、REST、cron 和 option-write 启发式检测 - 相关模式,如远程获取 + 文件写入 这是一个静态审计工具,而不是杀毒引擎。它可以降低不确定性并突出显示需要审查的目标,但不能证明一个软件包是绝对安全的。 ## 安装 ``` python3 -m venv .venv source .venv/bin/activate pip install -e . ``` 或直接运行: ``` PYTHONPATH=src python3 -m php_malware_audit.cli --help ``` 使用 `pipx`: ``` pipx install git+https://github.com/baturkacamak/php-malware-audit.git php-malware-audit --help ``` ## 使用方法 扫描目录: ``` php-malware-audit /path/to/plugin ``` 扫描 zip 存档: ``` php-malware-audit /path/to/plugin.zip ``` 显式扫描子命令: ``` php-malware-audit scan /path/to/plugin --archive-depth 2 ``` 输出 JSON: ``` php-malware-audit /path/to/plugin --json-out report.json ``` 输出 HTML: ``` php-malware-audit /path/to/plugin --html-out report.html ``` 输出 SARIF: ``` php-malware-audit /path/to/plugin --sarif-out report.sarif.json ``` 发现高危问题时中断 CI: ``` php-malware-audit /path/to/plugin --fail-on high ``` 使用白名单: ``` php-malware-audit /path/to/plugin --whitelist examples/whitelist.txt ``` 运行可选的本地引擎: ``` php-malware-audit /path/to/plugin --use-yara --use-clamav ``` 尝试自动安装缺失的引擎并更新 ClamAV DB: ``` php-malware-audit /path/to/plugin \ --use-yara \ --use-clamav \ --auto-install-engines \ --update-clamav-db ``` 使用预设和排除项: ``` php-malware-audit /path/to/plugin \ --preset wordpress \ --preset vendor-heavy \ --exclude 'cache/**' \ --workers 8 ``` 与参考包进行比较: ``` php-malware-audit compare /path/to/plugin.zip /path/to/reference.zip --json-out compare.json ``` 在简单的终端查看器中打开 JSON 报告: ``` php-malware-audit view report.json ``` 探测沙箱前置条件: ``` php-malware-audit sandbox /path/to/plugin ``` ## 严重性模型 - `critical`:极强的恶意软件或 Webshell 指标 - `high`:需要审查的强可疑指标 - `medium`:存在风险或值得注意的行为 - `low`:信息性提示,但值得了解 ## 输出 命令行工具 (CLI) 会输出: - 扫描摘要 - 按严重性等级统计的发现数量 - 包含路径、行号、规则 ID 和摘录的主要发现 - 风险评分 JSON 报告包含所有发现结果以及有关扫描输入的元数据。 HTML 报告是一个可共享的单文件摘要,包含统计数量和发现结果表格。 SARIF 报告可上传至 GitHub code scanning 或其他 SARIF 消费端。 ## 比较模式 `compare` 子命令会为两棵文件树计算 SHA-256 哈希值,并报告: - `added`:存在于目标中,但不存在于参考中 - `removed`:不存在于目标中,但存在于参考中 - `changed`:相对路径相同,但哈希值不同 - `unchanged`:相对路径和哈希值均相同 它支持目录、zip 存档以及 Python 可以提取的 tar/phar 类存档。 ## WordPress IOC 启发式检测 扫描器现在增加了针对 WordPress 的专项检测,包括: - 用户创建 - 角色/权限更改 - AJAX 处理程序注册 - REST 路由注册 - Cron 任务调度 - 选项写入 - 后台菜单操纵 它还会对以下组合进行关联分析: - 远程获取 + 文件系统写入 - 用户/角色更改 + 持久化选项写入 - AJAX 处理程序 + 命令执行 - REST 路由 + 文件写入 - Cron 任务 + 远程获取 ## 语义分析 扫描器现在可为 PHP 文件生成轻量级的语义层: - 函数名 - Hook 注册 - REST 路由 - Cron Hook - Shortcode 注册 - 输入源存在 - 危险 Sink 存在 它还会针对以下情况添加启发式发现: - 缺少可见 nonce/权限检查的薄弱 AJAX 处理程序 - 开放或缺失的 REST `permission_callback` - 动态 include/require 路径 - 源与 Sink 共存 ## 预设 内置预设: - `wordpress`:跳过常见的依赖项和 VCS 文件夹 - `vendor-heavy`:激进地跳过依赖项和 lockfile 内容 - `wpml-like`:跳过 vendor、locale、语言目录、Twig 测试和压缩后的 JS ## 前置字节和多语言文件 (Polyglot) 检测 扫描器现在可以检测 PHP 文件中第一个 `
标签:ClamAV集成, DNS 反向解析, HTML报告生成, IOC启发式, IP 地址批量处理, JSON报告, PHP安全, PHP恶意软件审计, Python安全工具, SARIF报告, SEO安全扫描, Webshell检测, WordPress主题安全, WordPress插件安全检测, YARA规则扫描, 二进制文件发现, 代码安全, 代码混淆检测, 危险函数审计, 压缩包扫描, 基线对比模式, 安全扫描工具, 开源安全工具, 恶意代码查杀, 搜索语句(dork), 文件完整性校验, 文件熵计算, 沙盒先决条件探测, 沙箱检测, 漏洞枚举, 点文件检测, 终端UI, 网络信息收集, 网络安全, 聊天机器人, 远程加载检测, 逆向工具, 逆向工程平台, 递归解压扫描, 错误基检测, 隐私保护, 隐藏文件扫描, 静态代码分析