mohTalib/AACDI

GitHub: mohTalib/AACDI

AACDI是一个利用Claude大语言模型对安全事件进行推理分析并产生可操作决策的实验性AI安全分析系统,旨在解决告警疲劳和规则检测的局限性。

Stars: 0 | Forks: 0

# AACDI — 自适应对抗性网络防御智能系统
![Version](https://img.shields.io/badge/AACDI-v1.0-00e87a?style=for-the-badge) ![Status](https://img.shields.io/badge/status-proof_of_concept-ffb800?style=for-the-badge) ![Python](https://img.shields.io/badge/Python-3.12-3776ab?style=for-the-badge&logo=python&logoColor=white) ![React](https://img.shields.io/badge/React-18-61dafb?style=for-the-badge&logo=react&logoColor=black) ![FastAPI](https://img.shields.io/badge/FastAPI-0.115-009688?style=for-the-badge&logo=fastapi&logoColor=white) ![Redis](https://img.shields.io/badge/Redis-7.4-dc382d?style=for-the-badge&logo=redis&logoColor=white) ![Claude](https://img.shields.io/badge/Powered_by-Claude_AI-cc77?style=for-the-badge) **一个由AI驱动的网络安全智能系统,它像防御者一样思考,** **像战略家一样推理,像反情报人员一样实施欺骗。** [快速开始](#getting-started-local-development) • [架构](ARCHITECTURE.md) • [集成](INTEGRATIONS.md) • [欺骗层](DECEPTION.md)
## 目录 - [什么是AACDI?](#what-is-aacdi) - [演示](#record) - [为什么存在这个项目](#why-this-exists) - [它解决的核心问题](#the-core-problem-it-solves) - [核心能力](#key-capabilities) - [工作原理](#how-it-works) - [四种决策](#the-four-decisions) - [项目结构](#project-structure) - [组件详解](#component-deep-dive) - [仪表板](#the-dashboard) - [快速开始](#getting-started-local-development) - [运行模拟](#running-simulations) - [AI对抗AI模式](#ai-vs-ai-mode) - [技术栈](#technology-stack) - [安全注意事项](#security-considerations) - [已知限制](#known-limitations) - [研究背景](#research-background) ## 什么是AACDI? AACDI是一个实验性的AI驱动的安全分析系统,介于您现有的安全工具和安全团队之间。它从SIEM、EDR平台、防火墙和IDS系统摄取原始安全事件,然后使用Claude(Anthropic的大语言模型)对攻击者行为进行推理,并产生可操作的决策。 与现有工具的根本区别:**AACDI不会将事件与规则进行匹配。它会对其进行推理。** 当SIEM触发10,000条告警时,AACDI会将它们作为叙事来阅读——询问攻击者试图完成什么,他们的技能如何,他们接下来会做什么,以及欺骗他们是否比阻止他们能获得更多情报。 这是一个研究项目,展示了在以下情况下架构上可能实现的功能: - 具备完整安全上下文的大语言模型推理 - 有状态的记忆,跨时间持久化攻击者行为画像 - 第四种决策(欺骗),这是现有安全产品都不提供的 - 攻击者认知模型的实时可视化 ## 演示 https://github.com/user-attachments/assets/11fb1267-3853-40fd-92a0-645d5d41cf41 ## 示例

--- ## 为什么存在这个项目 三个根本性问题推动了这个项目的创建: ### 1. 告警疲劳是入侵成功的首要原因 平均每个组织每天产生数十万条安全告警。研究一致显示,其中不到5%是真正的威胁。安全分析师70–80%的时间花在分类上——阅读告警、决定是否升级——而不是威胁狩猎。真正的攻击通常比这些噪音更安静、更复杂,被埋没人永远不会reach的积压中。 AACDI通过将数千条告警压缩为每天2–5个决策来解决这个问题。不是分数。不是风险评级。而是决策:忽略、监视、阻止或欺骗。 ### 2. 规则无法检测它们未被编写用于检测的内容 SIEM检测规则匹配已知的攻击模式。新颖的技术、新的离地攻击方法,或低于每个单独阈值的慢热APT活动,对基于规则的系统来说基本上是不可见的。每个单独的事件看起来都是良性的。只有序列才能讲述故事。 AACDI对序列进行推理。上午9点进行DNS查询、上午11点访问敏感文件、下午2点运行PowerShell的IP是一个演员在一个活动中——即使没有单个事件超过任何阈值。 ### 3. 防御始终是被动的——直到你选择不被动 攻击者选择何时移动、攻击什么以及如何适应。防御者做出反应。这是一种基于规则的系统无法逃脱的不对称劣势。 欺骗决策改变了动态。与其阻止检测到的攻击者并失去可见性,AACDI可以推理其情报价值是否超过其直接风险——如果是,则设计一个欺骗环境,为他们提供虚假数据,消耗他们的时间,并在他们相信自己正在取得进展时提取有关他们的工具、目标和基础设施的信息。 ## 它解决的核心问题 ``` Before AACDI: 07:00 — Analyst arrives 07:05 — Opens SIEM dashboard 07:06 — Sees 847 alerts from overnight 11:00 — Still triaging. Alert #312 is the real attack. Hasn't been read yet. 16:00 — Shift ends. Alert #312 still in queue. Day 3 — The breach is discovered by accident. With AACDI: 07:00 — Analyst arrives 07:01 — Checks Slack: 2 notifications overnight → BLOCK: credential stuffing on VPN, one success on hr_admin account → DECEIVE: stealthy recon from 45.33.32.156, APT-level patience, deception deployed, attacker is now in honeypot environment 07:30 — Both incidents handled. The rest of the day is actual work. ``` ## 核心能力 ### 核心分析引擎 - **10层认知管道**在每个事件批次上运行——上下文理解 → 行为基线 → 对抗信号检测 → 攻击者画像 → 竞争假设 → 对抗思维 → 战略决策 → 欺骗规划 → 结果模拟 → 元学习 - **有状态的会话记忆**——每次分析都建立在会话的完整历史之上。系统理解上午9点扫描端口和下午2点访问凭证的是同一演员在同一活动中 - **攻击者画像**——分类技能水平(脚本小子/僵尸/人工操作员/APT),估计意图,跟踪两者如何随着更多证据积累而演变 - **竞争假设生成**——始终产生良性和恶意解释,按证据和概率评分,防止困扰人类分析师的确认偏差 - **下一步预测**——基于当前行为模式和已知攻击链演进的top 3预测攻击行动及概率估计 - **结果模拟**——为每个可能的决策权衡建模:安全风险vs情报获取vs业务影响vs攻击者意识 ### 多攻击者情报 - 将每个唯一源IP作为单独的攻击者进行跟踪,具有独立的画像、杀伤链重建、行为DNA指纹和分析历史 - 并排攻击者比较,包含双雷达图表和一对一统计表 - 每个仪表板选项卡上的每攻击者过滤——分析、时间线、攻击路径、双视图、热图、日志都过滤到所选攻击者的特定活动 ### 可视化情报层(11个组件) - **实时D3力导向图**——带物理模拟的实体关系可视化、基于风险的着色、脉动活跃节点和紫色欺骗节点高亮 - **行为DNA指纹**——6个轴(隐形、速度、精度、持久性、工具、适应性)的变形六边形雷达,显示跨分析周期的能力演变 - **攻击链重建**——自动杀伤链检测,可视化为水平阶段节点,带事件分组和点击深入 - **预测风险热图**——按下一个被攻击的概率对10个系统类别进行评分,当Claude的预测提及该类别时提升 - **双视图模式**——防御者推理和预测的攻击者思维并排,带动画翻转过渡 - **演变时间线**——技能/信心/隐形/风险图表,决策徽章直接标记在线上 - **攻击者比较**——任意两个攻击者的双雷达叠加,带一对一统计和AI裁决 - **告警弹窗**——阻止/欺骗决策的滑入通知,带自动消失倒计时条 - **会话管理器**——在独立监控环境之间切换,带每个环境的实时统计 ### 欺骗执行引擎 - 解析Claude的自然语言欺骗计划并自动部署物理资产 - 生成逼真的蜜罐文件(假财务报告、工资数据库、生产配置、VPN凭证),包含可信但虚假的数据 - 创建蜜罐凭证、假AWS访问密钥(AKIA格式)、GitHub PAT(ghp_格式)、API令牌和数据库连接字符串 - 部署交互式蜜罐服务——带完整shell会话日志的假SSH服务器、假HTTP管理面板、假DB/FTP端口监听器 - 金丝雀令牌服务器——文件中嵌入的跟踪URL在凭证使用前检测文档访问 - 完整交互报告——每个攻击者对欺骗资产的行动都作为确认的CRIT事件流回AACDI ### 集成层 - **SIEM:** Splunk(REST API轮询+脚本化告警操作Microsoft Sentinel(KQL查询+安全事件API)、IBM QRadar(违规API)、Elastic SIEM(检测告警索引) - **EDR:** CrowdStrike Falcon(流API+检测+事件)、SentinelOne(威胁+活动API)、Microsoft Defender for Endpoint(图形安全API) - **网络:** Palo Alto NGFW(XML API)、Suricata IDS(eve.json实时尾部)、Zeek(notice.log+conn.log)、Cisco ASA/FTD(syslog)、通用syslog接收器(Fortinet、pfSense、Check Point)、DNS查询日志监控 - **编排器:** 主进程带systemd服务、定时执行、健康监控、失败连接器的自动重启 ## 工作原理 ``` Your security tools (Splunk, CrowdStrike, Palo Alto, Suricata...) │ │ POST /api/ingest (JSON event batch, X-API-Key header) ▼ nginx (TLS, rate limiting, port 80/443) │ ▼ FastAPI backend ├─ Validate API key → check Redis hash ├─ Enrich IP → AbuseIPDB / offline blocklist / IOC store ├─ Push event to Redis (ring buffer + pending queue) ├─ Pending count >= ANALYSIS_BATCH_SIZE (default 6)? │ └─ Yes: lock session, drain pending queue │ │ │ ▼ │ Claude API call (server-side) │ ├─ System prompt: 10-layer AACDI cognitive engine │ ├─ User message: event batch + session history + stats │ └─ Response: 10 structured sections │ │ │ ▼ │ Parse response │ ├─ Extract attacker profile (skill, confidence, intent, type) │ ├─ Compute risk score (skill × 0.55 + confidence × 0.45) │ ├─ Extract decision (IGNORE/MONITOR/BLOCK/DECEIVE) │ └─ Extract deception plan if DECEIVE │ │ │ ▼ │ Update Redis session state │ Broadcast via WebSocket to all browser tabs │ Fire alerts async (Slack, PagerDuty, webhook, email) │ Trigger deception executor webhook if DECEIVE │ └─ Stream events to browser via WebSocket /ws/{session_id} │ ▼ React dashboard ├─ Renders all 11 visualization components ├─ Persists UI state to localStorage (survives refresh) └─ Per-attacker filtering on every tab ``` ## 四种决策 每个分析周期正好产生一个决策。这是故意的——一个明确的答案,而不是分析师仍需解释的概率分布。 | 决策 | 发出条件 | 含义 | 操作 | |----------|-------------|---------|--------| | **忽略** | 完整分析后模式确认为良性 | 不是威胁。合法活动、误报或已知良好的自动化。 | 无需操作。记录即可。 | | **监视** | 可疑但置信度不足 | 异常行为尚未构成明确威胁。可能升级。 | 观察。缩短告警阈值。不要触碰。 | | **阻止** | 高置信度威胁、即时风险 | 确认的恶意活动。继续访问会造成损害。 | 防火墙规则、账户锁定、网络隔离。执行。 | | **欺骗** | 高技能攻击者且情报价值高 | 现在阻止会失去对完整目标和基础设施的可见性。值得研究而非阻止。 | 部署蜜罐资产。提供虚假数据。观察每个行动。 | 欺骗决策在架构上是独特的。没有SIEM可以发出它,因为没有SIEM有攻击者意图模型,也没有能力推理继续访问的情报价值与继续暴露的风险之间的权衡。这种权衡需要上下文推理。 ## 项目结构 ``` aacdi/ ├── backend/ FastAPI application │ ├── main.py All endpoints, WebSocket, pipeline orchestration │ ├── aacdi_engine.py Claude API calls, prompt construction, response parsing │ ├── session_store.py Redis-backed stateful memory layer │ ├── models.py Pydantic schemas for all data types │ ├── auth.py JWT + API key authentication │ ├── alerts.py Slack, PagerDuty, webhook, SMTP notifications │ ├── threat_intel.py IP enrichment — AbuseIPDB, VirusTotal, IOC store │ ├── attacker_agent.py AI attacker agent for AI vs AI simulation │ ├── observability.py Structured logging, Prometheus metrics │ ├── requirements.txt │ └── Dockerfile │ ├── frontend/ React application │ ├── src/ │ │ ├── App.jsx Root — WebSocket, state, routing, localStorage │ │ └── components/ │ │ ├── AttackerList.jsx Left panel attacker roster │ │ ├── AttackerProfile.jsx Per-attacker detail view │ │ ├── AttackerMindGraph.jsx D3 force graph (with sanitization fix) │ │ ├── EvolutionTimeline.jsx Risk/skill evolution chart │ │ ├── DNAFingerprint.jsx Morphing D3 behavioral radar │ │ ├── AttackPath.jsx Kill chain visualization │ │ ├── DualView.jsx Defender/attacker perspective toggle │ │ ├── SystemHeatmap.jsx Predictive risk heatmap │ │ ├── AttackerCompare.jsx Side-by-side attacker comparison │ │ ├── AlertToasts.jsx Real-time decision notifications │ │ └── SessionManager.jsx Multi-session switcher │ ├── index.html │ ├── package.json │ ├── vite.config.js │ ├── nginx.conf │ └── Dockerfile │ ├── integrations/ SIEM, EDR, and network connectors │ ├── orchestrator.py Master process with scheduling and health monitoring │ ├── shared/ │ │ └── aacdi_client.py Shared HTTP client (retry, batching, sanitization) │ ├── siem/ │ │ ├── splunk_connector.py Splunk REST API + scripted alert action │ │ ├── sentinel_connector.py Microsoft Sentinel KQL + Incidents API │ │ └── qradar_elastic_connector.py IBM QRadar + Elastic SIEM │ ├── edr/ │ │ └── edr_connectors.py CrowdStrike, SentinelOne, Defender for Endpoint │ ├── network/ │ │ └── network_connectors.py Palo Alto, Suricata, Zeek, Syslog, DNS │ ├── DEPLOYMENT.sh Step-by-step production deployment guide │ └── requirements.txt │ ├── deception/ Active deception execution layer │ ├── executor.py Plan parser, asset generator, interaction monitor, webhook server │ ├── honey_services.py Fake SSH, HTTP admin panel, FTP, DB port listeners │ ├── canary_server.py HTTP tracking beacon for honey token detection │ └── requirements.txt │ ├── nginx/ │ └── aacdi-production.nginx.conf Hardened production nginx config (TLS, rate limiting) │ ├── sensor_sim.py 8-scenario attack simulator for testing without real infrastructure ├── docker-compose.yml Full stack: Redis + FastAPI + React/nginx ├── .env.example All configuration variables documented ├── README.md This file ├── INTEGRATIONS.md Full integration guide for all supported platforms ├── DECEPTION.md Deception layer technical documentation └── ARCHITECTURE.md System diagrams and component relationships ``` ## 组件详解 ### AACDI系统提示 Claude系统提示是本项目中最重要的单个部分。它定义了10个认知层: 1. **上下文理解**——构建时间线、识别关系、检测序列(登录→提权→横向移动) 2. **行为基线比较**——与正常模式比较、检测细微偏差、识别不可能的组合 3. **对抗信号检测**——侦察模式、凭证滥用、横向移动指标、数据暂存、持久性机制、低慢速隐形 4. **攻击者画像引擎**——估计技能水平、意图、信心。将AI般的精度(太干净、最优)标记为APT指标 5. **竞争假设生成**——始终生成良性和恶意解释,按证据评分。永不急于得出结论 6. **对抗思维**——模拟攻击者心态:他们的下一个合理行动是什么?他们试图确认什么?缺少什么信号? 7. **战略决策引擎**——选择一个:忽略/监视/阻止/欺骗 8. **欺骗引擎**——如果是欺骗:设计特定的蜜罐资产、虚假凭证,定制给这个攻击者正在寻找的东西 9. **结果模拟**——为所有选项建模:安全风险、情报获取、业务影响、每个选择下攻击者的意识 10. **元学习**——之前的决策有效吗?攻击者行为改变了吗?欺骗被发现了吗?更新策略权重 ### Redis数据模型 ``` aacdi:session:{sid} SessionState JSON — total events, analyses, risk, threat level, profile aacdi:events:{sid} List — event ring buffer, 500 max (LPUSH + LTRIM) aacdi:pending:{sid} List — analysis batch queue (atomically drained) aacdi:analyses:{sid} List — 50 most recent analysis results aacdi:risk:{sid} List — 100 risk score data points for timeline chart aacdi:deception:{sid} List — 20 most recent deployed deception assets aacdi:counter:{sid} Integer — monotonic event ID counter (INCR) aacdi:apikeys Hash — SHA-256 hashed key → metadata JSON aacdi:users Hash — username → hashed password + roles JSON aacdi:iocs:{type} Hash — IOC value → source + confidence metadata aacdi:ti:{ip} String — threat intel cache, 1-hour TTL ``` 所有会话键都有7天TTL。Redis AOF持久化已启用。所有数据在容器重启后都能保留。 ### WebSocket协议 ``` Server → Browser: session_state Full snapshot on connect (events, analyses, risk_hist, deceptions) event Single new event arriving (real-time feed) analysis Complete analysis result + updated session state + deceptions status Engine status: ANALYZING / ACTIVE / ERROR error Error details Browser → Server: analyze Force analysis cycle immediately (the ⟳ ANALYZE button) ingest Push events via WebSocket (alternative to HTTP POST) attacker_next Trigger AI attacker agent for next move (the 🤖 AI ATTACK button) ping Keepalive ``` WebSocket URL包含会话ID和可选JWT令牌:`/ws/{session_id}?token={jwt}`。使用`AUTH_ENABLED=false`(本地开发)时,不需要令牌。 ### 攻击者画像提取 画像提取使用对Claude的ATTACKER MODEL部分输出的文本匹配: ``` "APT" / "nation state" / "advanced persistent" → skill = 92 "human operator" / "skilled" / "manual" → skill = 68 "bot" / "automated" / "scripted" → skill = 42 "script kiddie" / "low-skill" / "unsophisticated" → skill = 18 Risk score = (skill × 0.55) + (confidence × 0.45) ``` 置信度值从文本中找到的第一个百分比中提取。意图与已知的攻击阶段关键字匹配。两者都为DNA指纹雷达图表提供数据。 ### D3思维图——关键实现细节 力导向图通过React refs将SVG DOM的所有权交给D3。关键实现说明: - **Windows路径崩溃修复**——所有节点ID通过`sanitizeId()`传递,剥离`\`、`:`、`*`、`?`、`"`、`<`、`>`、`|`,然后D3才会看到它们。没有这个,Windows文件路径如`C:\Windows\System32\...`会导致模拟崩溃,提示`Cannot create property 'vx' on string` - 节点通过`easeElasticOut`弹性动画从半径0进入 - 活跃节点(最近8个事件)通过扩展环CSS动画脉动 - 欺骗节点获得紫色旋转虚线轨道环,带`stroke-dashoffset`动画 - 关键/高风险节点通过SVG ``获得`feGaussianBlur`发光滤镜 - D3拖动行为附加到enter选择 - 模拟使用`forceManyBody(-300)`、`forceLink(0.4)`、``forceCenter(0.05)`、`forceCollide` - 图形数据在每个事件/欺骗更新时通过`buildGraph()`纯函数重建 ## 仪表板 仪表板是一个实时React应用程序,通过持久WebSocket连接到后端。所有数据从后端流动——没有数据是在客户端生成的。 ### 每攻击者上下文 从左侧面板名单中选择攻击者时: - 绿色过滤徽章出现在标题中,显示所选IP - 所有选项卡过滤为仅显示与该攻击者相关的事件和分析 - 每个选项卡中出现蓝色/紫色上下文横幅,说明正在过滤的内容 - 右侧的事件提要仅显示该攻击者的事件 - "显示全部"按钮恢复全局视图 状态持久化:选择攻击者`45.33.32.156`并切换到时间线选项卡,然后刷新页面,会恢复所选攻击者和时间线选项卡。 ### 选项卡参考 | 选项卡 | 用途 | 过滤到所选攻击者? | |-------|---------|-------------------------------| | 攻击者 | 完整每攻击者画像,带雷达和事件日志 | 显示所选攻击者的画像 | | 思维图 | 实时D3实体图 | 过滤到所选攻击者的节点/边 | | 热图 | 按系统类别的预测风险 | 过滤到所选攻击者的目标 | | 分析 | Claude的10段分析输出 | 显示提及所选IP的最新分析 | | 时间线 | 技能/风险随时间的演变 | 过滤到提及所选IP的分析 | | 攻击路径 | 杀伤链重建 | 仅从所选攻击者的事件构建链 | | 双视图 | 防御者+攻击者视角 | 使用与所选攻击者相关的分析 | | 比较 | 并排两攻击者比较 | 预加载所选攻击者为攻击者A | | 欺骗 | 活跃的欺骗陷阱 | 过滤到针对所选IP部署的陷阱 | | 日志 | 决策历史 | 过滤到提及所选IP的分析 | | 会话 | 多会话切换器 | 与攻击者选择无关 | ## 快速开始(本地开发) ### 唯一的前提条件:Docker Desktop 一切都在容器中运行。您不需要在本地安装Python、Node或Redis。 ``` # 解压并进入项目 unzip AACDI-fullstack-v5.zip cd aacdi # 从模板创建 .env cp .env.example .env ``` 打开`.env`并设置这两个值: ``` ANTHROPIC_API_KEY=sk-ant-your-actual-key-here REDIS_PASSWORD=anything123 ``` 对于Windows,还要设置: ``` AUTH_ENABLED=false ALLOWED_ORIGINS=* VITE_API_URL=http://localhost:8000 VITE_WS_URL=ws://localhost:8000 ``` **Windows重要提示:** 在`docker-compose.yml`中,Redis服务命令必须硬编码,不使用变量: ``` command: redis-server --requirepass anything123 --maxmemory 512mb --maxmemory-policy allkeys-lru ``` **所有平台重要提示:** 在`backend/main.py`中,用以下内容替换CORS中间件: ``` app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=False, allow_methods=["*"], allow_headers=["*"], ) ``` ``` # 启动完整堆栈(首次运行需要2-3分钟来构建镜像) docker compose up --build ``` 当您看到: ``` aacdi-backend | INFO AACDI v2 backend ready aacdi-frontend | nginx: worker process started ``` 打开`http://localhost`——仪表板已上线。 ### 首次测试 点击顶部栏的**⚡ 注入**。这会推送9个来自3个不同攻击者IP的预构建事件,模拟端口扫描、权限提升、凭证转储、横向移动和数据泄露。10–15秒后: 1. 事件出现在右侧提要中 2. 3个攻击者条目出现在左侧面板名单中 3. "认知引擎活跃"在选项卡栏中闪烁 4. 分析选项卡填充了Claude的完整推理 5. 思维图填充了实体节点和边 6. 如果决策是阻止或欺骗,可能会出现弹窗通知 7. 点击左侧面板中的任何攻击者会将所有选项卡过滤到该IP ## 运行模拟 `sensor_sim.py`脚本生成现实的攻击场景,无需任何真实的安全基础设施。 ``` # 安装唯一依赖项 pip install httpx # APT 攻击活动 — 6个阶段,隐蔽,最有趣的场景 python sensor_sim.py --scenario apt_campaign --session apt-test --duration 300 # 打开:http://localhost/?session=apt-test # 多攻击者 — 3个同时参与者,最佳的每攻击者追踪测试 python sensor_sim.py --scenario multi_attacker --session multi-test # 国家级 — 最复杂,5个阶段 python sensor_sim.py --scenario nation_state --session nation-test --duration 600 # 勒索软件 — 快速且具有破坏性 python sensor_sim.py --scenario ransomware --session ransom-test # 供应链攻击 python sensor_sim.py --scenario supply_chain --session supply-test # 内部威胁 — 缓慢且持久,看起来几乎合法 python sensor_sim.py --scenario insider_threat --session insider-test # 随机场景 python sensor_sim.py --scenario random ``` 每个场景在它自己的会话中运行。使用`?session=`打开多个浏览器选项同时监控它们——这模拟了同时监视多个网络段。 ### 可用场景 | 场景 | 阶段 | 攻击者数量 | 描述 | |----------|--------|----------------|-------------| | `apt_campaign` | 6 | 1 | 侦察→鱼叉式钓鱼→提权→横向→暂存→泄露 | | `ransomware` | 3 | 1 | VPN暴力破解→网络访问→大规模加密 | | `insider_threat` | 3 | 1 | 合法用户访问未授权数据并泄露 | | `credential_stuffing` | 3 | 1 | 批量登录尝试→成功入侵 | | `data_exfil` | 3 | 1 | API滥用→暂存→泄露 | | `multi_attacker` | 4 | 3 | 三个同时行动者(APT+勒索软件+内鬼) | | `nation_state` | 5 | 1 | CEO鱼叉式钓鱼→域名入侵→IP盗窃 | | `supply_chain` | 4 | 1 | 被入侵的npm包→反向shell→数据盗窃 | ## AI对抗AI模式 最具技术趣味的功能。第二个Claude实例扮演攻击者,适应防御者的决策,并故意做与防御者预测相反的事情。 ``` # 从仪表板触发:点击 🤖 AI ATTACK # 通过 API 触发: curl -X POST http://localhost:8000/api/attacker/default/next \ -H "Content-Type: application/json" \ -d '{}' ``` ### 攻击者状态机 ``` RECON → INITIAL_ACCESS → EXECUTION → PRIVILEGE_ESCALATION → LATERAL_MOVEMENT → COLLECTION → EXFILTRATION ``` ### 适应逻辑 | 防御者决策 | 攻击者响应 | |------------------|-------------------| | 阻止 | 切换到隐形模式,改变技术,降低事件频率 | | 欺骗 | 40%概率检测到蜜罐。如果检测到:后退,改变方法。如果未检测到:继续进入陷阱。 | | 监视 | 增加检测计数器,可能继续当前阶段或转向 | | 忽略 | 进入下一攻击阶段,升级攻击性 | 攻击者还会阅读防御者的下一步预测部分并故意做相反的事情。如果AACDI预测"接下来尝试凭证转储",攻击者会先转向横向移动。这模拟了真实威胁情报操作中的猫鼠动态。 ## 技术栈 | 层 | 技术 | 选择原因 | |-------|-----------|-------------------| | AI引擎 | Anthropic Claude Sonnet 4 | 多步安全分析的最佳推理。API密钥保留在服务端——永不到达浏览器。 | | 后端 | FastAPI + Uvicorn | 异步Python、原生WebSocket支持、`/api/docs`自动OpenAPI文档、优秀性能 | | 状态 | Redis 7 | O(1)列表操作用于事件队列、TTL用于会话过期、AOF持久化、pub/sub准备好多工作器扩展 | | 前端 | React 18 + Vite | 组件模型、开发中快速HMR、带代码分割的小生产包 | | 力导向图 | D3.js v7 | 需要直接DOM操作用于模拟tick循环——React无法管理D3的动画状态 | | 图表 | Recharts | 声明式React图表,数据变化时正确重新渲染 | | 反向代理 | nginx | TLS终止、WebSocket升级头、静态文件服务带激进缓存、速率限制 | | 容器 | Docker Compose | 单命令部署、网络隔离、可重现环境 | | 认证 | JWT + SHA-256 API密钥 | UI无状态,传感器集成简单 | | 威胁情报 | AbuseIPDB / VirusTotal | 可选的IP信誉检查,Redis缓存1小时 | ## 安全注意事项 **API密钥暴露**——Anthropic API密钥是容器中的环境变量。在任何网络可访问的部署之前,使用适当的密钥管理器(HashiCorp Vault、AWS Secrets Manager)。 **`AUTH_ENABLED=false`仅用于本地测试**——禁用认证后,任何能到达端口8000的人都可以推送事件、读取所有分析并控制攻击者代理。永远不要在网络上以认证禁用状态部署。 **JWT密钥`localtestsecret`必须替换**——生成加密随机的64字符密钥:`python3 -c "import secrets; print(secrets.token_hex(32))"`。 **Redis在默认配置中没有TLS**——所有事件、分析和会话数据在后端和Redis之间以明文传输。在任何敏感环境中启用Redis TLS。 **欺骗层的法律风险是真实的**——在您不拥有的基础设施上部署蜜罐或蜜罐凭证,或没有明确的书面授权,在大多数司法管辖区根据计算机欺诈和滥用法规(美国的CFAA、英国的《计算机滥用法》等)是违法的。欺骗层是架构上可能实现的概念证明。在使用之前获得法律批准。 **AACDI决策是建议性的**——系统可能会出错。忽略决策不会将某物认证为安全。阻止决策不会将某物认证为恶意。将每个决策视为人类判断的输入,而不是事实真相。 **提示注入是可能的**——没有防御能阻止攻击者特意制作事件字段值来操纵Claude的输出。足够复杂的攻击者如果控制了流入AACDI的事件,可能会影响分析结果。这是所有处理不可信输入的LLM系统的已知限制。 ## 已知限制 - **单工作器WebSocket**——WebSocket连接在Python字典中跟踪。多个uvicorn工作器不共享连接状态。扩展需要Redis pub/sub进行跨工作器广播。 - **没有自动响应执行**——AACDI做出决策。它不执行行动。SOAR集成留作练习。 - **仅限英语**——系统提示和所有解析假设英语Claude输出。 - **上下文窗口扩展**——非常长的会话最终可能达到Claude的上下文限制。当前实现使用最后2个分析作为历史。向量数据库方法可以正确处理这个。 - **没有多租户**——所有能访问仪表板的用户都能看到所有会话。未实现每用户会话隔离。 - **欺骗执行器本地部署文件**——实际部署需要与您的文件分发机制(AD GPO、端点管理、网络共享)集成。 ## 研究背景 本项目借鉴了几个活跃的研究领域: **用于安全推理的AI**——LLM在代码漏洞检测和恶意软件分类方面表现出色。它们在SOC运营中的行为分析和战略决策应用是较新的领域。本项目测试LLM是否能执行经验丰富的L2/L3分析师所做的多步推理。 **主动网络防御**——从纯粹被动的安全转向主动的基于欺骗的防御。欺骗决策路径借鉴了Jajodia、Swarup、Schwartz和Gehling的学术网络欺骗工作,以及蜜罐、蜜罐网络和欺骗技术平台的实际实现。 **安全运营中的人机协作**——本系统不是取代分析师,而是尝试通过处理L1分类层来增强他们,让人类注意力集中在每天实际上需要人类判断的2–3种情况上。 **对抗性AI动态**——AI对抗AI模式探索当攻击者和防御者都使用基于LLM的推理时会发生什么。适应循环(防御者适应→攻击者适应→防御者演变)反映了对抗性交互的博弈论模型,特别是Stackelberg安全游戏。 ## 许可证 MIT许可证——详见`LICENSE`。 本许可证涵盖代码。它不授予在未经授权的情况下对系统或人员部署欺骗技术的权限。您的欺骗组件使用受您所在司法管辖区的法律管辖。本项目不构成法律或安全建议。
**作为探索AI驱动的网络防御的研究项目构建。** *概念验证。非生产就绪。非法律建议。非安全建议。* *部署蜜罐前获得许可。* **另请参阅:** [INTEGRATIONS.md](INTEGRATIONS.md) • [DECEPTION.md](DECEPTION.md) • [ARCHITECTURE.md](ARCHITECTURE.md)
标签:AI安全, AMSI绕过, AV绕过, BOF, Chat Copilot, Claude, CVE检测, DNS 反向解析, EDR, FastAPI, FTP漏洞扫描, HTTP工具, IP 地址批量处理, LLM, Python, React, Redis, Syscalls, Unmanaged PE, 事件分析, 人工智能, 威胁情报, 威胁检测, 安全分析平台, 安全编排, 安全运营, 开发者工具, 扫描框架, 无后门, 无线安全, 欺骗防御, 流量嗅探, 版权保护, 用户模式Hook绕过, 网络安全, 网络安全审计, 脆弱性评估, 自动化响应, 防火墙, 隐私保护