pablo-972/AIM
GitHub: pablo-972/AIM
AIM 是一个结合传统静态分析工具与 AI agent 的恶意软件分析框架,能够自动提取样本信息、识别威胁行为者内容并生成技术报告。
Stars: 0 | Forks: 0
# AIM - AI 恶意软件分析
AIM 是一个 AI 辅助的恶意软件分析框架。它运行确定性分析工具,存储规范化后的产物,然后让 AI 运行器根据这些产物生成丰富说明或技术报告。
目前的实现侧重于静态分析、静态字符串 agent、逆向工程丰富信息以及报告生成。
请仅在隔离环境中运行恶意软件样本。AIM 会读取并丰富具有潜在恶意的产物,并依赖于外部分析二进制文件。
## 项目布局
```
.
|-- main.py # CLI entry point
|-- cli/ # Argument parsers and validation
|-- core/ # Shared context and result contracts
|-- orchestrator/ # Central phase coordinator
|-- tools/
| |-- static/ # Static-analysis tool implementations
| `-- runner/ # Tool runners
|-- ai/
| |-- agents/ # Agent prompts and agent logic
| |-- generators/ # Non-agentic AI generators
| |-- providers/ # LLM provider clients
| |-- runner/ # AI runners for agents, reports, enrichment
| |-- runtime/ # Agent executor, memory, validators
| `-- model_profiles.yaml # Provider/profile/task configuration
|-- utils/
| |-- artifacts/ # Artifact builders and readers
| |-- io/ # Files, text, paths, command execution
| |-- preprocessing/ # Report/enrichment input preparation
| `-- logger.py
|-- config/ # Settings and environment access
|-- samples/ # Local samples
`-- output/ # Generated artifacts
```
## 安装
安装 Python 依赖:
```
pip install -r requirements.txt
```
静态分析还需要这些系统工具可用:
- `file`
- `strings`
- `exiftool`
- `upx`
仓库包含了用于准备环境的 Docker 文件:
```
docker compose up -d --build
docker exec -it aim bash
```
## 配置
模型提供者和配置文件在 `ai/model_profiles.yaml` 中进行配置。
支持的提供者实现:
- `ollama`
- `openai` / OpenAI 兼容 API
该 YAML 文件还包含用于 Anthropic 和 Gemini 的占位符提供者条目,但这些提供者尚未在 `ai.providers.factory.ProviderFactory` 中实现。
常用环境变量:
- `OLLAMA_BASE_URL`
- `OPENAI_API_KEY`
- `OPENAI_BASE_URL`
- `OPENAI_STATIC_MODEL`
- `OPENAI_REPORT_MODEL`
- `OPENAI_ENRICHMENT_MODEL`
- `VT_API_BASE_URL`
- `VT_API_KEY`
## 用法
显示 CLI 帮助:
```
python main.py -h
```
运行完整的静态分析:
```
python main.py static /path/to/sample full
```
运行选定的静态工具:
```
python main.py static /path/to/sample file hash strings pe
```
将产物写入自定义输出目录:
```
python main.py static /path/to/sample full --output output
```
运行静态字符串 agent:
```
python main.py static /path/to/sample strings --agent --profile local-static
```
静态 agent 需要 `strings` 或 `full`,因为它会消费提取出的 `parsed_strings`。
从现有产物生成逆向工程丰富信息:
```
python main.py enrichment /path/to/sample --profile local-enrichment
```
从现有的静态分析产物生成报告:
```
python main.py report /path/to/sample --module static --profile local-report
```
## 架构
`main.py` 构建 CLI 解析器,在阶段提供验证器时验证 CLI 参数,并将解析后的参数传递给 `Orchestrator`。
编排器是中央协调者:
1. 将 CLI 参数转换为 `core.context.AnalysisContext`。
2. 通过 `PHASE_HANDLERS` 调度选定的阶段。
3. 创建共享依赖项,如 `ModelRegistry` 和 `StaticToolRunner`。
4. 根据需要运行确定性工具、AI agent、丰富信息或报告生成。
已实现的阶段包括:
- `static`:运行静态工具,持久化 `analysis.json`,并可选择运行静态 agent。
- `enrichment`:消费先前的产物并更新 `enrichment.md`。
- `report`:消费先前的产物并写入 `report.md`。
## 契约
共享契约位于 `core/` 目录下。
`AnalysisContext` 包含规范化的执行上下文:
- 样本路径
- 输出目录
- 阶段
- 输出格式
- 选定的配置文件
- 选定的静态模式
- 静态 agent 标志
`ToolResult` 规范化工具输出:
```
{
"status": "ok",
"data": {},
"error": null
}
```
失败情况使用相同的结构:
```
{
"status": "error",
"data": null,
"error": "error message"
}
```
## 静态工具
静态工具位于 `tools/static/` 中,并由 `tools.runner.static.StaticToolRunner` 注册。
可用模式:
- `file`:使用 `file` 识别文件类型。
- `hash`:计算 `md5`、`sha1`、`sha256`,并在可用时计算 PE `imphash`。
- `metadata`:使用 `exiftool -j` 提取元数据。
- `packer`:应用 PE 加壳和熵启发式检测。
- `strings`:提取字符串,过滤噪声,并提取 IOC。
- `pe`:提取 PE 架构、大小、子系统、节区、导入、导出、延迟导入、版本信息和资源。
- `vt`:根据样本的 SHA256 查询 VirusTotal。
- `full`:运行所有已注册的静态工具。
外部命令通过 `utils.io.commands.run_command` 执行,该命令添加了超时处理和共享的命令结果契约。
## 静态 Agent
静态 agent 在提取的字符串中搜索面向受害者的威胁行为者信息,例如:
- 勒索信
- 支付说明
- 钱包地址
- 谈判联系方式
- 解密说明
- 威胁或反执法指令
组件:
- `ai.agents.static.StaticAgent`:agent prompt 和 LLM 调用。
- `ai.runner.static.StaticAgentRunner`:对字符串进行分块并运行 agent。
- `ai.runtime.executor.AgentStepExecutor`:验证并调度工具调用。
- `ai.runtime.memory.AgentMemory`:记录 agent 步骤。
- `tools.static.actor_messages.save_threat_actor_messages`:保存选定的消息块。
agent 可调用的工具声明于:
```
tools/static/tools.json
```
静态 agent 写入:
```
output/static_agent_steps.json
output/threat_actor_messages.json
```
## 预处理
AI 输入在 `utils/preprocessing/` 下准备。
目的是避免将大量原始工具输出直接发送给模型。
当前的预处理行为:
- `strings`:从报告输入中移除原始字符串列表,并保留计数/IOC。
- `pe`:将报告/丰富信息输入拆分为 `summary`、`sections` 以及分组的导入块,例如 `imports.1`、`imports.2`。
- `vt`:保留高信号报告块,并将丰富信息输入精简为基本分类、沙箱判定、标签、有意义的名称和检测统计数据。
- `threat_actor_messages`:仅提取 `items[*].message_block`,过滤嘈杂的运行时/错误字符串,并将干净的行为者消息块作为单独的丰富信息源发送。
## 生成的产物
主要产物是:
```
output/analysis.json
```
结构:
```
{
"schema_version": "1.0",
"sample": {
"path": "/path/to/sample",
"size": 12345
},
"phases": {
"static": {
"status": "completed",
"tools": {
"hash": {
"status": "ok",
"data": {
"sha256": "..."
},
"error": null
}
},
"findings": []
}
}
}
```
其他产物:
- `output/static_agent_steps.json`:静态 agent 的决策和工具输出。
- `output/threat_actor_messages.json`:选定的面向受害者的行为者消息。
- `output/enrichment.md`:逆向工程丰富信息记录。
- `output/report.md`:从已保存的产物生成的最终报告。
`threat_actor_messages.json` 结构:
```
{
"schema_version": "1.0",
"artifact_type": "threat_actor_messages",
"source": "static_agent",
"items": [
{
"id": 1,
"created_at": "2026-06-14T00:00:00+00:00",
"chunk_index": 1,
"message_block": []
}
]
}
```
## 报告生成
`ai.runner.report.ReportAIRunner` 读取现有产物,并将预处理后的块发送给 `ai.generators.report.AIReport`。
报告运行器写入:
```
output/report.md
```
对于庞大或嘈杂的工具,报告会接收结构化的块,而不是完整的原始 JSON blob。
## 丰富信息
`ai.runner.enrichment.EnrichmentAIRunner` 根据预处理后的源增量更新逆向工程记录。
运行器保持顶级标题不变:
```
# 逆向工程 Enrichment
```
模型控制正文结构。在有用时,它可以添加、删除、合并或重命名子章节。运行器仅通过移除代码围栏和防止重复的顶级标题来清理模型输出。
丰富信息运行器写入:
```
output/enrichment.md
```
## 添加新的静态工具
1. 在 `tools/static/` 中实现一个函数。
2. 从 `tools/static/__init__.py` 导出它。
3. 在 `tools/runner/static.py` 的 `STATIC_TOOL_RUNNERS` 中注册它。
4. 将模式添加到 `cli/static_parser.py` 的 `STATIC_MODES` 中。
5. 仅在输出庞大或需要适合模型的格式化时才添加预处理。
通过运行器契约使用 `ToolResult`;各个工具应返回有用的数据或引发异常。
## 添加新阶段
1. 在 `cli/` 中添加一个解析器。
2. 在 `cli/base_parser.py` 中注册它。
3. 向 `Orchestrator.PHASE_HANDLERS` 添加阶段处理程序。
4. 在 `orchestrator/orchestrator.py` 中实现处理程序方法。
5. 使用 `utils.artifacts` 中的辅助工具持久化阶段产物。
保持编排器作为中央协调者。AI 运行器不应直接执行工具;当 AI 工作流需要工具操作时,应通过相关的工具运行器进行路由。
## 当前状态
- 静态分析阶段已实现。
- 静态字符串 agent 已实现。
- 逆向工程丰富信息已实现。
- 报告生成已实现。
- Ollama 和 OpenAI 兼容的提供者已实现。
- 动态分析和额外的提供者后端尚未实现。
标签:AI风险缓解, DAST, Petitpotam, Python, 云安全监控, 云资产清单, 人工智能, 安全, 恶意软件分析, 无后门, 用户模式Hook绕过, 自动化报告, 请求拦截, 超时处理, 逆向工具, 逆向工程, 静态分析