arman-hosain/Benchmarking-Large-Language-Models-for-Malware-Analysis-and-Security-Reasoning
GitHub: arman-hosain/Benchmarking-Large-Language-Models-for-Malware-Analysis-and-Security-Reasoning
MalForge是一个用于系统性评估大语言模型在恶意软件分析场景下性能表现的基准测试框架,支持四种分析模式与多种模型的对比实验。
Stars: 0 | Forks: 0
# MalForge:LLM 恶意软件分析基准
## 4 种模式 × 3 种模型 = 12 种实验条件
```
┌──────────────────────────────────────────────────────────────────┐
│ Mode A: Single-Shot │ 1 prompt → 1 analysis. Baseline. │
│ Mode B: Judge-Refined │ Mode A + judge feedback loop (5 iter)│
│ Mode C: Agentic │ Tool-based investigation loop │
│ Mode D: Agentic+Judge │ Mode C + judge feedback per cycle │
├──────────────────────────────────────────────────────────────────┤
│ Model 1: meta-llama/Llama-3.1-8B │
│ Model 2: openai/gpt-oss-20b │
│ Model 3: Qwen/Qwen3-8B-Base │
└──────────────────────────────────────────────────────────────────┘
```
## 项目结构
```
malforge/
├── config.py # Configuration (env-var overridable)
├── run_benchmark.py # Main runner — all experiments
├── run_all.sh # AUTOMATION: start/stop vLLM per model
├── generate_graphs.py # 6 base comparison charts
├── generate_extended_charts.py # 5 extended charts (box, line, table)
├── generate_log_viewer.py # Interactive HTML log viewer
├── modes/
│ ├── mode_a.py # Single-shot (your Step 4)
│ ├── mode_b.py # Judge-refined (your Step 4+5)
│ ├── mode_c.py # Agentic investigation (NEW)
│ └── mode_d.py # Agentic + Judge (NEW)
├── tools/
│ └── environment.py # Cuckoo report → tool interface
├── eval/
│ └── metrics.py # Unified metrics (all 4 modes)
├── results/ # Output: benchmark_results.json
├── logs/ # Output: per-experiment detailed logs
└── charts/ # Output: 11 PNG charts + log_viewer.html
```
## 如何运行
### 前置条件
```
pip install openai matplotlib numpy --break-system-packages
```
### 设置您的路径(重要 — 请先执行此步骤)
```
# 添加到您的 ~/.bashrc 或在每个会话前运行:
export MALFORGE_DATASET_DIR=/path/to/your/dataset # where *_report.json files are
export MALFORGE_EXTRACTED_DIR=/path/to/your/extracted_data # where *_test.json files are
export MALFORGE_VLLM_PORT=8001
```
### 选项 1:完全自动化运行(推荐)
```
chmod +x run_all.sh
# 完整运行 — 自动处理每个模型的 vLLM 启动/停止
./run_all.sh
# 使用 5 个样本快速测试
./run_all.sh --max-samples=5
# 试运行 — 查看将要执行的内容
./run_all.sh --dry-run
```
### 选项 2:手动分步执行
```
# 使用第一个模型启动 vLLM
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-8B --port 8001
# 对该模型运行所有 4 种模式
python run_benchmark.py --models llama-3.1-8b --modes A B C D
# 停止 vLLM,加载下一个模型,重复...
# 所有模型完成后:
python generate_graphs.py
python generate_extended_charts.py
python generate_log_viewer.py
```
### 快速单样本测试
```
python run_benchmark.py --single 7277543 --models gpt-oss-20b --modes A B C D
```
## 查看日志
每个实验都会在 `./logs/` 中生成详细日志:
```
logs/
├── 7277543_modeA_gpt-oss-20b.log.json # Single-shot log
├── 7277543_modeB_gpt-oss-20b.log.json # Judge feedback + iterations
├── 7277543_modeC_gpt-oss-20b.log.json # Full agent trajectory
└── 7277543_modeD_gpt-oss-20b.log.json # Agent trajectory + judge
```
每个日志包含:
- **模式 A**:提示词/响应长度、延迟
- **模式 B**:每次评判迭代、反馈文本、每步覆盖率
- **模式 C**:完整的工具调用轨迹(使用了哪些工具、参数是什么、结果是什么)
- **模式 D**:轨迹 + 评判反馈轮次
## 生成的图表(共 11 个)
### 基础图表(generate_graphs.py)
1. **01_composite_grouped_bar.png** — 综合得分:3 种模型 × 4 种模式
2. **02_radar_per_model.png** — 每个模型在各指标上的雷达图
3. **03_heatmap_all_conditions.png** — 所有指标 × 所有条件的热力图
4. **04_cost_comparison.png** — 各模式的 LLM 调用次数和延迟
5. **05_improvement_delta.png** — 模式 D 相比模式 A 的提升幅度
6. **06_scatter_coverage_vs_composite.png** — 每个样本的散点图
### 扩展图表(generate_extended_charts.py)
7. **07_boxplots.png** — 带四分位数的得分分布
8. **08_mode_progression.png** — 折线图:性能 A→B→C→D
9. **09_efficiency_frontier.png** — 成本与质量散点图
10. **10_summary_table.png** — 完整结果表(图像格式)
11. **11_agentic_metrics.png** — 证据支撑、策略、IBC(模式 C/D)
### 交互式仪表板
- **log_viewer.html** — 浏览每个实验、检查 agent 轨迹、工具调用、评判反馈
## 指标
| 指标 | 所有模式 | 仅 Agentic 模式 |
|--------|-----------|--------------|
| Token 覆盖率 | ✓ | ✓ |
| 得分一致性 | ✓ | ✓ |
| 签名召回率(F1) | ✓ | ✓ |
| MITRE TTP 准确率 | ✓ | ✓ |
| 证据支撑 | | ✓ |
| 调查策略 | | ✓ |
| 综合得分 | ✓ | ✓ |
## 连接至您现有的流水线
这将替换/扩展您的步骤 4-6:
- **模式 A** = 您的步骤 4(step4_llm_analysis.py)
- **模式 B** = 您的步骤 4 + 步骤 5(step5_judge.py)
- **模式 C** = 新型 agentic 模式
- **模式 D** = 新型 agentic + 评判模式
您的数据集目录结构保持不变:
```
dataset/7277543_report.json # Original Cuckoo reports
extracted_data/7277543_test.json # Stripped reports (from your Step 1-2)
```
标签:CI/CD安全, DAST, DLL 劫持, GPT, Llama, LLM, Mutation, Petitpotam, Python, Qwen, Unmanaged PE, vLLM, 交互式日志, 人工智能安全, 代理模式, 代码示例, 可视化, 合规性, 大语言模型, 威胁情报, 实验对比, 开发者工具, 恶意软件分析, 数据分析, 无后门, 模型评估, 漏洞管理, 网络安全, 网络调试, 自动化, 评估框架, 逆向工具, 隐私保护