Chinmaya-cutm/Agentic-AI-Based-Cybercrime-Detection-and-Automated-Response-System

GitHub: Chinmaya-cutm/Agentic-AI-Based-Cybercrime-Detection-and-Automated-Response-System

一个结合机器学习分类与LLM Agent自主推理的网络安全检测与自动化模拟响应平台,旨在填补威胁检测与实际处置之间的响应空白。

Stars: 0 | Forks: 0

# 基于 Agentic AI 的网络犯罪检测与自动响应系统 一个 AI 驱动的网络安全平台,用于实时威胁检测、异常分析和自动化事件响应。它使用 Python、Streamlit 和机器学习模型构建,旨在识别 DDoS、Botnet 活动和 Brute-force 攻击等威胁,并提供 MITRE ATT&CK 映射、威胁情报、响应剧本和监控仪表板。 # 基于 Agentic AI 的网络犯罪检测与自动响应系统 **CyberShield Enterprise AI v3.0 — "Jarvis Edition"** ## 目录 - 问题陈述 - 项目功能 - 为什么是“Agentic” AI,而不仅仅是 ML - 系统架构 - 核心组件 - 技术栈 - 应用模块 - 机器学习流水线 - Jarvis Agent — 它是如何思考的 - 安全设计 - 数据库 Schema - 安装与设置 - 使用指南 - 已知局限与客观说明 - 未来展望 - 作者 ## 问题陈述 当今的网络犯罪演变的速度远超负责监控它的人类。一名 SOC 分析师收到警报后,必须打开五个不同的工具来了解情况,交叉比对威胁情报,决定响应措施,然后手动执行该响应——锁定账户、封禁 IP、隔离机器。当所有这些操作完成时,攻击造成的损害往往已经产生了。 大多数关于入侵检测的学术项目仅仅停留在解决这个问题的前半部分:训练一个模型,展示一个混淆矩阵,报告 95% 以上的准确率,然后就结束了。那只是一个检测系统,而不是一个防御系统。实际存在的差距——也就是让组织浪费真实时间和金钱的差距——在于“我们知道有攻击发生”和“我们已经采取了应对措施”之间。 **这个项目正是为了解决这一特定差距而生。** 它构建了一个系统,在这个系统中,AI Agent 不仅仅是标记威胁,而是主动对其进行调查,将其与真实的威胁情报进行交叉比对,并自主执行(模拟的)响应操作——就像一名初级 SOC 分析师那样,只是省去了延迟。 ## 项目功能 概括来说,CyberShield 接收网络流量数据,通过机器学习分类器进行处理,以确定其是良性流量还是几种已知攻击类型之一,然后将该结果交给 AI Agent 来决定下一步该怎么做。Agent 没有被硬编码为 `if attack == "DDoS": block_ip()` 逻辑——它被赋予了一组工具,并根据实际情况,真正推理出应该调用哪些工具以及调用的顺序。 在实践中,这意味着你可以登录到平台,上传一个流量捕获文件,然后要么观察自动化流水线端到端地运行,要么与 Agent 开启对话并询问诸如“*现在发生了什么*”或“*处理这个威胁*”——它会切实地去检查数据,从事件数据库中提取相关历史记录,交叉比对 MITRE ATT&CK 情报,并模拟正确的遏制操作,同时在整个过程中解释它的推理过程。 ## 为什么是“Agentic” AI,而不仅仅是 ML 这里项目标题做出了一个重要的区分,有必要将其明确解释一下: - **分类器**告诉你正在发生*什么*。(例如,“此流量模式是 DDoS 攻击,置信度 96%。”) - **Agent** 决定*对此采取什么行动*——通过多步推理,调用工具以收集更多上下文信息,并根据它发现的情况调整其行动,而不是遵循一条固定的规则。 这个项目中的 ML 模型(ExtraTrees + Isolation Forest)负责第一部分。而基于支持工具调用的 LLM(Groq 的 llama-3.3-70b-versatile)构建的 Jarvis Agent 则负责第二部分。它被赋予了 10 种不同的工具——检查实时威胁状态、查询历史事件、获取 MITRE 情报、模拟 IP 封禁、模拟账户锁定等等——并且它会在每一次请求中,逐轮自主决定调用哪些工具以及以何种顺序调用,每次请求最多进行 8 次推理迭代。这种*观察 → 推理 → 行动 → 重新评估*的循环,正是它成为“Agentic”的原因,而不仅仅是套在聊天机器人外面的一层包装。 ## 系统架构 ``` ┌─────────────────────────────────────┐ │ Network Traffic (CSV) │ └───────────────────┬───────────────────┘ │ ┌───────────────────▼───────────────────┐ │ DETECTION LAYER │ │ ExtraTreesClassifier (attack type) │ │ Isolation Forest (anomaly scoring) │ └───────────────────┬───────────────────┘ │ ┌───────────────────▼───────────────────┐ │ INTELLIGENCE LAYER │ │ MITRE ATT&CK mapping │ │ CVE cross-referencing │ │ IOC extraction │ └───────────────────┬───────────────────┘ │ ┌───────────────────▼───────────────────┐ │ AGENTIC RESPONSE LAYER │ │ Jarvis Agent (Groq llama-3.3-70b) │ │ 10 callable tools, up to 8 reasoning │ │ iterations, full conversation memory │ └───────────────────┬───────────────────┘ │ ┌───────────────────▼───────────────────┐ │ SELF-HEALING / AUDIT LAYER │ │ Threat-specific remediation playbooks │ │ Before/after state deltas → SQLite │ └─────────────────────────────────────────┘ ``` 支撑并环绕着这一切的是一个基于角色的、受 OTP + JWT 保护的访问层,因为一个可以触发安全操作的平台必须控制谁有权触发它们。 ## 核心组件 | 组件 | 用途 | |---|---| | **检测引擎** | 使用 ExtraTreesClassifier 将流量分类为良性 / DDoS / Botnet / Brute Force;并使用 Isolation Forest 标记异常值 | | **威胁情报模块** | 将每个检测到的威胁映射到 MITRE ATT&CK 技术 ID、相关的 CVE 以及妥协指标 | | **Jarvis Agent** | 支持工具调用的 LLM Agent,可自主进行调查、推理并模拟响应操作 | | **Jarvis AI (经典版)** | 一个更简单的基于规则的聊天机器人,在不需要 Agentic 推理时作为轻量级备选方案保留 | | **自愈引擎** | 执行自动化的、针对特定威胁的补救序列,并记录可衡量的前后影响 | | **事件与审计数据库** | 基于 SQLite,记录每个事件、登录事件和自愈操作,以实现完整的可追溯性 | | **认证层** | 邮箱 OTP + 自定义 JWT 会话,具有开发者 / 导师 / 利益相关者角色分离功能 | ## 技术栈 | 层级 | 技术 | |---|---| | UI / 应用框架 | Streamlit(完全自定义的暗色 UI,无默认主题) | | 机器学习 | scikit-learn — ExtraTreesClassifier, IsolationForest, StandardScaler | | Agentic AI | Groq API — llama-3.3-70b-versatile,函数/工具调用 | | 数据处理 | pandas, numpy | | 可视化 | Plotly (Express + Graph Objects) | | 数据库 | SQLite (WAL 模式) | | 身份验证 | 自定义 JWT (HMAC-SHA256) + 基于 SMTP 的邮箱 OTP | | 编程语言 | Python 3.10+ | ## 应用模块 | 模块 | 访问权限 | 你将在这里找到什么 | |---|---|---| | **仪表板** | 所有角色 | 实时威胁状态、关键检测指标、一键式自愈触发器 | | **威胁分析** | 所有角色 | 模型记分卡、混淆矩阵、各类别准确率、特征相关性 | | **事件数据库** | 所有角色 | 完整的历史记录——每个事件、登录事件和自愈运行 | | **AI 监控** | 所有角色 | 模型内部状态、特征重要性、实时/模拟的抓包结果 | | **响应引擎** | 开发者 / 导师 | 手动快速响应操作以及逐步的防御剧本 | | **MITRE ATT&CK** | 所有角色 | 技术映射、CVE 参考资料以及当前活跃威胁的 IOC | | **Jarvis AI** | 所有角色 | 基于规则的关键字助手(备用模式) | | **Jarvis Agent** | 所有角色 | 完整的 Agentic AI——使用实时工具进行调查、推理和行动 | ## 机器学习流水线 1. **数据摄取** — 上传 CSV 文件,为保障性能最多限制为 30,000 行,且必须包含 `Label` 列 2. **预处理** — 数值特征提取,处理 infinity/NaN 值,`VarianceThreshold` 特征选择,`StandardScaler` 归一化 3. **分类** — 在分层的 80/20 训练-测试集划分上运行 `ExtraTreesClassifier`(120 个估计器,最大深度 24,平衡的类别权重) 4. **异常检测** — 并行运行 `IsolationForest`(5% 污染度)以捕获与已知攻击特征不匹配的异常值 5. **评估** — 准确率、精确率、召回率、F1 分数、混淆矩阵以及各类别的置信度,所有这些都会在 UI 中实时显示 6. **风险评分** — 通过将检测到类别的基本严重程度与在上传数据中观察到的实际攻击与良性流量的比例相结合,计算出动态的风险评分 ## Jarvis Agent — 它是如何思考的 该 Agent 不是一个简单的单次提示和响应聊天机器人。每次你向它发送消息时,它都会进入一个循环: 1. 读取你的消息以及最近的 10 轮对话历史 2. 决定是否需要更多信息才能给出好的回答 3. 如果需要,则调用一个或多个工具(例如 `get_threat_status`、`query_incident_history`、`get_mitre_intel`) 4. 读取工具返回的结果,并决定是否已有足够的信息进行回答,还是需要调用更多工具 5. 最多重复 8 次,然后生成最终的自然语言回答 它可用的工具涵盖了**调查**(检查威胁状态、模型指标、MITRE 情报、过去的事件、自愈日志、顶部预测特征)和**行动**(模拟 IP 封禁、模拟账户锁定、强制执行 MFA、主机隔离、速率限制)。它采取的每一个行动都会被清晰地记录下来并标记为模拟操作——其目标是安全地展示自主决策能力,而不是让一个 LLM 在不受监督的情况下控制真实的基础设施。 ## 安全设计 - **身份验证:** 双因素认证——向用户发送电子邮件的一次性密码,并且只有在 OTP 验证成功后才会颁发自定义构建的 JWT(HMAC-SHA256 签名,有时间限制) - **访问控制:** 硬编码的电子邮件白名单限制了谁甚至可以尝试登录;角色(开发者、导师、利益相关者)则进一步限制他们在应用内能看到的内容和能执行的操作 - **可审计性:** 每次登录、注销和失败的登录尝试都会被写入 `login_audit` 表中;每一次自愈操作都会记录下可衡量的执行前后状态 - **会话完整性:** 使用恒定时间比较(`hmac.compare_digest`)来验证 JWT,以避免时序攻击 ## 数据库 Schema 应用在首次运行时会在本地配置一个 SQLite 数据库(`cybershield.db`): | 表名 | 存储内容 | |---|---| | `incidents` | 每次检测运行——威胁类型、严重程度、置信度、风险以及模型指标 | | `users` | 白名单账户、角色以及最后登录时间戳 | | `login_audit` | 每次登录、注销以及失败的认证尝试 | | `threat_intel_log` | 针对每个事件记录的 MITRE 映射 | | `self_heal_log` | 每次补救运行中逐步记录的前后状态增量变化 | ## 安装与设置 ### 前置条件 - Python 3.10 或更高版本 - 一个 Gmail 帐户,并在 support.google.com/accounts/answer/185833 生成应用密码(用于发送 OTP 邮件) - 从 console.groq.com 获取的免费 Groq API 密钥(用于为 Jarvis Agent 提供动力) ### 步骤 ``` git clone https://github.com/chinamaya_cutm/cybershield-enterprise-ai.git cd cybershield-enterprise-ai python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt ``` **requirements.txt** ``` streamlit pandas numpy scikit-learn plotly groq ``` ### 配置 将这些设置为环境变量——切勿在源代码中硬编码: ``` export CS_SENDER_EMAIL="your-email@gmail.com" export CS_APP_PASSWORD="your-gmail-app-password" export CS_JWT_SECRET="a-long-random-string-nobody-can-guess" export GROQ_API_KEY="gsk_your_groq_api_key" ``` ### 运行 ``` streamlit run app.py ``` ## 使用指南 1. 使用白名单中的电子邮件地址**登录**;系统会向你的收件箱发送一个 6 位数的 OTP,并且必须在 10 分钟内输入。 2. 从侧边栏**上传一个网络流量 CSV 文件**。该文件必须包含一个 `Label` 列(例如 `BENIGN`、`DDoS`、`Botnet`、`BruteForce`)。 3. **检测流水线会自动运行**——几秒钟内,你就会在仪表板上看到威胁分类、风险评分和模型指标。 4. 探索 **威胁分析** 以了解模型性能,或者通过 **MITRE ATT&CK** 获取检测到的特定威胁的情报。 5. 触发**自愈引擎**以观察自动化的补救序列运行,并带有实时的前后指标对比。 6. 打开 **Jarvis Agent** 并以对话方式询问它一些问题——例如“*当前的威胁是什么,有多严重?*”或“*检查事件历史并告诉我这是否是反复出现的模式*”——然后观察它在实时调用各种工具来回答问题。 ## 已知局限与客观说明 坦白面对当前的现状,因为对于一个正在审阅该项目的人来说,只列出优点的说明文档对任何人都没有帮助: - **源代码中存在硬编码的备用凭据**(Gmail 应用密码和 Groq API 密钥),这是为了开发方便。在任何推送到公共代码库或部署之前,必须移除并轮换这些凭据——它们绝不应该保留一个可用的默认值;如果未设置环境变量,应用程序应当抛出明显的错误。 - **响应操作是模拟的,而非真实的。** 封禁 IP 或锁定账户会生成正确的操作(例如 `iptables` 规则),但不会针对真实的基础设施执行。这是为了在学术/演示环境中保证安全而有意为之,但它自然也是未来迈向生产版本的下个一步计划。 - **检测仅限于四种流量类别**(良性、DDoS、Botnet、Brute-force),这是基于所使用的训练数据。现实世界的部署将更广泛且不断更新的数据集。 - **仅支持基于 CSV 的数据摄取**——目前还没有用于实时检测的实时网络抓包集成(当 `scapy` 不可用时,“抓包”模块会进行模拟)。 ## 未来展望 - 将所有密钥迁移到适当的密钥管理器中;移除所有硬编码的备用凭据 - 用真实的、经授权的集成(防火墙 API、IAM 系统)替换模拟的响应操作 - 添加实时的网络数据摄取,而不是仅仅依赖于 CSV 上传 - 通过更大、更多样化的带标签数据集来扩展威胁分类体系 - 对应用进行容器化(Docker),以实现可复现的一键式部署 - 围绕 ML 流水线和 Agent 的工具调用逻辑添加自动化测试 - 探索更小型的、本地托管的模型选项,以减少对外部 API 的依赖 ## 作者 **Chinmaya** Centurion University of Technology and Management 计算机科学 B.Tech(2027 届) GitHub: github.com/chinamaya_cutm *CyberShield Enterprise AI v3.0 — Jarvis Edition。构建该项目旨在探索 Agentic AI 在应用于现实世界网络安全响应中的实践。*
标签:AMSI绕过, Apex, Cloudflare, IP 地址批量处理, Kubernetes, MITRE ATT&CK, Python, Sysdig, 威胁检测, 安全运营中心, 异常分析, 无后门, 机器学习, 网络安全, 网络映射, 自动化响应, 逆向工具, 隐私保护