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绕过, 自动化报告, 请求拦截, 超时处理, 逆向工具, 逆向工程, 静态分析