somaketu/utsu
GitHub: somaketu/utsu
UTSU 是一个结合异步实时探测、Rust 驱动的 JS 分析引擎与本地 LLM 智能分类的自动化攻击面情报平台。
Stars: 1 | Forks: 0
# UTSU
### 攻击面情报平台
自动化侦察 • 资产发现 • JavaScript 情报 • AI 辅助的漏洞分析
# 执行摘要
现代组织运营着日益复杂的外部攻击面,涵盖云基础设施、Web 应用程序、API、第三方集成以及快速变化的数字资产。
传统的侦察工作流通常依赖于碎片化的工具、不一致的数据存储和难以在大型环境中扩展的手动分析过程。
URO 通过统一的情报 pipeline 来应对这些挑战,该 pipeline 能够:
- 持续发现外部资产
- 随时间跟踪攻击面漂移
- 识别暴露的应用程序功能
- 从 JavaScript 资产中提取情报
- 检测 secrets 和敏感引用
- 使用本地 AI 推理生成上下文攻击假设
- 在各项任务中保持持久的历史可见性
与依赖云的平台不同,URO 采用隐私优先的架构设计,所有情报收集和 AI 处理都可以完全保留在本地。
# 平台功能
## 持续资产发现
对目标域名执行被动侦察,并维护已发现资产的历史清单。
## 基于增量的情报
识别扫描之间新暴露的资产,并将分析重点放在有意义的环境变化上,而不是重复处理已知的基础设施。
## 实时服务分析
通过 HTTP/S 探测验证已发现的资产,并收集可操作的元数据,包括:
- 状态码
- 响应标题
- 内容长度
- 重定向链
- 服务指纹
## JavaScript 情报引擎
利用原生 Rust 驱动的分析引擎,能够提取:
- API endpoint
- 应用程序路由
- 身份验证流程
- 云服务引用
- 嵌入式 secrets
- 访问 token
- 配置工件
## AI 辅助调查
通过由本地 Ollama 托管模型驱动的 LangGraph 工作流,生成上下文攻击假设和漏洞评估。
## 隐私优先架构
保持对侦察数据的完全所有权,无需将资产、secrets 或发现结果传输给外部 AI 提供商。
# 功能矩阵
| 功能 | 描述 |
|------------|-------------|
| 资产发现 | 被动子域名枚举 |
| 变更跟踪 | 感知增量的攻击面监控 |
| 服务验证 | HTTP/S 探测和元数据收集 |
| JavaScript 情报 | Endpoint、路由和 secret 提取 |
| 本地 AI 分析 | Ollama 驱动的分类工作流 |
| 持久化存储 | SQLite 情报仓库 |
| 范围强制执行 | 基于配置文件的任务控制 |
| 离线操作 | 无需云依赖 |
| 原生性能 | Rust 驱动的分析引擎 |
| 历史可见性 | 长期资产跟踪 |
# 参考架构
URO 遵循模块化的情报生命周期,其中每个处理阶段都会丰富先前收集的数据,并将发现结果持久化到集中的情报仓库中。
```
flowchart TD
subgraph CLI["URO Command Interface"]
SCAN["uro scan"]
TRIAGE["uro triage"]
HUNT["uro hunt"]
end
subgraph CONFIG["Configuration & Persistence"]
ENV["Environment Configuration"]
PROFILE["YAML Profiles"]
RULES["Scope Rules"]
DB["SQLite Intelligence Store"]
end
subgraph RECON["Phase 1 — Asset Discovery"]
DISCOVER["Passive Reconnaissance"]
SUBS["Discovered Assets"]
end
subgraph DELTA["Phase 2 — Change Analysis"]
COMPARE["Delta Evaluation"]
NEW["New Asset Queue"]
end
subgraph PROBE["Phase 3 — Service Validation"]
LIVE["HTTP/S Probing"]
META["Metadata Collection"]
end
subgraph ANALYSIS["Phase 4 — Intelligence Extraction"]
JS["JavaScript Analysis"]
RUST["Rust Processing Engine"]
ROUTES["Endpoint Discovery"]
SECRETS["Secret Detection"]
end
subgraph AI["AI Intelligence Layer"]
GRAPH["LangGraph Workflow"]
OLLAMA["Local LLM"]
REPORT["Attack Surface Assessment"]
end
SCAN --> DISCOVER
DISCOVER --> SUBS
SUBS --> COMPARE
COMPARE --> NEW
NEW --> LIVE
LIVE --> META
META --> JS
JS --> RUST
RUST --> ROUTES
RUST --> SECRETS
ROUTES --> DB
SECRETS --> DB
META --> DB
TRIAGE --> GRAPH
HUNT --> GRAPH
DB --> GRAPH
RULES --> GRAPH
GRAPH --> OLLAMA
OLLAMA --> REPORT
ENV --> PROFILE
PROFILE --> RULES
```
# 核心设计原则
## 持久化情报
URO 围绕持久化情报而非一次性的扫描结果构建。
每个发现的资产都会被进行历史跟踪,使操作人员能够识别基础设施漂移和新暴露的攻击面组件。
## 增量驱动处理
重复扫描通过仅处理新发现的资产来避免不必要的分析。
这显著减少了执行时间,同时提高了操作效率。
## 原生性能
JavaScript 分析是侦察中计算量最大的阶段之一。
URO 通过 PyO3 绑定利用 Rust,提供高性能的解析和提取功能,同时保持 Python 的编排灵活性。
## 本地 AI 处理
所有 AI 工作流都可以通过 Ollama 托管的语言模型在本地执行。
敏感的侦察数据永远不会离开操作员的环境。
## 感知范围的分析
任务配置文件和范围规则直接集成到 AI 工作流中,确保生成的发现结果与授权测试边界保持一致。
# 技术栈
| 层级 | 技术 |
|---------|-----------|
| 编排 | Python 3.11+ |
| 性能引擎 | Rust 1.78+ |
| 原生绑定 | PyO3 |
| 构建系统 | Maturin |
| AI 框架 | LangGraph |
| Agent 运行时 | LangChain Core |
| 本地 LLM | Ollama |
| 验证 | Pydantic v2 |
| 持久化 | SQLite |
| 配置 | YAML + .env |
# 项目结构
```
uro/
│
├── .env.example
├── pyproject.toml
├── Makefile
│
├── src-rust/
│ ├── Cargo.toml
│ └── src/
│ └── lib.rs
│
├── profiles/
│
├── data/
│
└── uro/
├── cli/
├── core/
├── storage/
├── probing/
├── plugins/
│ ├── subdomain/
│ └── js_analysis/
├── ai/
└── __init__.py
```
# 快速开始
## 前置条件
| 需求 | 描述 |
|------------|-------------|
| Python 3.11+ | 运行时环境 |
| Rust & Cargo | 原生扩展编译 |
| Ollama | 本地 AI 后端 |
## 安装 Ollama
```
ollama pull llama3.2
```
验证安装:
```
ollama list
```
## 安装说明
### 克隆仓库
```
git clone https://github.com/Atsukiiii01/uro.git
cd uro
```
### 创建虚拟环境
```
python -m venv venv
source venv/bin/activate
# Windows
venv\Scripts\activate
```
### 配置环境
```
cp .env.example .env
```
### 安装依赖
```
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 \
pip install -e ".[ai,dev]"
```
### 验证安装
```
uro --help
```
# 配置
## 全局配置
`.env` 文件控制平台范围的行为。
```
DATABASE_PATH=data/uro.db
OLLAMA_BASE_URL=http://127.0.0.1:11434
DEFAULT_AI_MODEL=llama3.2
DEFAULT_PROBER_THREADS=10
```
## 任务配置文件
配置文件定义了特定于目标的执行参数。
```
name: Example Program
target: example.com
scope_file: scope.txt
threads: 15
```
# 操作工作流
## 阶段 1 — 发现
发现资产并丰富情报。
```
uro scan example.com \
-p profiles/example.yaml
```
功能:
- 子域名枚举
- 资产收集
- 增量评估
- 服务验证
- JavaScript 分析
- 情报持久化
## 阶段 2 — 调查
通过 AI 分类 pipeline 分析特定目标。
```
uro triage \
checkout.example.com \
-p profiles/example.yaml
```
功能:
- Endpoint 分析
- Secret 关联
- 攻击路径生成
- 发现优先级排序
## 阶段 3 — 狩猎模式
分析在侦察过程中发现的所有高价值资产。
```
uro hunt \
-p profiles/example.yaml
```
功能:
- 批量分类
- 自动化优先级排序
- 漏洞假设生成
- 攻击面排名
# 工作流示例
```
# 发现资产
uro scan example.com \
-p profiles/example.yaml
# 调查目标
uro triage api.example.com \
-p profiles/example.yaml
# 在所有候选者中进行搜寻
uro hunt \
-p profiles/example.yaml
```
# 开发
## 重新构建原生扩展
```
PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 \
maturin develop --release
```
## Python 质量控制
```
ruff check .
ruff format .
```
## Rust 质量控制
```
cargo fmt
cargo clippy
```
# 安全注意事项
## 授权使用
URO 专门用于:
- 授权的渗透测试
- 安全研究
- 内部安全评估
- 批准的漏洞披露计划
操作员有责任确保所有活动符合适用的法律、合同义务和计划规则。
## 数据保护
在使用默认的 Ollama 后端部署时,所有情报处理都保留在操作员的环境中。
侦察数据、提取的 secrets、发现的 endpoint 和生成的发现结果永远不会传输给第三方 AI 提供商。
## 网络安全控制
探测子系统包含了旨在防止与以下内容交互的安全防护措施:
- 本地主机接口
- RFC1918 私有网络
- 云元数据服务
- DNS 重绑定目标
示例包括:
```
127.0.0.1
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
169.254.169.254
```
# 路线图
### 计划中的增强功能
- 分布式侦察 Worker
- 云资产枚举
- 可视化攻击面映射
- 资产风险评分
- 多 LLM 支持
- Headless 浏览器分析
- API Schema 发现
- 持续监控模式
# 为什么选择 URO?
现代攻击面不断演变。
安全团队需要的不仅仅是一次性的侦察快照。他们需要持久的可见性、历史背景和可操作的情报。
URO 将自动化发现、高性能分析和本地 AI 辅助推理结合到一个统一的攻击面情报平台中,能够将原始侦察数据转化为有意义的安全洞察。
# 许可证
根据 MIT 许可证授权。
有关更多信息,请参阅 LICENSE 文件。
### 负责任的披露
URO 是一个安全研究平台。
在对您不拥有的系统、应用程序或基础设施进行测试活动之前,请务必获得明确的授权。
未经授权的测试可能违反法律、合同协议或计划政策。
标签:AI风险缓解, DLL 劫持, GitHub, 可视化界面, 大语言模型, 实时处理, 密码管理, 自动化侦察, 逆向工具