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, 网络映射, 语义检索, 逆向工具, 隐私保护