id-fant/Cybersecurity-AI-Threat-Detection-System

GitHub: id-fant/Cybersecurity-AI-Threat-Detection-System

一个将 Nmap 扫描日志自动解析、基于规则和 Gemini LLM 进行威胁分级与风险分析,并通过 Slack 和 SQLite 完成告警的轻量级安全流水线工具。

Stars: 0 | Forks: 0

# Cybersecurity-AI-Threat-Detection-System Cyber Agent 是一个小型 Python 流水线,用于将 Nmap 扫描输出转化为安全发现、LLS 辅助的风险摘要、可选的 Slack 警报以及保存的 SQLite 警报记录。 当前应用围绕一个简单的流程构建: 1. 从 `data/raw_logs/` 读取标准的 Nmap 文本报告。 2. 解析目标、开放的 TCP 端口和服务名称。 3. 将解析后的结果以 JSON 格式保存在 `data/parsed_logs/` 中。 4. 应用基于规则的检查,包括暴露的 SSH、有 HTTP 但无 HTTPS,以及异常多的开放端口。 5. 将发现分类为 `Low`、`Medium` 或 `High`。 6. 请求 Gemini 提供简短的风险说明、攻击场景和修复建议。 7. 打印警报,可选发送到 Slack,并将其存储在 `alerts.db` 中。 ## 项目结构 ``` cyber-agent/ +-- actions/ | +-- alert.py # Sends Slack webhook alerts | +-- db.py # Stores alert results in SQLite +-- core/ | +-- analyzer.py # Rule-based finding generation | +-- decisionengine.py # Severity classification | +-- llmclient.py # Gemini analysis client +-- data/ | +-- raw_logs/ # Input Nmap text reports | +-- parsed_logs/ # Generated parsed JSON reports +-- parser/ | +-- nmapp.py # Nmap text parser +-- main.py # Pipeline entry point +-- .env # Local environment variables +-- alerts.db # Generated SQLite alert database ``` ## 环境要求 - Python 3.10+ - 用于 LLM 分析的 Gemini API 密钥 - 如果需要 Slack 警报,需提供 Slack incoming webhook URL 代码使用的 Python 包: ``` pip install requests python-dotenv google-genai ``` `sqlite3` 是 Python 标准库的一部分。 ## 环境变量 在项目根目录下创建一个 `.env` 文件: ``` GEMINI_API_KEY=your_gemini_api_key SLACK_WEBHOOK_URL=your_slack_webhook_url ``` `SLACK_WEBHOOK_URL` 是可选的。如果缺少此项,应用将打印一条警告并继续运行,不会发送 Slack 消息。 ## 用法 在 `data/raw_logs/` 目录下添加或生成 Nmap 标准输出的文本文件。 Nmap 命令示例: ``` nmap -sS -oN data/raw_logs/sample.txt scanme.nmap.org ``` 运行默认流水线: ``` python main.py ``` 默认情况下,`main.py` 处理: ``` data/raw_logs/sample.txt ``` 要处理其他文件,请更新 `main.py` 中传递给 `run_pipeline()` 的路径,或者从 Python 中调用它: ``` from main import run_pipeline run_pipeline("data/raw_logs/your_scan.txt") ``` ## 生成的内容 成功运行后,Cyber Agent 会创建或更新: - `data/parsed_logs/.json`,包含解析后的扫描详情 - `alerts.db`,其中包含一个 `alerts` 表,内容如下: - `ip` - `severity` - `findings` 警报消息也会打印到控制台。 ## 检测规则 当前的规则引擎刻意保持轻量级: - 超过 5 个开放端口:`Possible port scan (many open ports)` - 22 端口开放:`SSH exposed` - 80 端口开放但无 443 端口:`Unsecured HTTP (no HTTPS)` - 没有匹配的规则:`No obvious threats detected` 严重程度分配如下: - 存在端口扫描发现时为 `High` - 存在不安全的 HTTP 时为 `Medium` - 未检测到明显威胁时为 `Low` - 默认回退级别为 `Medium` ## 注意事项 - 解析器预期 Nmap 的标准输出中包含类似 `22/tcp open ssh` 的行。 - Gemini 的 prompt 要求遵循这种严格的响应格式:`Risk`、`Attack Scenario` 和 `Fix`。 - LLM 客户端在返回回退响应前最多重试 3 次。 - Slack 传递是即发即弃的;目前不会重试或抛出失败的 webhook 响应。
标签:AI安全, AMSI绕过, Chat Copilot, CTI, DLL 劫持, Gemini, LLM推理, Nmap解析, Python, Slack告警, SOC自动化, SQLite, 云计算, 大语言模型, 威胁情报, 威胁检测, 安全运营中心, 密码管理, 开发者工具, 插件系统, 数据统计, 无后门, 无线安全, 漏洞分析, 端口扫描, 网络安全, 网络安全审计, 网络扫描日志, 网络映射, 自动化响应, 规则引擎, 路径探测, 逆向工具, 隐私保护, 风险评级