victorfengdj/ai-incident-response-agent
GitHub: victorfengdj/ai-incident-response-agent
该工具是一个 AI 驱动的 SOC 取证编排 Agent,通过整合 AWS Bedrock、VirusTotal 威胁情报和 SSH 远程命令执行,帮助分析师自动化调查 DMZ 入侵及 Oracle 数据库横向移动事件。
Stars: 0 | Forks: 0
# AI 事件响应 Agent
一个由 AI 驱动的 SOC 取证编排器,用于调查源自互联网、攻击 DMZ Web 服务器并可能横向移动至内部 Oracle 数据库的潜在入侵行为。
该 agent 将 AWS Bedrock (Claude Haiku 4.5)、VirusTotal 威胁情报和基于 SSH 的远程命令执行整合到一个单一的交互式循环中。每个会话都会自动保存为 Markdown 案例日志。
## 架构
```
Analyst
│
├─ SIEM Alert (Palo Alto firewall log)
│ │
│ ├─ VirusTotal IP Reputation Lookup
│ └─ AWS Bedrock (Claude Haiku 4.5)
│ │
│ └─ MITRE ATT&CK Analysis
│ Forensic Commands
│ Oracle Audit Queries
│ Business Case
│
├─ SSH Remote Command Execution
│ │ (allow-listed commands only)
│ └─ DMZ Web Server / Oracle DB Host
│
└─ Markdown Case Log (case_log_.md)
```
## 前置条件
| 需求 | 备注 |
|---|---|
| Python 3.8+ | |
| AWS 账户 | 在 `us-east-1` 启用 Bedrock |
| AWS 凭证 | `aws configure` 或 IAM 角色 |
| Bedrock 模型访问权限 | 在 AWS 控制台中申请 `Claude Haiku 4.5` 的访问权限 |
| VirusTotal API 密钥 | 免费版即可 |
| SSH 访问权限 | 建议对目标主机使用免密 SSH |
### Python 依赖项
```
pip3 install boto3 requests python-dotenv
```
## 设置
1. 克隆仓库:
git clone
cd ai-incident-response-agent
2. 创建一个 `.env` 文件并填入你的 VirusTotal API 密钥:
VIRUSTOTAL_API_KEY=your_api_key_here
3. 确认已配置 AWS 凭证:
aws sts get-caller-identity
## 用法
```
python3 ai-incident-response-agent.py
```
在提示符下输入 `help` 以查看完整的输入参考:
```
SIEM ALERT FORMAT (comma-separated key:value pairs):
sm_log_type - Log source (e.g., Palo Alto Firewall)
sm_src_ip - Source IP address (Internet-facing attacker)
sm_dst_ip - Destination IP address (DMZ Web Server)
sm_src_port - Source port number
sm_dst_port - Destination port number
sm_app - Application identified by the firewall (e.g., web-browsing, ssl)
sm_action - Firewall action taken (e.g., allow, deny, drop)
sm_oracle_db_ip - Internal Oracle Database IP for lateral movement analysis
EXAMPLE:
sm_log_type:Palo Alto Firewall, sm_src_ip:45.182.189.102, sm_dst_ip:10.0.0.4, sm_src_port:13424, sm_dst_port:443, sm_app:web-browsing, sm_action:allow, sm_oracle_db_ip:172.18.18.2
FREE-FORM QUESTIONS:
You can also type any natural-language question or observation and the AI will analyse it in context.
Example: "The web server process is running as root, is this a concern?"
```
### 会话命令
| 命令 | 操作 |
|---|---|
| `help` | 显示输入格式和字段参考 |
| `clear` | 重置 AI 对话记忆(开启全新上下文) |
| `exit` | 结束会话 |
### 调查流程
1. 粘贴 SIEM 告警 —— agent 会自动查询 VirusTotal 并将丰富后的告警发送给 Bedrock。
2. AI 会返回映射了 MITRE ATT&CK 的分析结果、建议的取证命令、Oracle 审计 SQL 以及业务案例。
3. 在取证提示符下,输入目标 IP 和命令,即可通过 SSH 在远程主机上执行。执行输出将反馈给 AI 进行解读。
4. 对每个命令重复此操作,或按 Enter 键返回主提示符。
## 远程命令白名单
出于安全考虑,远程主机上仅允许使用以下命令前缀(带或不带开头的 `sudo`):
`grep` `journalctl` `ps` `who` `ls` `cat` `tail` `netstat` `ss` `sqlplus` `aureport` `ausearch`
## 案例日志
每个会话都会在工作目录中生成一个名为 `case_log_.md` 的 Markdown 案例日志。请将已完成的日志移动到 `case_logs/` 目录中进行归档。
以下提供了 [`case_logs/`](case_logs/) 中的调查示例:
| 日志 | 源 IP | VT 结果 | 摘要 |
|---|---|---|---|
| [case_log_20260616_230901.md](case_logs/case_log_20260616_230901.md) | 45.182.189.102 | ⚠️ 恶意 (4 次命中) | 高严重性告警 —— 被 VirusTotal 标记的 IP 通过 HTTPS 攻击 DMZ Web 服务器;已确认 MITRE T1190 初始访问;已启动取证调查 |
| [case_log_20260616_231954.md](case_logs/case_log_20260616_231954.md) | 156.146.98.8 | ✅ 干净 | 中等严重性告警 —— IP 信誉良好,但 HTTPS payload 不透明;未能排除向 Oracle 数据库的横向移动;已升级进行深度取证 |
## AWS Bedrock 模型
| 字段 | 值 |
|---|---|
| 提供商 | Anthropic |
| 模型 | Claude Haiku 4.5 |
| 推理配置 | `us.anthropic.claude-haiku-4-5-20251001-v1:0` |
| 区域 | `us-east-1` |
跨区域推理配置(`us.` 前缀)是按需调用所必需的。如果没有预置吞吐量,则不支持直接使用模型 ID。
标签:AWS Bedrock, PE 加载器, 内存分配, 威胁情报, 安全运营, 库, 应急响应, 开发者工具, 扫描框架, 插件系统, 数字取证, 数据泄露, 自动化编排, 自动化脚本, 逆向工具