Alexc-projects/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil

GitHub: Alexc-projects/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil

这是一个利用AI技术加速红队知识学习和应用的RAG系统。

Stars: 0 | Forks: 0

# CyberSec RAG — 红队战术智能系统 **目标:** 利用人工智能组织、检索和推理攻击性技术知识,加速迈向专业红队的道路。 ## 目录 1. [总体架构](#arquitectura-general) 2. [信息结构](#estructura-de-la-información) 3. [数据摄取管道](#pipeline-de-ingesta) 4. [存储与语义检索](#almacenamiento-y-recuperación-semántica) 5. [操作模块](#módulos-operativos) - [RAG 对话](#chat-rag--chatbot) - [OSINT 实验室](#osint-lab--lab) - [框架追踪器](#framework-tracker--framework) 6. [技术栈](#stack-técnico) 7. [系统当前状态](#estado-actual-del-sistema) 8. [路线图与未来改进](#roadmap-y-mejoras-futuras) 9. [安装与使用](#instalación-y-uso) 10. [项目生态](#ecosistema-del-proyecto) ## 总体架构 系统采用经典的 RAG 架构,并进行了三层扩展: ``` ┌─────────────────────────────────────────────────────────┐ │ FUENTES DE DATOS │ │ Vídeos MP4 · PDFs · Apuntes · Herramientas OSINT │ └───────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ PIPELINE DE INGESTA │ │ ffmpeg → Whisper → chunking → embeddings → ChromaDB │ └───────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ MOTOR DE RECUPERACIÓN (RAG) │ │ Query → embedding → búsqueda semántica → contexto │ │ ↓ │ │ Claude API → respuesta │ └───────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ INTERFACES │ │ /chat (Streamlit) · /lab (OSINT) · /framework │ └─────────────────────────────────────────────────────────┘ ``` ## 信息结构 系统内的所有知识都按照 ChromaDB 中的三个主要集合进行组织: ### 1. 课程会话集合 硕士课程的 22 个会话经过处理并分割为带有元数据的文本片段: ``` { "id": "sesion_14_chunk_032", "text": "El ataque de Pass-the-Hash consiste en...", "metadata": { "source": "sesion_14_post_explotacion.mp4", "timestamp": "00:34:12", "topic": "Post-Explotación", "category": "Movimiento lateral" } } ``` ### 2. OSINT 实验室集合 1,169 个 OSINT 工具已按其描述、战术用途和类别进行分类: ``` { "tool": "Maltego", "category": "Reconocimiento · Grafo de relaciones", "use_case": "Mapeo de infraestructura y relaciones entre entidades", "tags": ["OSINT", "recon", "grafos", "personas", "dominios"] } ``` ### 3. 框架集合 根据公认框架(MITRE ATT&CK、网络杀伤链)组织的 33 类攻击技术: ``` { "technique": "T1078 - Valid Accounts", "phase": "Persistence", "framework": "MITRE ATT&CK", "description": "Uso de credenciales válidas para mantener acceso...", "status": "estudiado" } ``` ## 数据摄取管道 从视频文件到可查询片段的完整流程: ``` clase.mp4 │ ▼ ffmpeg audio.wav (16kHz, mono) │ ▼ Whisper (OpenAI) transcripcion.txt (texto completo con timestamps) │ ▼ chunking semántico [chunk_001, chunk_002, ..., chunk_N] (fragmentos con solapamiento para preservar contexto) │ ▼ sentence-transformers (embeddings) [vector_001, vector_002, ..., vector_N] (vectores de alta dimensionalidad) │ ▼ ChromaDB colección persistente en disco ``` ### 管道执行 ``` # 处理新视频 python ingestion/process_video.py --input clase.mp4 --output fragments/ # 索引 PDF 或文本文档 python ingestion/process_docs.py --input apuntes/ --collection sesiones # 查看集合统计 python scripts/stats.py ``` ## 存储与语义检索 ### ChromaDB 作为向量数据库 ChromaDB 将每个片段存储为 `(embedding, metadata)` 对。当发起查询时: 1. 查询被转换为与摄取时使用相同模型生成的 embedding。 2. ChromaDB 计算查询 embedding 与所有存储片段之间的余弦相似度。 3. 检索最相似的 K 个片段(top-K 检索)。 4. 将这些片段作为上下文注入 Claude API 的提示中。 5. Claude 生成基于该上下文的回复。 ``` # 简化查询流程 query = "¿Qué técnicas de evasión de EDR son más efectivas en Windows?" # 1. 查询的 Embedding query_embedding = embedder.encode(query) # 2. 语义检索 results = collection.query( query_embeddings=[query_embedding], n_results=5 ) # 3. 上下文构建 context = build_context(results) # 4. 使用 Claude 生成 response = claude.messages.create( model="claude-opus-4-7", messages=[{"role": "user", "content": f"{context}\n\n{query}"}] ) ``` ### 为何使用 embedding 而非关键词搜索 语义搜索允许找到相关片段,即使它们不完全包含查询中的词语。"如何在 Linux 中提升权限?" 将检索到关于 `sudo`、`SUID`、`capabilities` 或 `cron jobs` 的片段,即使没有一个片段完全使用该短语。 ## 操作模块 系统通过一个命令 (`python main.py`) 启动,并在 `http://127.0.0.1:8000` 上暴露三个界面。 ### RAG 对话 · `/` 基于所有已索引知识的自然语言查询主界面。 **布局:** - **页眉** — 显示系统名称和一个实时 badge,显示连接到 ChromaDB 的片段总数。 - **左侧边栏** — 内容类型筛选器,用于限定语义搜索范围: - `全部` — 搜索整个知识库 - `知识` — 课程会话的理论片段 - `方法论` — 在实验室内完成的练习(通过 `/api/lab/complete` 录入) - `工具` — 已索引的工具卡片 - `Writeups` — 案例的解决和分析 - `外部 Arsenal` — 外部工具的参考 - **上传区域**(侧边栏中的拖放)— 允许直接从浏览器上传一个会话的 ZIP 文件。系统即时摄取并更新片段计数,无需重启。 - **聊天区域** — 对话历史记录,用户消息和助手回复有不同的格式。 - **输入栏** — 多行文本框,通过 `Enter` 或按钮发送。 **查询流程:** 1. 用户输入问题并(可选地)选择一个类型筛选器。 2. 前端执行 `POST /api/query`,发送 `{query, category, n_results}`。 3. 后端从 ChromaDB 检索最相似的 5 个片段(top-5)。 4. 使用片段构建上下文,并启动对 Claude API (`claude-sonnet-4-6`) 的流式传输。 5. 响应通过 **SSE (Server-Sent Events)** 传回 — 文本实时逐 token 渲染。 6. 文本前显示**来源 badge**(会话日期 + 文档类型),可确切知道每个回复的出处。 **真实用例:** ``` "¿Cómo funciona un ataque de Kerberoasting paso a paso?" "¿Qué vimos sobre evasión de EDR en Windows en las sesiones del máster?" "Explícame la diferencia entre Pass-the-Hash y Pass-the-Ticket" "¿Qué comandos de Nmap se usaron para enumeración de servicios?" ``` **技术栈:** FastAPI · SSE 流式传输 · ChromaDB · Claude API (`claude-sonnet-4-6`) ### OSINT 实验室 · `/lab` 被动侦察引导式训练平台。结合理论、实践练习和结果记录,这些结果会索引到 ChromaDB 以丰富 RAG 系统。 **布局:** - **左侧边栏 — 阶段** — 导航攻击路线图的各个阶段。阶段 1(被动侦察)已激活;后续阶段在完成前被锁定。每个阶段显示一个进度条,显示已完成工具的百分比。 - **顶栏 — 组** — 在每个阶段内,工具按战术类别分组(例如:“搜索与互联网”、“基础设施”、“人员”...)。每个组有自己的标签页和完成指示器。 - **工具卡片网格** — 每个工具显示为一张卡片,包含: - **类型** 标记:`WEB`(Web 界面)、`TOOL`(本地可执行文件)、`PAID`(需要付费)、`WIN`(Windows)、`LINUX` - **难度指示器** — 彩色点:绿色(容易)、黄色(中等)、红色(困难) - 工具完成时右上角显示**绿色勾号** **工具模态框 — 3 个标签页:** | 标签页 | 内容 | |---|---| | **理论** | 工具的技术说明、关键操作符、用例、OPSEC 注意事项 | | **练习** | 循序渐进的引导任务,附带可直接复制的命令(`copy` 按钮)、查找目标描述和每项任务的复选框验证 | | **完成** | 练习后的文档表单:使用的命令、发现、与其他工具的关联。提交时,系统调用 `POST /api/lab/complete` 并将文档作为 `tool_exercise` 片段索引到 ChromaDB | **练习示例(Google Dorks):** ``` Tarea 1: Documentos públicos expuestos $ site:tesla.com filetype:pdf ¿Encontraste documentos PDF indexados? ✓ Tarea 2: Paneles de administración $ site:tesla.com inurl:admin OR inurl:login OR inurl:dashboard ¿Aparecen URLs con rutas administrativas? ✓ ``` **差异化价值:** 每个完成的练习都会自动成为知识库的一个片段。下次当 RAG 对话收到关于该工具的问题时,它也会检索到你的个人方法论和真实发现。 **技术栈:** FastAPI · JavaScript 原生 · ChromaDB(通过 `/api/lab/complete` 写入) ### 框架追踪器 · `/framework` 整个 OSINT 框架的交互式地图,带有个人进度跟踪功能。允许可视化、搜索和标记生态系统中的所有 OSINT 工具为已完成。 **布局:** - **顶栏** — 全局进度条,实时显示已完成工具的总百分比 + 工具搜索框 + 到实验室和 RAG 的快速链接。 - **左侧边栏 — 类别** — OSINT 框架的所有类别列表,带有状态标记: - 无标记 — 未完成任何工具 - 黄色标记 — 类别部分完成 - 绿色标记 — 类别 100% 完成 - **工具树** — 所选类别的可展开分层视图。每个节点显示: - **复选框** — 标记为完成(状态保存在 `localStorage`) - **工具名称**,标记时有删除线视觉效果 - 到工具的**直接链接** - **标记**: `T` (Tool/可执行文件), `R` (需要注册), `M` (可能恶意), `D` (暗网) - **统计面板(页脚)** — 实时总计:工具总数、已完成数、类别总数和 100% 完成的类别数。 **数据来源:** 树状图从 `GET /api/arf` 加载,该端点提供 [OSINT 框架](https://osintframework.com) (lockfale 的开源项目) 的 JSON 文件。后端在首次启动时下载并本地缓存为 `arf.json`。前端还在 `localStorage` 中维护 7 天的缓存,以避免不必要的请求。 **进度持久化:** 每个复选框的状态保存在 `localStorage` 中,键为 `arf_progress`。不需要账户或数据库 — 进度是浏览器本地的,并在会话间持久化。 **搜索:** 搜索框实时过滤整个工具树中的所有工具,并高亮显示匹配项及其类别路径 (`类别 > 子类别 > 工具`)。 **技术栈:** FastAPI · JavaScript 原生 · localStorage (持久化) · OSINT Framework JSON (lockfale/osint-framework) ## 技术栈 | 层 | 技术 | 功能 | |---|---|---| | 视频转录 | Whisper (OpenAI) + ffmpeg | MP4 → 带时间戳的文本 | | Embedding | sentence-transformers | 语义向量化 | | 向量数据库 | ChromaDB | 存储与检索 | | 语言模型 | Claude API (Anthropic) | 生成回复 | | 后端 | FastAPI | 用于界面的 REST API | | 前端 | Streamlit | 交互式 Web 界面 | | 攻击性环境 | Kali Linux VM | 技术验证 | | 主系统 | Windows 11 | 开发与运行 | ## 系统当前状态 | 指标 | 值 | |---|---| | 已索引片段 | 4,146 | | 已处理课程会话 | 22 | | 已分类 OSINT 工具 | 1,169 | | 攻击类别 | 33 | | 可操作界面 | 3 | | 已完成路线图阶段 | 1 / 5 | ## 路线图与未来改进 ### 红队阶段 | 阶段 | 内容 | 状态 | |---|---|---| | 01 · 被动侦察与 OSINT | OSINT 实验室运行中,已索引 1,169 个工具 | 进行中 | | 02 · 主动侦察与枚举 | Nmap、服务、AD 枚举 | 计划中 | | 03 · 漏洞与利用 | CVEs、Metasploit、自定义 exploit | 计划中 | | 04 · 后渗透与横向移动 | Mimikatz、BloodHound、pivoting | 计划中 | | 05 · 自主红队 AI 助手 | 集成 C2 的代理 | 长期愿景 | ### 计划中的技术改进 #### 模块间关联神经网络 当前最大的瓶颈是三个模块(对话、OSINT 实验室、框架追踪器)独立运作。计划中的改进是一个神经网络关联层,它能自动关联: - 框架追踪器中的技术与实验室中相关的 OSINT 工具 - 对话中的片段与其涵盖的 MITRE 技术 - 实验室中的工具与讲解它们的课程片段 这将使系统成为一个互联的知识网络,而不是三个分离的数据库。 #### 与 Obsidian 集成 将 RAG 系统的知识导出到 Obsidian vault,以利用其图谱系统和反向链接。每个索引的片段将生成一个笔记,并自动链接到相关的技术、工具和会话,创建一个可视化的知识地图。 #### 使用 Apollo.io 进行自动化 OSINT 集成 Apollo.io 以自动化获取目标人员的 LinkedIn 公开信息: - 提取职业资料、公司、联系方式 - 根据获取的数据关联自定义的 Google Dorks - 在 Yandex 图像搜索中搜索头像图片,以识别在其他平台上的存在 - 全部集成到 OSINT 实验室的管道中,作为一个人员侦察模块 ## 安装与使用 ### 前置条件 ``` pip install chromadb anthropic openai streamlit fastapi uvicorn \ sentence-transformers whisper ffmpeg-python PyMuPDF ``` ### 环境变量 ``` ANTHROPIC_API_KEY=tu_clave_api ``` ### 启动完整系统 ``` # FastAPI 后端 uvicorn interfaces.api:app --reload # Chat RAG(Web 界面) streamlit run interfaces/web/app.py # OSINT 实验室 streamlit run interfaces/osint_lab/app.py # Framework Tracker streamlit run interfaces/framework_tracker/app.py ``` ### 通过 CLI 直接查询 ``` python rag_engine/query.py "¿Cómo se usa BloodHound para enumerar Active Directory?" ``` ### 处理新的课程会话 ``` python ingestion/process_video.py --input sesion_nueva.mp4 --output fragments/ ``` ## 项目生态 | 平台 | 链接 | |---|---| | 作品集 | [alexc-projects.github.io/…](https://alexc-projects.github.io/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil) | | GitHub | [Alexc-projects/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil](https://github.com/Alexc-projects/Proyecto-Master-Ciberseguridad-Evolve-AlejandroCongil) | | Dev.to | [Cómo construí un sistema RAG para convertirme en Red Teamer con IA](https://dev.to/evolve-space/como-construi-un-sistema-rag-para-convertirme-en-red-teamer-con-ia-proyecto-en-evolve-4b2m) | | LinkedIn | [De las Telecomunicaciones al Red Team](https://www.linkedin.com/pulse/de-las-telecomunicaciones-al-red-team-c%C3%B3mo-uso-ia-mi-congil-sainz-z6h4e/) | | Medium | [De técnico de redes a Red Teamer: la IA como ventaja competitiva](https://medium.com/@alejandro.congil5/de-t%C3%A9cnico-de-redes-a-red-teamer-la-ia-como-ventaja-competitiva-en-ciberseguridad-68975e56dd7d) | 项目在 **[Evolve](https://evolve.es) 网络安全硕士**期间开发的学术项目。
标签:ChromaDB, ESC4, ffmpeg, Kubernetes, OSINT, Red Team工具, Whisper, 人工智能, 后端开发, 威胁情报, 安全运营中心, 开发者工具, 情报收集, 战术情报系统, 数据展示, 框架跟踪, 检索增强生成, 漏洞研究, 用户模式Hook绕过, 知识管理, 红队, 网络安全, 网络安全portfolio, 网络映射, 语义检索, 逆向工具, 隐私保护