FletcherFrimpong/Cane-AI-Incident-Response-Platform

GitHub: FletcherFrimpong/Cane-AI-Incident-Response-Platform

一个基于 FastAPI 和 React 的 AI 驱动安全事件响应平台,通过 LLM 分诊和自动化遏制实现从日志摄取到威胁处置的端到端 TDIR 流水线。

Stars: 0 | Forks: 0

# Cane AI - 事件响应平台 一个由 AI 驱动的安全事件响应平台,可摄取 Microsoft 安全日志,使用 AI 对其进行分诊,通过 NIST 800-61 剧本对已知威胁进行自动响应,并引导分析师对需要手动干预的事件进行人工干预修复。 ## 主要特性 - **全自动 TDIR 流水线** - 从日志摄取到遏制的端到端自动化。日志被摄取、标准化、关联成事件、通过威胁情报进行富化、由 AI 分诊并被遏制——所有这些均无需人工干预。分析师仅在 AI 标记需要审查的事件时介入。 - **自动富化** - 在 AI 分析之前,会从日志事件中提取 IOC(IP、文件哈希、域名、URL),并在 VirusTotal 和 AbuseIPDB 中进行查询。威胁情报分数将被输入到 LLM 提示词中,以做出更准确的分诊决策。 - **AI 驱动的分诊** - 通过系统级 API 密钥或按用户 BYOK 支持 Claude、OpenAI 和 Azure OpenAI。AI 可对严重性进行分类、识别攻击类型、映射到 MITRE ATT&CK、提取 IOC、评估杀伤链阶段,并推荐带有自动执行标志的响应操作。 - **自动遏制** - 置信度 >= 95% 的 AI 推荐操作会通过集成自动执行(封禁 IP、隔离主机、禁用账户)。低于阈值的操作将进入操作队列,附带完整上下文供分析师审批。 - **实时日志摄取** - 通过 Webhook 或批量文件上传摄取安全日志。支持所有 14 种 Azure Sentinel ASIM 日志类型,并带有自动标准化功能。 - **事件关联** - 通过关联 ID 自动将相关事件分组,检测攻击模式(勒索软件、钓鱼、数据外泄等),并创建事件。 - **NIST 800-61 剧本** - 7 个预构建的事件响应剧本(勒索软件、钓鱼、数据外泄、DDoS、未经授权的访问、恶意软件、内部威胁),包含 59 个引导步骤。 - **SOC 分析师队列** - 事件按严重性和状态优先级排序。关键/等待分析师处理的事件优先显示。事件详情页作为完整的响应中心:AI 分析、MITRE 映射、IOC、操作审批、带有分析师备注的时间线。 - **真实的平台集成** - Microsoft Graph、Sentinel、Defender for Endpoint、VirusTotal、AbuseIPDB。全部支持 OAuth2/API 密钥认证、加密凭证存储、连接测试和健康监控。 - **基于角色的访问控制** - 四种角色(L1 分析师、L2 分析师、经理、管理员),具有细粒度的权限控制。 ## 架构 ``` +------------------+ | Frontend | | React + TS | | Tailwind CSS | +--------+---------+ | WebSocket + REST | +------------------+ +------------+-------------+ | Microsoft | Webhook | | | Sentinel +----------->+ FastAPI Backend | | / Defender | | | +------------------+ +--+-----+-----+-----+----+ | | | | +--------+ +--+--+ | +--+--------+ | | | | | | +-----+----+ +---+---+ | +--+------+ +---+--------+ | Log | | AI | | | Action | | Integration| |Normalizer| |Triage | | | Service | | Service | |14 ASIM | | BYOK | | |Approval | | Encrypted | | types | |Claude | | |Workflow | | Credentials| +-----+----+ |OpenAI | | +---+-----+ +---+--------+ | |Azure | | | | | +---+---+ | | +------+------+ +-----+----+ | | | | Microsoft | |Correlation| | +--+--+ | | Graph API | | Engine | | |Celery| | | Sentinel | |CorrelID + | | |Worker| | | Defender | |Time Window| | +--+---+ | | VirusTotal | +-----+----+ | | | | AbuseIPDB | | | | | +-------------+ +-----+---------+-----+-------+----+ | PostgreSQL | | incidents | log_events | users | | playbooks | ai_analyses| actions | | timeline | integrations| audit | +------------------+----------------+ | +-----+-----+ | Redis | | Broker + | | Cache | +-----------+ ``` ### 自动化 TDIR 流水线 该平台遵循 NIST 800-61 和行业最佳实践,实现了一个全自动化的威胁检测、调查与响应 (TDIR) 流水线。每一步都在无需人工干预的情况下运行——分析师仅在 AI 标记需要审查的事件时才会介入。 ``` 1. DETECTION & INGESTION Sentinel Webhook / File Upload / Batch API | v Log Normalizer (14 ASIM schema types) | v Correlation Engine (group by CorrelationId + time window) | +---> Existing incident? Link event to it +---> New correlation group? Create incident | v Store in PostgreSQL (log_events table, JSONB raw data) 2. AUTO-ENRICHMENT (Celery background task) Incident created | v Extract IOCs from log events: - Public IPs (filter out RFC-1918 private ranges) - File hashes (SHA256/SHA1/MD5 from raw data) - Domains and URLs | v Query Threat Intelligence (if configured): - VirusTotal: IP/hash/domain/URL reputation, malicious counts - AbuseIPDB: IP abuse confidence score, report count | v Enrichment results fed into AI prompt (Graceful skip if integrations not configured) 3. AI TRIAGE Enriched events + incident context | v System LLM API key (CANE_AUTO_TRIAGE_API_KEY) | v Claude / OpenAI / Azure OpenAI (temperature: 0.1) | v Structured JSON response: - Severity classification (critical/high/medium/low/info) - Attack type identification - MITRE ATT&CK mapping (tactics + technique IDs) - Kill chain phase - Confidence score (0.0 - 1.0) - IOCs extracted (IPs, domains, hashes, emails) - Recommended actions with priority and auto-execute flag - Playbook suggestion - Human review determination | v Update incident + Store AI analysis + Match playbook 4. AUTO-CONTAINMENT For each AI-recommended action: | v Confidence >= 0.95 AND can_auto_execute? | YES --> Execute immediately via integration: | - Block IP (Microsoft Defender) | - Isolate host (Microsoft Defender) | - Disable account (Microsoft Graph) | - Revoke sessions (Microsoft Graph) | - Block URL/hash (Microsoft Defender) | NO --> Create pending action for analyst approval | v All actions logged in audit trail with full context 5. ANALYST REVIEW (only when needed) Incident Detail page shows: - AI analysis summary with confidence - MITRE ATT&CK mapping - Extracted IOCs with threat intel scores - Pending actions with Approve / Reject buttons | v On Approve: Execute via integration APIs On Reject: Log reason, continue to next action 6. PLAYBOOK EXECUTION Playbook attached to incident (AI-recommended or manual) | v Step-by-step execution: - AUTOMATED steps -> Execute via integrations (may require approval) - HUMAN_DECISION steps -> Present options to analyst - HUMAN_ACTION steps -> Analyst performs and marks complete - INFO steps -> Display guidance (NIST 800-61 references) | v Advance through NIST phases: Detection & Analysis -> Containment -> Eradication -> Recovery -> Post-Incident ``` ## 技术栈 | 组件 | 技术 | |-----------|-----------| | 后端 | Python 3.11+, FastAPI, SQLAlchemy (async), Celery | | 前端 | React 18, TypeScript, Tailwind CSS, Zustand, React Query | | 数据库 | PostgreSQL 16 | | 缓存/消息代理 | Redis 7 | | AI 提供商 | Anthropic Claude, OpenAI, Azure OpenAI (BYOK) | | 集成 | Microsoft Graph, Sentinel, Defender, VirusTotal, AbuseIPDB | | 部署 | Docker Compose (开发), Azure Container Apps (生产) | ## 项目结构 ``` my-app/ ├── docker-compose.yml # PostgreSQL, Redis, Backend, Celery, Frontend ├── backend/ │ ├── app/ │ │ ├── main.py # FastAPI application │ │ ├── config.py # Pydantic Settings (env-based) │ │ ├── database.py # Async SQLAlchemy engine │ │ ├── models/ # 11 SQLAlchemy ORM models │ │ ├── schemas/ # Pydantic request/response schemas │ │ ├── api/ # FastAPI route modules (62 endpoints) │ │ │ ├── auth.py # Register, login, refresh │ │ │ ├── users.py # Profile, API key management │ │ │ ├── incidents.py # CRUD, assign, escalate, close, timeline │ │ │ ├── logs.py # Ingest, batch, upload, query │ │ │ ├── playbooks.py # CRUD, step management, execute │ │ │ ├── triage.py # AI analyze, correlate, recommendations │ │ │ ├── actions.py # Execute, approve, reject, history │ │ │ ├── dashboard.py # Overview, threats, geo, timeline │ │ │ └── integrations.py # CRUD, test connection, health │ │ ├── services/ # Business logic layer │ │ │ ├── log_normalizer.py # 14 ASIM log type normalizers │ │ │ ├── correlation.py # Event correlation engine │ │ │ ├── log_ingestion.py # Ingestion orchestration │ │ │ ├── enrichment_service.py # IOC extraction + threat intel queries │ │ │ ├── triage_service.py # AI triage + auto-containment orchestration │ │ │ ├── playbook_service.py # Playbook execution engine │ │ │ ├── action_service.py # Auto-response + approval workflow │ │ │ ├── integration_service.py # Credential encryption + health │ │ │ ├── auth_service.py # JWT + password hashing │ │ │ └── encryption_service.py # AES-256-GCM encryption │ │ ├── ai/ # LLM integration (BYOK) │ │ │ ├── provider_base.py # LLMProvider protocol │ │ │ ├── claude_provider.py # Anthropic Claude │ │ │ ├── openai_provider.py # OpenAI │ │ │ ├── azure_openai_provider.py # Azure OpenAI │ │ │ ├── provider_factory.py # Factory (resolves user or system API key) │ │ │ └── prompts/ # Structured prompt templates │ │ ├── integrations/ # Platform connectors │ │ │ ├── base_client.py # ABC + OAuth2 mixin │ │ │ ├── microsoft_graph.py # Disable user, revoke sessions, etc. │ │ │ ├── microsoft_sentinel.py # KQL queries, incidents, watchlists │ │ │ ├── microsoft_defender.py # Isolate, block, AV scan │ │ │ ├── threat_intel.py # VirusTotal + AbuseIPDB │ │ │ └── registry.py # Integration registry │ │ ├── data/ │ │ │ └── seed_playbooks.py # 7 NIST 800-61 playbooks (59 steps) │ │ └── workers/ │ │ ├── celery_app.py # Celery config + beat schedule │ │ └── triage_tasks.py # Auto-triage background tasks │ └── alembic/ # Database migrations ├── frontend/ │ ├── src/ │ │ ├── App.tsx # Routes + auth guard │ │ ├── api/ # Axios API client layer │ │ ├── store/ # Zustand state management │ │ ├── pages/ # Dashboard, Incidents, Action Queue, Playbooks, Logs, Settings │ │ ├── components/ # Layout (AppShell, Sidebar) │ │ ├── types/ # TypeScript interfaces │ │ └── utils/ # Constants, formatters │ └── package.json └── synthetic_logs/ # 14 ASIM log files + 4 attack scenario files ``` ## 预构建剧本 | 剧本 | 攻击类型 | 步骤 | 关键自动操作 | |----------|-------------|-------|-----------------| | 勒索软件响应 | 勒索软件 | 11 | 隔离主机,封禁 C2 IP,全盘防病毒扫描 | | 钓鱼响应 | 钓鱼 | 9 | 封禁 URL,重置凭证,撤销会话 | | 数据外泄响应 | 数据外泄 | 9 | 禁用账户,封禁目标 IP | | DDoS 响应 | DDoS | 6 | 封禁源 IP | | 未经授权的访问响应 | 未经授权的访问, 暴力破解 | 8 | 禁用账户,撤销会话,封禁 IP | | 恶意软件感染响应 | 恶意软件 | 8 | 隔离主机,封禁文件哈希,封禁 C2,防病毒扫描 | | 内部威胁响应 | 内部威胁 | 8 | 禁用账户 (需 HR/法务审批) | 所有剧本均遵循 NIST SP 800-61 阶段:检测与分析、遏制、根除、恢复、事件后活动。 ## 支持的日志类型 (ASIM Schema) | 日志类型 | 来源 | 提取的关键字段 | |----------|--------|---------------------| | SecurityAlert | Microsoft Defender | 严重性,实体,战术,警报名称 | | SecurityEvent | Windows | 事件 ID,账户,进程,命令行 | | SignInLogs | Azure AD | 用户,IP,位置,风险级别 | | CommonSecurityLog | Palo Alto, Cisco, Fortinet, Check Point | 源/目标 IP,设备操作,威胁 | | EmailEvents | Defender for Office 365 | 发件人,收件人,主题,威胁类型 | | EmailAttachmentInfo | Defender for Office 365 | 文件名,哈希,威胁 | | EmailUrlInfo | Defender for Office 365 | URL,域名,威胁 | | DNSEvents | DNS 服务器 | 查询名称,客户端 IP,威胁指示器 | | AppServiceHTTPLogs | Azure App Service | 方法,URI,状态,客户端 IP | | AuditLogs | Azure AD | 操作,执行者,目标 | | OfficeActivity | Microsoft 365 | 操作,工作负载,用户 | | AWSCloudTrail | AWS | 事件名称,来源,用户身份 | | Event | Windows | 事件 ID,来源,消息 | | Heartbeat | Azure Monitor | 计算机,操作系统,环境 | ## 平台集成 | 平台 | 认证 | 功能 | |----------|------|-------------| | Microsoft Graph | OAuth2 Client Credentials | 禁用/启用用户,撤销会话,强制重置密码,读取安全警报,读取高风险用户 | | Microsoft Sentinel | OAuth2 Client Credentials | 运行 KQL 查询,列出/更新事件,创建监控列表 | | Microsoft Defender for Endpoint | OAuth2 Client Credentials | 隔离/解除隔离计算机,防病毒扫描,封禁 IP/URL/哈希,收集调查包 | | VirusTotal | API 密钥 | 文件哈希,IP,域名,URL 信誉查询 | | AbuseIPDB | API 密钥 | IP 信誉检查,报告恶意 IP | 所有凭证在静态存储时均使用 AES-256-GCM 加密。每个集成都支持试运行模式和自动化健康检查。 ## 入门指南 ### 前置条件 - Docker 和 Docker Compose - Node.js 20+ (用于本地前端开发) - Python 3.11+ (用于本地后端开发) ### 使用 Docker 快速开始 ``` cd my-app docker-compose up --build ``` 首次运行时,创建数据库表: ``` docker-compose exec backend python -c " import asyncio from app.database import engine from app.models.base import Base import app.models async def init(): async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) print('Tables created') asyncio.run(init()) " ``` 注册您的第一位用户: ``` curl -X POST http://localhost:8000/api/v1/auth/register \ -H "Content-Type: application/json" \ -d '{"email": "admin@example.com", "password": "changeme", "full_name": "Admin", "role": "admin"}' ``` 服务将可通过以下地址访问: - **前端**: http://localhost:5173 - **后端 API**: http://localhost:8000 - **API 文档**: http://localhost:8000/docs - **API 文档**: http://localhost:8000/redoc ### 本地开发 **后端:** ``` cd my-app/backend python3 -m venv .venv source .venv/bin/activate pip install -e ".[dev]" # 启动 PostgreSQL 和 Redis (通过 Docker 或本地) docker-compose up postgres redis -d # 运行 migrations alembic upgrade head # 启动服务器 uvicorn app.main:app --reload ``` **前端:** ``` cd my-app/frontend npm install npm run dev ``` ### 环境变量 将 `.env.example` 复制到 `.env` 并进行配置: ``` # Required CANE_DATABASE_URL=postgresql+asyncpg://cane:cane_secret@localhost:5432/cane_db CANE_REDIS_URL=redis://localhost:6379/0 CANE_JWT_SECRET_KEY=your-secret-key-here CANE_ENCRYPTION_MASTER_KEY=your-encryption-key-here # Automated AI Triage (设置 API key 以启用) CANE_AUTO_TRIAGE_ENABLED=true CANE_AUTO_TRIAGE_PROVIDER=claude # claude, openai, or azure_openai CANE_AUTO_TRIAGE_API_KEY=sk-ant-... # System-level LLM API key CANE_AUTO_TRIAGE_MODEL= # Optional model override # Auto-enrichment (在 AI triage 前查询 threat intel) CANE_AUTO_ENRICHMENT_ENABLED=true CANE_AUTO_ENRICHMENT_MAX_IOCS=4 # Max IOCs per type to query (rate limit control) # Auto-containment 阈值 CANE_AUTO_RESPONSE_CONFIDENCE_THRESHOLD=0.95 # Actions above this auto-execute ``` 当设置 `CANE_AUTO_TRIAGE_API_KEY` 后,完整的 TDIR 流水线将自动运行: 1. 从关联日志中创建事件 2. 提取 IOC 并在 VirusTotal/AbuseIPDB 中进行查询 (如果在 设置 > 集成 中进行了配置) 3. AI 使用富化数据对事件进行分诊 4. 高置信度操作通过集成自动执行;其他操作排队等待分析师审批 ## API 概览 | 接口分组 | 路由 | 描述 | |---------------|--------|-------------| | `/api/v1/auth` | 3 | 注册,登录,刷新 token | | `/api/v1/users` | 6 | 个人资料,角色,API 密钥管理 | | `/api/v1/logs` | 5 | 摄取,批量处理,上传,查询,schemas | | `/api/v1/incidents` | 9 | CRUD,分配,升级,关闭,时间线,证据,备注 | | `/api/v1/triage` | 4 | AI 分析,结果,建议,关联 | | `/api/v1/playbooks` | 8 | CRUD,步骤,执行 | | `/api/v1/actions` | 4 | 执行,批准,拒绝,历史记录 | | `/api/v1/dashboard` | 4 | 概览,威胁,地理位置,时间线 | | `/api/v1/integrations` | 8 | CRUD,平台,测试,健康状态 | ## 基于角色的访问控制 | 操作 | L1 分析师 | L2 分析师 | 经理 | 管理员 | |--------|--------|---------|-------|-------| | 查看事件与日志 | 是 | 是 | 是 | 是 | | 分诊事件 | 是 | 是 | 是 | 是 | | 批准/执行操作 | 否 | 是 | 是 | 是 | | 管理剧本 | 否 | 否 | 是 | 是 | | 管理集成 | 否 | 否 | 否 | 是 | | 管理用户 | 否 | 否 | 否 | 是 | ## 安全性 - JWT 认证,具有短期访问 token (15 分钟) 和可轮换的刷新 token (7 天) - 对所有存储的 API 密钥和集成凭证使用 AES-256-GCM 加密 - 所有端点均采用基于角色的访问控制 - 带有审计跟踪的请求日志中间件 - 针对前端来源的 CORS 配置 - 通过 Pydantic 对所有 API 端点进行输入验证 ## 许可证 MIT
标签:AbuseIPDB, AI安全, ASIM, Ask搜索, Azure OpenAI, Azure Sentinel, BYOK, Chat Copilot, Claude, Cloudflare, CVE检测, DDoS防御, DLL 劫持, IOC提取, IPS, IP 地址批量处理, IT运维, LLM, MITRE ATT&CK, NIST 800-61, OpenAI, PE 加载器, Playbook, SOAR, Socks5代理, TDIR, Unmanaged PE, VirusTotal, 主机隔离, 事件关联分析, 事件响应生命周期, 内存规避, 内部威胁, 勒索软件响应, 大语言模型, 大语言模型蜜罐, 失陷标示, 威胁情报富化, 威胁检测与响应, 安全事件响应平台, 安全信息与事件管理, 安全剧本, 安全运营中心, 库, 应急响应, 微软安全日志, 恶意软件, 搜索引擎查询, 搜索引擎爬取, 数据渗出, 日志规范化, 日志采集, 智能安防, 未授权访问, 杀伤链, 测试用例, 网络安全, 网络映射, 自动化响应, 自动封禁, 自动遏制, 蜜罐隔离, 请求拦截, 逆向工具, 钓鱼攻击响应, 隐私保护