khushal1512/b0bot

GitHub: khushal1512/b0bot

B0bot 是一个基于 Kestra 编排的 AI 驱动网络安全威胁情报 Pipeline,通过自动抓取、LLM 数据丰富和对话式 RAG 接口,帮助安全团队高效获取和查询最新威胁信息。

Stars: 0 | Forks: 0

# B0bot

B0bot Hero

**AI 驱动的网络安全威胁情报 Pipeline** B0bot 是一个由 **Kestra** 驱动的网络安全威胁情报 (CTI) pipeline。它会持续抓取网络上最新的安全公告、漏洞披露和网络新闻,使用大语言模型 (LLM) 对其进行数据丰富处理,并通过对话式检索增强生成 (RAG) 接口和结构化 REST API 让数据变得即时可查。 ## 问题所在 在网络安全领域,时间就是一切。SOC 分析师、IT 管理员和研究人员每天都被大量碎片化的信息噪音轰炸:新的 CVE、勒索软件活动、网络钓鱼策略以及国家层面的公告,它们散落在数十个 RSS 源和政府网站上。 - **手动解析数据速度极慢。** - **识别实体**(恶意软件家族、威胁行为者、受影响的产品)**非常耗时。** - **将新公布的漏洞与过去的报告联系起来极其繁琐。** ## 技术栈 | 层级 | 技术 | 作用 | |-------|-----------|------| | **编排** | Kestra | 整个后端编排引擎 —— 负责调度、连接和监控所有 pipeline | | **消息队列** | Apache Kafka | 在数据摄取和数据丰富处理之间缓存抓取到的原始文章 | | **LLM 提供商** | Gemini + Groq | 基于 AI 的实体提取、分类以及对话式 RAG | | **数据库** | PostgreSQL | 存储经过丰富处理的文章元数据并支持搜索查询 | | **缓存** | Redis | 缓存最新标题以实现低延迟访问 | | **前端** | Next.js (React) | 聊天界面和 REST API 仪表板 | ## 流程 ### 1. 数据摄取 — `b0bot_ingestion.yml`

Data Ingestion Flow

- 按小时计划抓取 **3 个 RSS 源** (TheHackerNews, KrebsOnSecurity, BleepingComputer) 和 **2 个 HTML 页面** (CISA, NCSC)。 - 将每条记录解析为包含标题、链接和来源名称的结构化 JSON 记录。 - 将每条记录发布到 Kafka topic `raw.rss` 以供下游处理。 - 每小时自动运行,无需任何人工干预。 ### 2. AI 数据丰富 — `b0bot_enrichment.yml`

Enrichment Flow

- 实时消费来自 Kafka topic `raw.rss` 的原始记录。 - 将每篇文章的标题发送给 **Groq (llama-3.1-8b-instant)** 进行分类 —— 提取类别、严重程度和命名实体(CVE、恶意软件家族、威胁行为者)。 - 使用 upsert 逻辑将丰富后的记录插入到 **PostgreSQL** (`articles_metadata`) 中,以避免数据重复。 - 将最新的标题缓存在 **Redis** 的 `latest_cyber_news` 键下。 ### 3. 每日威胁简报 — `b0bot_daily_notification.yml`

Daily Briefing Flow

- 通过 cron 计划每天 **08:00 UTC** 运行。 - 从 PostgreSQL 中拉取 **最近 10 篇文章**,并将其整理为摘要格式。 - 使用 **Gemini (gemini-2.5-flash-lite)** 生成 HTML 格式的简明网络安全威胁简报 —— 如果 Gemini 失败,则回退到 **Groq**。 - 通过 SMTP 将简报作为 **电子邮件** 发送给配置的收件人。 ### 4. 对话式 RAG — `b0bot_chat_rag.yml`

RAG Flow

- 暴露一个 **webhook endpoint**,通过 POST 请求接收用户问题。 - 在 PostgreSQL 中使用 ILIKE 对标题和实体字段进行搜索,查找匹配的文章。 - 如果找到匹配项,**Gemini (gemini-2.5-flash-lite)** 会根据上下文生成自然语言回答。 - 如果不存在匹配项,它会 **自动触发数据摄取 subflow** 以获取新情报,并返回一条后备回复消息。 ## 设置 ### 前置条件 - [Docker](https://docs.docker.com/get-docker/) & Docker Compose - [Node.js](https://nodejs.org/) v18+ 和 [pnpm](https://pnpm.io/) - **Gemini** 和 **Groq** 的 API 密钥 ### 第 1 步 — 克隆仓库 ``` git clone https://github.com/your-org/b0bot.git cd b0bot ``` ### 第 2 步 — 配置环境变量 ``` cd kestra-infra cp .env.example .env ``` 编辑 `.env` 并填入您的 API 密钥: ``` GEMINI_API_KEY=your_gemini_api_key GROQ_API_KEY=your_groq_api_key ``` ### 第 3 步 — 启动基础设施 ``` docker compose up -d ``` 这将启动以下服务: | 服务 | 端口 | |---------|------| | Kestra | `8080` | | PostgreSQL | `5432` | | Redis | `6379` | | Kafka | `9092` | ### 第 4 步 — 导入 Kestra 流程 1. 在 [http://localhost:8080](http://localhost:8080) 打开 Kestra UI 2. 导航至 **Flows → Import** 3. 从 `kestra-flows/` 导入所有 4 个流程文件: - `b0bot_ingestion.yml` - `b0bot_enrichment.yml` - `b0bot_daily_notification.yml` - `b0bot_chat_rag.yml` ### 第 5 步 — 设置 Kestra 密钥 在 Kestra UI 中,转到 **Settings → Secrets** 并添加: | 密钥名称 | 值 | |-------------|-------| | `POSTGRES_USER` | `kestra` | | `POSTGRES_PASSWORD` | `k3str4` | | `GEMINI_API_KEY` | 您的密钥 | | `GROQ_API_KEY` | 您的密钥 | ### 第 6 步 — 启动前端 ``` cd frontend pnpm install pnpm dev ``` 前端现已在 [http://localhost:3000](http://localhost:3000) 上线。 ## 许可证 MIT
标签:DLL 劫持, Kestra, MITM代理, RAG, 大语言模型, 威胁情报, 开发者工具, 搜索引擎查询, 测试用例, 网络安全, 自动化攻击, 自动化流水线, 请求拦截, 软件成分分析, 隐私保护