# attck_knowledge

`attck_knowledge` 是“基于 RAG 与 IDA-MCP 的恶意代码静态分析”项目中的知识层与数据层实现目录。它负责三件事:

– 构建多源知识库,包括 `ATTACK`、`API_CHAIN`、`IDA_SEMANTIC`

– 将原始结构化知识转换为统一的 `RAG` 检索文档

– 为后续向量检索、证据拼装、LLM 推理提供稳定输入

## 目录说明

“`text

attck_knowledge/

├─ builders/      # 知识构建与导出脚本

├─ data/

│  ├─ raw/        # 原始结构化知识

│  ├─ rag/        # 面向 RAG 的标准检索文档

│  └─ index/      # 预留给向量索引与元数据索引

├─ schemas/       # raw 与 rag 数据结构定义

├─ README.md

├─ DATA_REFACTOR_PLAN.md

└─ TECHNICAL_ROUTE_SYSTEM_DESIGN.md

“`

## 数据分层

### `raw`

`raw` 层保留原始结构化事实,适合清洗、校验、调试与二次加工。

示例:

– ATT&CK technique 原始字段

– API 行为模板定义

– 从 IDA 导出的函数级静态事实

### `rag`

`rag` 层将多源知识统一转换为检索文档,适合 embedding、BM25、向量检索与送入 LLM。

统一字段以 [`rag_doc.schema.json`](/d:/Graduation%20project/Midterm/asm/attck_knowledge/schemas/rag_doc.schema.json) 为准。

## 当前知识源

– `ATTACK`

  来自 MITRE ATT&CK STIX 数据,输出 ATT&CK 技术知识与 RAG 文档。

– `API_CHAIN`

  以恶意行为模板为核心,组织 API 链、行为解释与 ATT&CK 映射。

– `IDA_SEMANTIC`

  面向函数级静态事实,保存伪代码、API、字符串、调用关系与行为标签。

## 关键脚本

– [`build_attack_kb.py`](/d:/Graduation%20project/Midterm/asm/attck_knowledge/builders/build_attack_kb.py)

  生成 ATT&CK raw 与 rag 文档。

– [`build_api_chain_kb.py`](/d:/Graduation%20project/Midterm/asm/attck_knowledge/builders/build_api_chain_kb.py)

  生成 API 行为链 raw 与 rag 文档。

– [`build_ida_semantic_kb.py`](/d:/Graduation%20project/Midterm/asm/attck_knowledge/builders/build_ida_semantic_kb.py)

  将 IDA 导出的函数事实转换为 raw 与 rag 文档。

– [`export_ida_semantic_from_mcp.py`](/d:/Graduation%20project/Midterm/asm/attck_knowledge/builders/export_ida_semantic_from_mcp.py)

  当前为 IDA-MCP 导出脚本骨架,后续用于直接从 IDA 环境导出函数级事实。

## 输出位置

– `ATTACK raw` -> [data/raw/attack](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/raw/attack)

– `ATTACK rag` -> [data/rag/attack](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/rag/attack)

– `API_CHAIN raw` -> [data/raw/api_chain](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/raw/api_chain)

– `API_CHAIN rag` -> [data/rag/api_chain](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/rag/api_chain)

– `IDA_SEMANTIC raw` -> [data/raw/ida_semantic](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/raw/ida_semantic)

– `IDA_SEMANTIC rag` -> [data/rag/ida_semantic](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/rag/ida_semantic)

## 推荐流程

1. 用 `export_ida_semantic_from_mcp.py` 或真实 IDA-MCP 导出样本函数事实。

2. 运行三个 builder 生成 `raw` 与 `rag` 数据。

3. 将 `rag` 文档接入向量库与元数据检索。

4. 在线分析时,把当前函数事实和召回结果拼成 `evidence` 对象,再交给 LLM 推理。

### 批量多函数导出

如果已经在 IDA 里定位了一组可疑函数,可以一次性导出:

