LeechoShoop/cogitator
GitHub: LeechoShoop/cogitator
一款基于 Rust 的终端 TLS MITM 拦截代理与 Web 渗透测试工具包,提供从流量拦截到漏洞扫描的完整安全测试工作流。
Stars: 1 | Forks: 0
# ⚙️ COGITATOR
**Cogitator** 是一个基于终端的 TLS MITM 拦截代理和渗透测试工具包,使用 Rust 编写 —— 概念上类似于 Burp Suite,但没有为弱者准备的 GUI,对疏于防范的 Web 应用程序也毫不留情。Cogitator 的机魂读取加密流量就像机械神教解读神圣图纸一样轻而易举。
打造这个工具是为了通过实践来学习网络安全工程和底层 Rust —— 每一行代码都经过反复敲打、祝圣和实战检验。
## 🔱 目录
- [Cogitator 能做什么](#-what-cogitator-can-do)
- [架构](#-architecture)
- [安装说明](#-installation)
- [快速开始](#-quick-start)
- [安装根证书 (Export-CA)](#-installing-the-root-certificate-export-ca)
- [神圣戒律(完整命令列表)](#-sacred-commandments-full-command-list)
- [终端界面](#-terminal-interface)
- [插件](#-plugins-extending-the-machine-spirit)
- [工作区:保存状态](#-workspace-saving-state)
- [免责声明](#-disclaimer-litany-of-caution)
- [路线图](#-roadmap)
- [贡献](#-contributing)
## ⚔️ Cogitator 能做什么
Cogitator 并非单一工具 —— 它是由同一个机魂统御的一系列审判模块:
| 模块 | 用途 |
|---|---|
| **TLS MITM Proxy** | 通过本地 CA 动态替换证书,拦截 HTTP/HTTPS 流量(包括通过 ALPN 协商的 HTTP/2) |
| **WebSocket Interceptor** | 完整的 RFC 6455 编解码器,实时拦截和修改帧 |
| **Interceptor (Frozen Mode)** | 暂停实时请求并提供 放行 / 丢弃 / 修改 决策,包括请求头和请求体编辑 |
| **Repeater** | 多标签页手动请求重放与修改 |
| **Active Scanner** | 自动化检测 SQLi、XSS(反射型/存储型)和 Path Traversal,支持自定义并发 |
| **Scan Diff** | 对比多次扫描结果 —— 追踪回归问题和新引入的漏洞 |
| **Intruder** | 支持 Sniper / Battering Ram / Pitchfork / Cluster Bomb 模式的字典攻击 |
| **Spider** | 遵循 robots.txt 的 BFS 爬虫,提取链接和表单 |
| **CVE Lookup** | 通过 `cve.circl.lu` 根据服务 banner 查询已知漏洞 |
| **Crypto Forensics** | TLS/cookie 安全审计,HSTS、HPKP、JWT 检测,A–F 等级评分 |
| **Web/Email Analyzer** | 全站审计 + SPF/DKIM/DMARC 验证 |
| **Process & Network Rites** | 进程监控、活动 socket 列表、基于 CPU 的可疑活动检测 |
| **Scope System** | 灵活的正则表达式包含/排除过滤 —— 确保只瞄准目标 |
| **History** | 包含 10,000 条记录的环形缓冲区,记录经过的每一次交互 |
| **Plugin System** | 通过 `cogitator-plugin-api` 加载外部 `.so` 插件 |
| **Workspace Save/Load** | 将完整会话状态保存到 `.cogitator` 文件中 |
## 🏛️ 架构
```
cogitator/
├── main.rs — entry point, TUI event loop, command dispatcher
├── proxy_guard.rs — proxy server core, pipeline entry point
├── tls_mitm.rs — cert generation/cache, CONNECT handling, ALPN/h2
├── interceptor.rs — Frozen mode, operator decision queue
├── ws_interceptor.rs — WebSocket codec and frame interception
├── history.rs — request/response ring buffer
├── repeater.rs — Repeater tabs, manual replay
├── scanner.rs — ScanCheck trait, scan queue
│ └── checks/
│ ├── sqli.rs — SQL injection (error-based)
│ ├── xss.rs — Reflected/Stored XSS
│ └── traversal.rs — Path Traversal
├── intruder.rs — wordlist-based attacks
├── spider.rs — BFS crawler
├── scope.rs — regex include/exclude rules
├── session.rs — cookie jar save/restore
├── workspace.rs — session state serialization
├── plugin.rs — external .so plugin loading
├── crypto_forensic.rs — TLS/cookie/HSTS audit
├── web_analyzer.rs — full site audit
├── scrap_analyze.rs — page metadata extraction
├── dns_guard.rs — SPF/DKIM/DMARC, DNS queries
├── network_guard.rs — active sockets + resolution
├── cve.rs — CVE lookup (cve.circl.lu)
├── styletui.rs — interface rendering (ratatui)
├── logger.rs — structured JSON logging
├── notifier.rs — system notifications
└── config.rs — all magic numbers
```
机魂运行在 `tokio` 之上 —— 异步代理核心通过 `block_in_place`/`spawn_blocking` 与同步的 TUI 循环共存,绝不会打破渲染仪式的节奏。
## 🛠️ 安装说明
### 前置条件
- Rust **1.80+**(2024 edition)
- Linux / macOS / Windows
- 需要拥有将根证书安装到系统信任存储区的权限(这是拦截 HTTPS 所必需的)
### 从源码构建
```
git clone https://github.com/LeechoShoop/cogitator.git
cd cogitator
cargo build --release
```
编译生成的二进制文件位于 `target/release/cogitator`。
```
./target/release/cogitator
```
## ⚡ 快速开始
1. **启动 Cogitator:**
cogitator
2. **启动代理**(在主屏幕上切换开关 —— 默认监听 `127.0.0.1:8080`)。
3. **将浏览器/curl 指向** 代理:`127.0.0.1:8080`。
4. **安装 Cogitator CA 证书**(见下文) —— 否则每个站点的 TLS 都会报错。
5. 在 `History` 面板中查看流量,在 `Interceptor` 中冻结请求,将它们发送到 `Repeater`,并运行 `Scan-Site`。
```
curl -x http://127.0.0.1:8080 --cacert cogitator_ca.pem https://example.com
```
## 🕯️ 安装根证书 (Export-CA)
Cogitator 在首次运行时会生成自己的本地 CA(`cogitator_ca.pem` / `cogitator_ca.key`),并为流量经过的每个域动态签署叶子证书。
在 TUI 中输入:
```
Export-CA
```
这会将 `cogitator_ca.pem` 复制到工作目录,并打印针对您的操作系统/浏览器信任存储区的安装指南。
## 📜 神圣戒律(完整命令列表)
```
╔═══════════════════════════════════════════════════════╗
║ COGITATOR — SACRED COMMANDMENTS v0.6 ║
╠═══════════════════════════════════════════════════════╣
║ WEB FORENSICS ║
║ Analyze-Site Full audit (human) ║
║ Analyze-Site-Json Full audit (JSON export) ║
║ Analyze-Email SPF / DMARC / DKIM check ║
╠═══════════════════════════════════════════════════════╣
║ TLS MITM ║
║ Export-CA Copy CA cert + install guide ║
╠═══════════════════════════════════════════════════════╣
║ PROXY SCOPE ║
║ Scope-Add Restrict logging to matches ║
║ Scope-Exclude Never log/analyze matches ║
║ Scope-List Show configured scope rules ║
║ Scope-Clear Remove all scope rules ║
╠═══════════════════════════════════════════════════════╣
║ SESSIONS ║
║ Session-Save Snapshot cookie jar as profile║
║ Session-Load Restore cookies from profile ║
║ Session-List List saved session profiles ║
╠═══════════════════════════════════════════════════════╣
║ REPEATER ║
║ Send-To-Repeater Open history record in tab ║
╠═══════════════════════════════════════════════════════╣
║ SCANNER ║
║ Scan-Site Active-scan discovered forms ║
║ Scan-Request Active-scan a history record ║
║ Scan-Diff Compare latest vs prior scan ║
╠═══════════════════════════════════════════════════════╣
║ INTRUDER ║
║ Fuzz Sniper-fuzz a §PAYLOAD§ URL ║
║ Intruder-Load Load raw HTTP template (file) ║
╠═══════════════════════════════════════════════════════╣
║ SPIDER ║
║ Spider Crawl (depth 3, 500 pages) ║
║ Spider-Depth Crawl with explicit depth ║
╠═══════════════════════════════════════════════════════╣
║ PROCESS RITES ║
║ GP List all processes ║
║ Find-Suspicious Detect high CPU usage ║
║ Exterminate Purge a process ║
║ GPP Reveal process path ║
╠═══════════════════════════════════════════════════════╣
║ NETWORK LITANIES ║
║ Get-NIF List network interfaces ║
║ GC List active sockets + DNS ║
╠═══════════════════════════════════════════════════════╣
║ WORKSPACE ║
║ Workspace-Save [file] Save state (.cogitator) ║
║ Workspace-Load Restore state from file ║
║ Workspace-New Reset all in-memory state ║
╠═══════════════════════════════════════════════════════╣
║ SYSTEM ║
║ CG Clear log records ║
║ help Display this holy mandate ║
║ exit Appease the Machine Spirit ║
╚═══════════════════════════════════════════════════════╝
```
### 示例操作
```
> Spider example.com
> Scan-Site example.com
> Scan-Diff
> Fuzz https://example.com/login?user=§PAYLOAD§ wordlists/usernames.txt
> Send-To-Repeater 42
> Export-CA
> Workspace-Save campaign-alpha.cogitator
```
## 🖥️ 终端界面
TUI 基于 `ratatui` 构建,可在六个屏幕之间切换:
| 屏幕 | 用途 |
|---|---|
| **Main** | 命令行、事件日志、概览 |
| **Interceptor** | 交互历史 / 冻结模式(暂停并编辑实时请求和 WS 帧) |
| **Repeater** | 多标签页手动 HTTP 请求重放 |
| **Scanner** | 三面板主动漏洞扫描器 |
| **Intruder** | 支持 Sniper/BatteringRam/Pitchfork/ClusterBomb 模式的字典攻击 |
| **Spider** | 带有异常高亮的实时爬取概览 |
在 `Interceptor` 的冻结模式下,每一个被捕获的请求都是等待操作者裁决的阶下囚:**Forward**(释放)、**Drop**(处决),或 **Modify**(在发送前重写神圣的请求头和请求体文本)。
## 🔌 插件(扩展机魂)
Cogitator 通过独立的 `cogitator-plugin-api` crate 支持外部插件:
- 定义插件契约的共享 trait,带有版本化的 ABI
- 用于注册的 `export_plugin!` 宏
- 内置插件通过 `inventory` 自动注册
- 外部 `.so` 插件通过 `libloading` 动态加载
这意味着您可以在不触及核心的情况下,将自己的分析模块链接到 Cogitator 上 —— 机魂接受新的仪式,就像它天生就具备一样。
## 💾 工作区:保存状态
针对目标的长期战役不应在您关闭终端时结束。
```
Workspace-Save campaign.cogitator
Workspace-Load campaign.cogitator
Workspace-New
```
快照包含:历史记录、Scope 规则、会话、扫描快照(用于 `Scan-Diff`)以及积累的其他关于目标的知识。
您也可以在启动时直接打开战役存档:
```
cogitator campaign.cogitator
```
## ⚠️ 免责声明(谨慎连祷文)
Cogitator **仅** 专为以下用途构建:
- 授权的渗透测试,
- 安全研究和教育,
- 审计您自己的基础设施。
在大多数司法管辖区,未经授权拦截他人流量、扫描您不拥有的系统或对第三方运行 MITM 攻击都是 **违法的**。作者对滥用此工具的行为不承担任何责任。异端行为不仅会受到审判庭的惩处,更会受到法律的制裁。
## 🗺️ 路线图
- [ ] 扩展主动检测库(SSRF、XXE、命令注入)
- [ ] 改进 Scan-Diff 可视化
- [ ] 跨多节点的分布式扫描
- [ ] HTML/PDF 报告导出
- [ ] *(AI 辅助分析 —— 推迟至核心功能完成后进行)*
标签:Rust, 中间人攻击代理, 可视化界面, 流量拦截, 网络安全, 网络流量审计, 通知系统, 隐私保护