gitau26timothy-CUK/Malware-Analyzer

GitHub: gitau26timothy-CUK/Malware-Analyzer

一个轻量级动态恶意软件分析器,结合 C 语言系统调用追踪与 Python 行为分析,生成结构化威胁报告。

Stars: 0 | Forks: 0

# Malware-Analyzer 一个轻量级动态恶意软件分析器 —— 基于 C 实现的 syscall 追踪器,配备 Python 智能层用于行为威胁报告 # 🔬 malsight ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Language](https://img.shields.io/badge/language-C%20%7C%20Python-informational) ![Platform](https://img.shields.io/badge/platform-Linux-lightgrey) ![Status](https://img.shields.io/badge/status-active-brightgreen) ## 概述 `malsight` 是一个开源的动态恶意软件分析工具,结合了 C 语言实现的底层系统自省与 Python 驱动的行为分析引擎。它使用 `ptrace` 追踪可疑二进制文件的系统调用,实时捕获文件、网络与进程活动,并生成结构化的威胁报告,无需重量级沙箱即可运行。 ## 功能 - **系统调用追踪** — 通过 `ptrace` 拦截并记录目标二进制文件的所有系统调用 - **行为分类** — Python 层识别恶意模式(键盘记录、C2 通信、持久化、提权) - **文件与网络监控** — 捕获文件 I/O 操作与出站网络调用 - **进程检查** — 跟踪进程创建、内存分配与注入尝试 - **结构化报告** — 以 JSON 和纯文本格式输出可读的威胁报告 - **无需虚拟机** — 在 Linux 上直接运行,依赖极少 ## 架构 ``` malsight/ ├── core/ # C — low-level tracer │ ├── tracer.c # ptrace-based syscall interceptor │ ├── syscall_table.c # syscall name/number mappings │ ├── proc_inspect.c # /proc filesystem reader │ └── logger.c # raw event logger (outputs JSON lines) │ ├── engine/ # Python — behavioral analysis │ ├── analyzer.py # main analysis pipeline │ ├── classifiers/ │ │ ├── network.py # C2 beacon & exfil detection │ │ ├── persistence.py # cron/startup/registry-like patterns │ │ ├── evasion.py # anti-debug & sandbox evasion detection │ │ └── injection.py # process injection indicators │ ├── reporter.py # threat report generator │ └── ioc_matcher.py # IOC matching against threat intel feeds │ ├── reports/ # generated analysis reports (gitignored) ├── samples/ # test malware samples (gitignored) ├── Makefile └── README.md ``` ## 需求 **C 追踪器:** - GCC 或 Clang - Linux 内核 4.x+ - `libcap`(可选,用于能力检查) **Python 引擎:** - Python 3.9+ - `pip install -r requirements.txt` ## 安装 ``` # 克隆仓库 git clone https://github.com/yourhandle/malsight.git cd malsight # 构建 C tracer make # 安装 Python 依赖 pip install -r requirements.txt ``` ## 用法 ``` # 跟踪可疑二进制文件并分析其行为 ./malsight analyze --target ./suspicious_binary # 以 JSON 格式输出报告 ./malsight analyze --target ./suspicious_binary --format json --output reports/result.json # 详细模式 — 实时查看原始系统调用流 ./malsight analyze --target ./suspicious_binary --verbose # 匹配 IOCs 与自定义威胁情报源 ./malsight analyze --target ./suspicious_binary --ioc-feed ./feeds/misp_export.json ``` ### Windows(PowerShell) 本仓库包含一个用于在 Windows 上运行 Python 分析器的小型 PowerShell 辅助脚本。 步骤: 1. 创建并激活虚拟环境(如果缺失,`run.ps1` 辅助脚本会自动创建): ``` .\run.ps1 -InstallDeps ``` 2. 或手动方式: ``` # 创建 venv python -m venv .venv # 激活 . .venv\Scripts\Activate.ps1 # 安装依赖(如果没有 requirements.txt): pip install prometheus-client statsd newrelic # 运行分析器 python analyzer.py ``` 分析器支持的环境变量(PowerShell 示例): ``` $env:METRICS_ENABLED = "true" $env:METRICS_BACKEND = "prometheus" python analyzer.py ``` 说明: - 本 README 中其他位置描述的 C 追踪器是 Linux 专用的,不包含在此 Windows 工作区中;`analyzer.py` 默认使用占位输入运行 Python 分析流水线。 ## 示例报告输出 ``` === MALSIGHT THREAT REPORT === Target: suspicious_binary SHA256: 3a5f2b... Timestamp: 2026-04-10T09:15:42Z [HIGH] C2 Beacon Pattern Detected → Repeated outbound TCP to 45.33.x.x:443 at 30s intervals [MEDIUM] Persistence Attempt → Wrote to /etc/cron.d/updater [LOW] Anti-Debug Evasion → Called ptrace(PTRACE_TRACEME) on self Syscalls Traced: 4,821 Unique IPs contacted: 3 Files written: 7 Processes spawned: 2 Risk Score: 78/100 — LIKELY MALICIOUS ``` ## 工作原理 1. **追踪器(C)** — `malsight` 将目标二进制文件作为子进程派生并通过 `ptrace` 附加。每个系统调用在入口和出口处被拦截,日志记录包含参数、返回值与时间戳的结构化 JSON 流。 2. **分析器(Python)** — 读取系统调用流并通过一组行为分类器进行处理。每个分类器查找已知恶意模式(例如,重复向同一 IP 发起 `connect()` 调用暗示 C2 通信,对启动目录的 `write()` 暗示持久化)。 3. **报告器(Python)** — 将分类器发现聚合为带有风险评分的优先级威胁报告。 ## 路线图 - [ ] 在追踪前进行 PE/ELF 静态预分析 - [ ] 集成 VirusTotal API 进行哈希查询 - [ ] 对提取的内存区域执行 YARA 规则扫描 - [ ] 提供基于 Docker 的隔离模式 - [ ] 新增 Web 仪表盘(Flask)用于报告可视化 - [ ] 新增 Windows 支持(通过 ETW / API 钩子) ## 免责声明 `malsight` 仅供**教育与研究用途**。请仅分析你明确获得许可的二进制文件。始终在隔离环境中运行。作者不对滥用行为负责。 ## 许可证 MIT © 2026 — 详情请见 [LICENSE](LICENSE)。 ## 主题 `malware-analysis` `cybersecurity` `ptrace` `syscall-tracer` `c` `python` `reverse-engineering` `linux` `threat-intelligence` `sandbox` ## 指标与监控(可选) 该项目包含一个轻量级监控集成,用于跟踪分析流水线的 频率与耗时。 - `METRICS_ENABLED`(环境变量):启用或禁用指标收集(默认:`true`) - `METRICS_BACKEND`(环境变量):指标后端 — `statsd`(默认)或 `prometheus` - `METRICS_PORT`(环境变量):Prometheus 指标服务器的 HTTP 端口(默认:`8000`) 启用 StatsD 时的配置(当 `METRICS_BACKEND=statsd`): - `STATSD_HOST`(环境变量):StatsD 服务器主机(默认:`localhost`) - `STATSD_PORT`(环境变量):StatsD 服务器端口(默认:`8125`) 可选的新 Relic APM: - `NEWRELIC_ENABLED`(环境变量):启用 New Relic 集成(默认:`false`) - `NEWRELIC_LICENSE_KEY`(环境变量):启用时所需的许可证密钥 - `NEWRELIC_APP_NAME`(环境变量):上报至 New Relic 的应用名称(默认:`malware-analyzer`) 要在本地启用 Prometheus 指标运行: ``` $env:METRICS_BACKEND = "prometheus" $env:METRICS_ENABLED = "true" python analyzer.py ``` 使用 StatsD(默认): ``` # 确保 STATSD_HOST:STATSD_PORT 处的 StatsD/Datadog 代理可达 $env:METRICS_ENABLED = "true" $env:METRICS_BACKEND = "statsd" python analyzer.py ``` 启用 New Relic APM(需要 `newrelic` pip 包与有效许可证): ``` $env:NEWRELIC_ENABLED = "true" $env:NEWRELIC_LICENSE_KEY = "YOUR_KEY_HERE" $env:NEWRELIC_APP_NAME = "malsight-analyzer" python analyzer.py ```
标签:Behavioral Threat Detection, C2通信检测, DAST, IOC检测, JSON报告, ptrace, Python, Syscall Monitoring, 云资产清单, 关键日志监控, 内存注入检测, 威胁报告, 子域名生成, 开源分析工具, 恶意软件分析, 持久化检测, 文件监控, 无后门, 权限提升检测, 沙箱替代, 系统调用追踪, 结构化报告, 轻量级分析, 逆向工具, 逆向工程