momenbasel/malware-check
GitHub: momenbasel/malware-check
一个基于 Python 与 Docker 沙箱的静态与动态恶意代码分析工具,用于自动化检测恶意代码、可疑二进制与隐私违规。
Stars: 9 | Forks: 2
安装 -
用法 -
动态分析 -
YARA 规则 -
CI/CD
用于检测恶意代码、可疑二进制文件和隐私违规的静态和动态分析工具。分析源代码、编译可执行文件(.exe、.dll、.elf)、macOS 捆绑包(.app、.dmg、.pkg)、移动应用(.apk、.ipa)以及使用 YARA 规则、Docker 行为沙箱、MobSF 移动分析、有效负载去混淆和多格式报告(JSON、HTML、SARIF)的应用程序包。
## 功能
### 静态分析
- **源代码扫描器** - 检测反向 Shell、后门、Web Shell、混淆有效负载、加密货币矿工、勒索软件模式、键盘记录器、凭证窃取、供应链攻击和持久化机制,覆盖 15 种以上语言
- **二进制分析器** - 对 PE(Windows)、Mach-O(macOS)和 ELF(Linux)进行分析,包含熵检测、导入表检查、字符串提取、代码签名验证和 RWX 段检测
- **YARA 引擎** - 基于签名的扫描,包含恶意软件家族、打包器和可疑模式的捆绑规则。支持自定义规则目录
- **隐私分析器** - 检测跟踪 SDK、PII 字段处理、侵入性权限(Android/iOS 清单)、设备指纹、剪贴板监控和未经授权的数据传输
### 动态分析(Docker 沙箱)
- 在隔离的 Docker 容器中运行可疑二进制文件,包括:
- **系统调用跟踪** 通过 strace(网络、文件、进程调用)
- **网络监控** 通过 tcpdump(DNS 查询、HTTP 请求、C2 连接)
- **文件系统监控**(文件创建、修改、删除)
- **进程监控**(子进程生成、注入尝试)
- 完全隔离:默认无网络、内存限制、丢弃权限、只读根文件系统
- 行为发现:C2 端口检测、大量文件修改(勒索软件)、敏感文件访问、反调试
### 报告
- **控制台** - 带有严重性颜色标记的表格和详细发现的丰富终端输出
- **JSON** - 可用于自动化流水线的机器可读发现
- **HTML** - 带有严重性条、发现详情和证据的专业深色主题仪表板
- **SARIF 2.1.0** - 直接集成到 GitHub Code Scanning、Azure DevOps 和 GitLab SAST
### 覆盖范围
| 类别 | 检测示例 |
|---|---|
| 反向 Shell | Python socket+subprocess、bash /dev/tcp、netcat、PowerShell TCPClient、socat |
| 后门 | Web Shell(PHP/JSP/ASP.NET)、命令注入(Python/JS/Java/Ruby/Go/C)、绑定 Shell、隐藏路由、远程代码加载、用户创建、SSTI、不安全的反序列化 |
| 混淆 | Base64+eval 链、字符代码构造、十六进制有效负载、动态导入 |
| 加密货币矿工 | Stratum 池连接、挖矿 API、钱包地址(BTC/ETH/XMR) |
| 勒索软件 | 文件加密遍历、勒索信息、加密+重命名模式 |
| 凭证窃取 | 硬编码密钥、剪贴板窃取、环境收集、浏览器凭证文件 |
| 供应链 | 可疑的 npm/pip 安装钩子、依赖混淆、自定义注册表 |
| 持久化 | Cron/schtasks 创建、注册表 Run 键、LaunchAgent/Daemon、SUID 操纵 |
| 权限提升 | SUID 位操纵、setuid(0)、chown root |
| 反分析 | 调试器检测、虚拟机检测、TLS 回调、ptrace 使用 |
| 键盘记录器 | GetAsyncKeyState、SetWindowsHookEx、pynput、CGEventTapCreate |
| 隐私 | 跟踪 SDK(40+)、PII 字段(SSN、信用卡、生物识别、健康信息)、侵入性权限、设备指纹识别 |
| 二进制指标 | 打包二进制文件(UPX、高熵)、RWX 段、可疑导入、 unsigned/tampered 代码 |
## 安装
### 先决条件
- Python 3.10+
- pip 或 pipx
### 快速安装(pip)
```
pip install malware-check
```
### 快速安装(pipx) - 推荐用于 CLI 使用
```
pipx install malware-check
```
### 从源码安装
```
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
```
### 完整安装(所有分析器)
```
# 核心 + 二进制分析 + YARA
pip install malware-check[full]
# 或手动安装额外组件
pip install pefile lief yara-python
```
### 动态分析(Docker 沙箱)
```
# 需要 Docker - https://docs.docker.com/get-docker/
# 构建沙箱镜像(一次性设置)
malware-check build-sandbox
```
### 验证安装
```
malware-check info
```
### Claude Code(技能)
作为 Claude Code 技能安装,以便 Claude 可以为您分析文件:
```
# 从 GitHub 安装技能
npx skills install momenbasel/malware-check --skill malware-check
# 或手动操作:将 skill/SKILL.md 复制到技能目录
cp -r skill/ ~/.claude/skills/malware-check/
```
然后在 Claude Code 中说:“扫描此文件中的恶意软件”或“这个二进制文件安全吗?”,Claude 将自动使用 malware-check。
您还需要安装 CLI 工具:
```
pip install malware-check pefile lief yara-python
```
### Codex CLI
安装工具并将其添加到您的 Codex 代理说明中:
```
# 1. 安装 CLI
pip install malware-check pefile lief yara-python
# 2. 添加到 Codex 指令(codex.md 或系统提示词)
echo 'Use `malware-check scan
--verbose` to analyze files for malware.' >> AGENTS.md
# 3. 或作为 Codex 技能安装
cp -r skill/ .codex/skills/malware-check/
```
### OpenAI Codex / 其他 AI 代理
对于任何支持工具使用或自定义指令的 AI 编码代理:
```
# 1. 安装
pip install malware-check
# 2. 添加到代理指令:
# "当被要求检查代码/二进制文件是否存在恶意软件时,使用:malware-check scan --verbose"
# "生成报告:malware-check scan --format html -o report.html"
# "用于 CI/CD:malware-check scan --format sarif -o report.sarif --exit-code"
```
## 用法
### 扫描文件
```
malware-check scan suspicious_file.py
```
### 扫描目录
```
malware-check scan /path/to/project --verbose
```
### 扫描二进制文件并使用动态分析
```
# 首先构建沙箱(一次性操作)
malware-check build-sandbox
# 使用行为分析进行扫描
malware-check scan malware.exe --dynamic
```
### 扫描 macOS .app 捆绑包
```
malware-check scan /Applications/SuspiciousApp.app --dynamic --verbose
```
### 生成报告
```
# JSON 报告
malware-check scan target/ --format json -o report.json
# HTML 仪表板
malware-check scan target/ --format html -o report.html
# 用于 CI/CD 的 SARIF
malware-check scan target/ --format sarif -o results.sarif
```
### CI/CD 集成
```
# 发现威胁时以非零代码退出(用于 CI 门控)
malware-check scan . --format sarif -o results.sarif --exit-code
```
### 检查功能
```
malware-check info
```
## GitHub Actions 集成
```
name: Security Scan
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install malware-check
run: pip install malware-check
- name: Run scan
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
```
## 架构
```
malware-check/
├── src/malware_check/
│ ├── cli.py # Click CLI entry point
│ ├── scanner.py # Orchestrator - coordinates all analyzers
│ ├── models.py # Finding, FileAnalysis, ScanResult data models
│ ├── analyzers/
│ │ ├── code.py # Source code pattern matching (40+ rules)
│ │ ├── binary.py # PE/Mach-O/ELF analysis
│ │ ├── privacy.py # PII, tracking, permissions
│ │ ├── yara_engine.py # YARA rule compilation and scanning
│ │ └── dynamic.py # Docker sandbox behavioral analysis
│ └── reporters/
│ ├── console_reporter.py # Rich terminal output
│ ├── json_reporter.py # JSON export
│ ├── html_reporter.py # HTML dashboard (Jinja2)
│ └── sarif_reporter.py # SARIF 2.1.0 for CI/CD
├── rules/yara/ # Bundled YARA rules
├── tests/ # pytest test suite
└── pyproject.toml # Project metadata
```
### 自定义 YARA 规则
将自定义规则添加到任意目录并通过 `--yara-rules` 传递:
```
malware-check scan target/ --yara-rules /path/to/my/rules/
```
规则支持元数据字段,包括严重性、类别、置信度、CWE 和 MITRE ATT&CK 映射:
```
rule My_Custom_Rule {
meta:
description = "Detect custom malware pattern"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "Remove malicious code"
strings:
$pattern = "suspicious_string"
condition:
$pattern
}
```
## 动态分析详情
Docker 沙箱提供具有完全隔离的行为分析:
| 保护 | 实现方式 |
|---|---|
| 网络隔离 | `--network none`(默认) |
| 内存限制 | 512MB |
| CPU 限制 | 1 核 |
| 进程限制 | 100 个 PID |
| 只读文件系统 | `--read-only` 并为 /tmp 和 /evidence 使用 tmpfs |
| 权限 | 全部丢弃(`--cap-drop=ALL`) |
| 权限提升 | 阻止(`--security-opt=no-new-privileges`) |
| 超时 | 可配置(默认 30 秒) |
监控行为:
- 系统调用(strace):网络连接、文件操作、进程创建
- 网络(tcpdump):DNS 查询、TCP 连接、协议分析
- 文件系统:新文件、修改、删除及文件类型检测
- 进程:子进程生成、fork/exec 链
## MITRE ATT&CK 覆盖范围
| 技术 | ID | 检测 |
|---|---|---|
| 命令和脚本解释器 | T1059 | 反向 Shell、eval/exec 模式 |
| 服务器软件组件:Web Shell | T1505.003 | PHP/JSP/ASP Web Shell |
| 文件和信息混淆 | T1027 | Base64、字符代码、十六进制编码 |
| 资源劫持 | T1496 | 加密货币挖矿池和工具 |
| 数据加密以影响 | T1486 | 勒索软件文件加密 |
| 输入捕获:键盘记录 | T1056.00 | 键盘钩子和记录器 |
| 计划任务/作业 | T1053 | Cron、schtasks、LaunchAgent |
| 启动或登录自动运行 | T1547 | 注册表 Run 键 |
| 进程注入 | T1055 | VirtualAllocEx + WriteProcessMemory |
| 从密码存储获取凭证 | T1555 | 浏览器凭证文件访问 |
| 滥用权限提升控制 | T1548 | SUID 位操纵 |
| 调试器逃避 | T1622 | 反调试 API 调用 |
| 供应链妥协 | T1195 | 恶意安装钩子 |
## 贡献
```
# 克隆并安装开发依赖
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# 运行测试
pytest
# 代码检查
ruff check src/ tests/
```
## 许可证
MIT 许可证 - 详见 [许可证](LICENSE)。标签:15种编程语言, AMSI绕过, Android分析, Android清单权限, APK分析, DNS信息、DNS暴力破解, Docker沙箱, ELF分析, GitHub Actions, HTML报告, iOS分析, IPA分析, JSON报告, Mach-O分析, MobSF, PE分析, RWX段检测, SARIF报告, WebShell检测, YARA签名匹配, YARA规则, 个人信息处理, 二进制分析, 云安全监控, 云安全运维, 云计算, 云资产清单, 代码签名验证, 供应链攻击检测, 凭证窃取检测, 动态分析工具, 勒索软件检测, 反向Shell检测, 反混淆, 可疑二进制文件, 合规性检查, 多格式报告, 威胁检测, 字符串提取, 安全测试, 安全规则引擎, 导入表分析, 开源框架, 持久化机制检测, 持续集成, 挖矿程序检测, 攻击性安全, 源码扫描, 熵检测, 移动应用分析, 自动笔记, 行为沙箱, 规则引擎, 设备指纹识别, 请求拦截, 跨语言分析, 软件供应链安全, 载荷去混淆, 远程方法调用, 逆向工具, 逆向工程, 键盘记录器检测, 隐私SDK检测, 隐私违规, 静态分析, 静态分析工具