momenbasel/malware-check

GitHub: momenbasel/malware-check

一个基于 Python 与 Docker 沙箱的静态与动态恶意代码分析工具,用于自动化检测恶意代码、可疑二进制与隐私违规。

Stars: 9 | Forks: 2

malware-check

安装 - 用法 - 动态分析 - YARA 规则 - CI/CD

PyPI Python License CI

用于检测恶意代码、可疑二进制文件和隐私违规的静态和动态分析工具。分析源代码、编译可执行文件(.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检测, 隐私违规, 静态分析, 静态分析工具