“`powershell

python attck_knowledge\builders\export_ida_semantic_from_mcp.py –mcp-url http://127.0.0.1:13337/mcp –function-addresses 0x140012340,0x140045678,0x1400789ab

“`

也可以从文本文件批量导入地址,每行一个:

“`powershell

python attck_knowledge\builders\export_ida_semantic_from_mcp.py –mcp-url http://127.0.0.1:13337/mcp –function-addresses-file .\targets.txt

“`

支持的批量入口有:

– `–function-addresses`

– `–function-addresses-file`

– `–function-names`

– `–function-names-file`

导出脚本会自动去重,然后统一写入:

– [sample_ida_semantic.json](/d:/Graduation%20project/Midterm/asm/samples/ida_exports/sample_ida_semantic.json)

## 最小 Demo

可以直接跑一个函数级 RAG demo:

“`powershell

python attck_knowledge\run_function_rag_demo.py –sample-json samples\ida_exports\sample_ida_semantic.json –top-k 3

“`

它会做三件事:

– 从导出的函数事实里构造查询

– 在 `ATTACK`、`API_CHAIN`、`IDA_SEMANTIC` 三类文档中做轻量检索

– 生成一个 `evidence` JSON,位置默认是 [latest_function_evidence.json](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/index/metadata/latest_function_evidence.json)

这个 demo 还不是最终的向量检索版本,但已经能把“函数事实 -> 检索结果 -> ATT&CK 候选 -> 证据对象”串起来,适合做系统原型和论文演示。

如果你还想生成一份简短的函数级分析结论,可以继续运行:

“`powershell

python attck_knowledge\analyze_function_evidence.py

“`

它会读取最新的 `evidence` 和 `ida_semantic raw`,输出一份结构化分析结果到:

– [latest_function_analysis.json](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/index/metadata/latest_function_analysis.json)

如果你已经导出了一组函数,还可以继续做样本级聚合:

“`powershell

python attck_knowledge\aggregate_sample_analysis.py –sample-json samples\ida_exports\sample_ida_semantic.json

“`

输出位置:

– [latest_sample_analysis.json](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/index/metadata/latest_sample_analysis.json)

这个脚本会把多个函数的函数级 `evidence/analysis` 汇总成:

– 样本级 ATT&CK 候选

– 可疑函数列表

– runtime/helper 函数列表

– 样本级总结与下一步建议

## Cline 一键使用

如果你希望最后就直接在 Cline 里使用,推荐直接跑这个总入口:

“`powershell

python attck_knowledge\run_sample_pipeline.py –mcp-url http://127.0.0.1:13337/mcp –function-addresses-file .\targets.txt

“`

如果只想先验证一个函数,也可以:

“`powershell

python attck_knowledge\run_sample_pipeline.py –mcp-url http://127.0.0.1:13337/mcp –function-address 0x1400478E3 –include-thunks

“`

这个总入口会自动完成:

1. 从 IDA-MCP 导出函数事实

2. 重建 `ida_semantic raw/rag`

3. 执行函数级检索与分析

4. 生成样本级聚合结果

5. 输出一份 Markdown 报告

最终在 Cline 里主要看这几个结果:

– [sample_ida_semantic.json](/d:/Graduation%20project/Midterm/asm/samples/ida_exports/sample_ida_semantic.json)

– [latest_sample_analysis.json](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/index/metadata/latest_sample_analysis.json)

– [latest_sample_report.md](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/index/metadata/latest_sample_report.md)

– [latest_sample_report_paper.md](/d:/Graduation%20project/Midterm/asm/attck_knowledge/data/index/metadata/latest_sample_report_paper.md)

之后你就可以继续在 Cline 里直接问:

– “读取 latest_sample_report.md,帮我解释这个样本”

– “哪个函数最可疑”

– “把样本级结果改写成论文里的实验结果描述”

– “根据 ATT&CK 候选生成正式分析报告”

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注