MassoudiR/DittoNet
GitHub: MassoudiR/DittoNet
DittoNet 是一款基于 Flutter 与 Python 构建的移动端网络调试工具,通过嵌入式透明代理实现无需 root 的实时 HTTP 拦截、流量修改与遥测捕获。
Stars: 1 | Forks: 0
⚡ DittoNet 核心基础设施 ⚡
高吞吐量透明代理桥接器、可编程逆向工程引擎与 W3C HAR 遥测管道
基于 Flutter 与 Python 构建,旨在实现确定性的流量拦截、AST 感知的 payload 修改、运行时 DOM hooking 以及 WebSocket 命令编排。
## 🏛️ 执行工程概述
现代 Android 应用安全研究从根本上受到了网络隔离层、严格的 SSL/TLS 证书绑定以及操作系统级路由限制的制约。传统的桌面代理套件(如 Burp Suite、OWASP ZAP 或 Charles Proxy)需要获取物理设备的 root 权限,侵入式地安装系统证书,或依赖脆弱的 `iptables` 转发规则,而现代应用程序经常会主动规避这些手段。
**DittoNet** 从架构层面解决了这一瓶颈。通过将高性能透明拦截桥接器直接嵌入到运行时渲染环境中,DittoNet 能够在原生 Android `WebResourceRequest` 调用与上游网络执行层之间的边界处捕获网络事务。
作为一个在**移动端拦截客户端(`Ditto Mobile`)**和 **Python 命令服务器(`Ditto Server`)**之间运行的统一系统,DittoNet 为安全工程师、逆向工程师和后端开发者提供了对 HTTP/HTTPS 请求和响应生命周期、实时规则评估以及运行时 DOM 环境的完全编程控制能力。
## ⚙️ 架构蓝图与执行生命周期
DittoNet 通过双阶段混合 pipeline 执行流量拦截。出站请求和入站响应可以直接在设备本地以零网络开销进行评估,也可以通过 HTTP POST 转发到桌面服务器进行远程规则处理。随后,服务器会通过 Socket.IO 将实时遥测事件流式传输到仪表板。
```
graph TB
subgraph Mobile Client [📱 Ditto Mobile Runtime Engine]
REQ[Outbound HTTP/HTTPS Request] --> IR[WebResourceRequest Intercept]
IR --> MODE{Execution Mode}
MODE -->|Local Standalone Mode| LRE[Embedded Dart Rules Engine]
LRE -->|BLOCK / REDIRECT / MATCH_REPLACE| OUT_LOCAL[Modified Payload Delivery]
MODE -->|Synchronous Remote Bridge| HTTP_CLIENT[Secure Dart HTTP Client]
end
subgraph Desktop Command Center [🖥️ Ditto Server - Python / Flask / Socket.IO]
HTTP_CLIENT -- POST /api/intercept/request --> FLASK[Gateway Ingestion Layer]
FLASK --> ENGINE[InterceptEngine Rule Processor]
ENGINE <--> SQLITE[(SQLite Persistent Rules Storage)]
ENGINE <--> PLUGINS[Python Programmatic Plugins]
ENGINE -- Modified Instructions --> HTTP_CLIENT
ENGINE -- Live WebSocket Streaming --> DASH[Real-Time Command Dashboard]
end
HTTP_CLIENT --> UPSTREAM[Upstream Target API / Server]
UPSTREAM -- Server Response --> HTTP_CLIENT
HTTP_CLIENT -- POST /api/intercept/response --> FLASK
```
## ⚙️ 核心能力与工程特性
### 1. 🛡️ 确定性双模拦截 Pipeline
DittoNet 旨在跨两种不同的网络拓扑无缝运行:
* **同步远程桥接**:将完整的 HTTP 请求头、查询参数和原始二进制 payload 转发到专用桌面服务器(`/api/intercept/request`)。上游服务器的响应会在 DOM 渲染前被拦截(`/api/intercept/response`),从而允许实时的 Python 处理。
* **独立零延迟本地引擎**:在离线或高速环境下运行时,DittoNet 会直接在 Dart 内存中评估持久化规则,从而避免产生网络序列化延迟。
### 2. ⚡ AST 感知流量修改与优先级引擎
核心拦截引擎在所有流量规则中应用严格且确定性的执行层级:
1. `BLOCK`:立即中断网络分发,并返回经过处理的 HTTP 403 响应。
2. `REDIRECT`:指示移动客户端将匹配的请求重新路由到指定的备用 URL,并在引擎响应中作为 `redirectUrl` 字段返回。
3. `MATCH_REPLACE`:在实时的请求和响应体中执行精确的字符串和正则表达式替换。
4. `BODY_REPLACE`:覆盖整个 payload。自动检测 `application/json` MIME 类型,并将字符串解析为结构化的 AST 字典,以确保有效的 JSON 格式。
5. `HEADER_INJECT`:通过使用 `Key: Value` 冒号分隔格式解析 `matchStr` 字段,将自定义的键值对 header 附加到出站请求或入站响应中。
### 3. 📡 W3C HAR 1.2 会话遥测与序列化
无需外部网络嗅探器即可捕获生产级的网络遥测数据:
* **完全兼容 W3C 规范**:记录完整的 HTTP 事务记录,包括微秒级的 DNS/TCP 持续时间、请求/响应头、查询字符串、cookie、状态码以及响应体。
* **原生 Pipeline 导出**:将数兆字节的流量捕获数据直接序列化到本地存储,或将标准化的 `.har` 会话文件导出到 Burp Suite、OWASP ZAP 或 Postman 中。
### 4. 💉 运行时 DOM Hooking 与沙盒执行
以精确的时机控制运行时 JavaScript 执行环境:
* **生命周期脚本注入**:安排自定义的 JavaScript hooking 代码片段在 `DOCUMENT_START` 阶段执行——确保在目标网页构建其 DOM 树或执行防篡改脚本之前注入 payload。
* **细粒度 Origin 沙盒**:实施严格的、针对特定域名的安全策略,控制每个 origin 的硬件访问权限(摄像头、麦克风、地理位置)以及 JavaScript 执行权限。
### 5. 🛠️ 内嵌 DevTools 资源服务器
在物理隔离或网络受限的企业网络中执行复杂的 DOM 调试:
* 将压缩后的行业标准开发者控制台(**Eruda** 和 **vConsole**)直接绑定到应用程序内存中。
* **100% 离线韧性**:拦截浏览器内部的资源请求,并直接从本地 RAM 提供开发者套件,从而消除在离线审计期间因外部依赖导致的故障。
### 6. 🐍 可编程的 Python 后端与滚动内存缓存
* **有界滚动日志架构**:基于内存中的 `OrderedDict` 构建,受可自定义的 `max_logs` 阈值(默认为 `1000`)限制。自动剔除最旧的网络事务,防止在高并发自动化 API 模糊测试期间耗尽 RAM。
* **声明式 Python 装饰器**:使用简洁的装饰器语法,在几秒钟内扩展服务器功能:
```
from ditto_interceptor import DittoServer
server = DittoServer(port=5000, db_path="rules.db")
@server.inspector("*api/v2/auth*")
def inspect_auth_flow(flow_id, phase, headers, body):
print(f"[{phase}] Intercepted authentication transaction: {flow_id}")
@server.plugin("PrivilegeEscalationHook")
def elevate_privileges(flow_id, phase, headers, body):
if phase == "Response" and isinstance(body, dict) and "role" in body:
body["role"] = "super_admin"
return headers, body
return headers, body
if __name__ == "__main__":
server.run()
```
## 📡 API JSON Schema 规范
在**同步远程模式**下运行时,移动客户端通过标准化的 JSON payload 与 Python 后端进行通信:
### `POST /api/intercept/request`
在上游网络分发之前接收。
```
{
"flowId": "8f9d2a10-4b3c-11ee-be56-0242ac120002",
"url": "https://api.targetdomain.com/v1/user/profile",
"method": "POST",
"headers": {
"User-Agent": "Mozilla/5.0 (Linux; Android 14)...",
"Authorization": "Bearer eyJhbGciOi..."
},
"body": "{\"user_id\": 84920}"
}
```
### `POST /api/intercept/response`
在接收到上游服务器响应字节后接收。
```
{
"flowId": "8f9d2a10-4b3c-11ee-be56-0242ac120002",
"url": "https://api.targetdomain.com/v1/user/profile",
"statusCode": 200,
"headers": {
"Content-Type": "application/json; charset=utf-8"
},
"body": "{\"status\": \"success\", \"account_tier\": \"standard\"}"
}
```
## 🚀 快速入门与部署基础设施
### 1. 部署 Python 指挥中心(`Ditto Server`)
```
cd "Ditto Server"
python -m venv .venv
# Windows: .venv\Scripts\activate | macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
python test_implementation.py
```
*在 `http://localhost:5000` 访问实时的 WebSocket 流式传输仪表板。*
### 2. 编译运行时客户端(`Ditto Mobile`)
```
cd "Ditto Mobile"
flutter pub get
flutter analyze --no-fatal-infos
flutter build apk --release
```
*将生成于 `build/app/outputs/flutter-apk/app-release.apk` 的生产环境发布包部署到您的目标 Android 设备上。*
## ⭐ 支持与基础设施贡献
如果 DittoNet 加速了您的逆向工程 pipeline 或渗透测试基础设施,请考虑支持我们的持续开发:
| Bitcoin (BTC) 赞助 | USDT (Tron TRC20) 赞助 |
| :---: | :---: |
|

|

|
| `16xTx25nuwDQ9gKwumJgjJCfRXVgag27vP` | `TNhAhjhvw1c1CyayxreLNxhD8u8UViLiY5` |
DittoNet 基础设施 • 确定性的移动流量拦截与分析
标签:SSL绕过, 中间人攻击(MITM), 云资产清单, 抓包工具, 服务管理, 移动开发, 网络调试, 自动化, 逆向工具, 逆向工程