
# 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 候选生成正式分析报告”
No responses yet