un-nf/404
GitHub: un-nf/404
一款多层在线指纹混淆工具,通过 Rust 代理和 Linux eBPF 模块实现对浏览器、TLS、硬件及网络协议栈指纹的全面伪装,对抗跨会话追踪。
Stars: 67 | Forks: 3
# 404 v1.0
*404 充当你与那些收集你数据的人之间的中间人。*
Rust 隐私代理 & Linux 内核模块。完全控制客户端指纹。
**目录:**
- [***查看手册***](https://un-nf.github.io/404-docs/)
- [什么是 404?](https://un-nf.github.io/404-docs/Overview/whatIs/)
- [快速开始](https://un-nf.github.io/404-docs/dev/downloadDev/)
- [为什么这很重要?](https://un-nf.github.io/404-docs/Overview/why404/)
https://github.com/user-attachments/assets/fb403522-ac09-4c49-a599-5edd53f33994
## 快速确认与警告
*运行此软件即表示您理解:*
- 此代理将在首次运行时生成本地 CA 和密钥对。目前,尚无从信任存储中删除它们的功能或说明。
- **此代理会终止 TLS**,通过此代理的用户名和密码可能会暂时存储/显示在***仅限本地***的日志中。请勿分享日志。
- 这是测试版软件 —— 无保修、无保证、仅提供最低限度的支持。
*...并同意:*
- 您不会使用您的主账户。
- 您不会与任何人分享您的 CA 证书。
- 如果您发现安全问题,请报告至 404co@proton.me
[加入 Discord 获取支持!](https://discord.gg/X9QrVm6dqS)
**主要讨论:** GitHub 讨论区
*替代社区选项即将推出!*
## 什么是 404?
404 包含两个主要模块:
- STATIC Proxy - *合成流量与 TLS 身份伪装*
- Linux eBPF 模块
### STATIC Proxy
#### *合成流量与 TLS 身份伪装*
STATIC 代理是从头开始构建的,专门用于让用户精细控制其在线指纹。不仅仅是浏览器指纹,还包括他们选择通过代理路由的任何设备或应用程序。
不相信我?请验证我的工作...
1. https://demo.fingerprint.com/playground
2. https://browserleaks.com/
3. https://coveryourtracks.eff.org/
4. https://whatismybrowser.com/
5. https://httpbin.org/headers
### Linux eBPF 模块
eBPF 模块同样非常简单。它利用了强大、快速、文档齐全的低级 Linux 内核钩子。通过将 eBPF 程序附加到 Linux 的 `Traffic Control` (`tc`) 出站钩子,我们可以广泛地修改数据包。
目前,已实现以下功能:
```
**IPv4:**
- TTL (Time To Live) -> forced to 255
- TOS (Type of Service) -> set to 0x10
- IP ID (Identification) -> randomized per packet
- TCP window size -> 65535
- TCP initial sequence number -> randomized (again)
- TCP window scale -> 5
- TCP MSS (Maximum Segment Size) -> 1460
- TCP timestamps -> randomized
**IPv6:**
- Hop limit -> forced to 255
- Flow label -> randomized
```
## 如何在我的机器上安装并运行 404?
### 1. 安装依赖项并配置 PATH
### 2. 运行代理
**Linux/macOS:**
```
cd ~/git/404/src/STATIC_proxy # CHANGE to wherever you unzipped the 404 folder.
cargo run # This will take a while on the first run (~5-minutes)
```
**Windows:**
```
cd %USERPROFILE%\git\404\src\STATIC_proxy # CHANGE to wherever you unzipped the 404 folder.
cargo run # This will take a while on the first run (~5-minutes)
```
### 3. 信任代理生成的 CA
### 4. 配置你的浏览器
将你的浏览器(或系统)设置为使用 `localhost:8080`(或 `127.0.0.1:8080`)作为 HTTP/HTTPS 代理。
- **Chrome/Edge:** 设置 -> 系统 -> 打开您计算机的代理设置
- **Firefox:** 设置 -> 网络设置 -> 手动代理配置 -> HTTP 代理: `127.0.0.1`,端口: `8080`,勾选 "也将此代理用于 HTTPS"
**重要:** **此工具是 TLS 终止代理(中间人),并且可以访问你的明文 HTTPS 数据(用户名、密码、某些消息协议等)。绝对不要出于*任何原因*与*任何人*分享你的 CA 证书。**
*出于我不清楚的原因,Firefox 上的用户体验稍微稳定一些。希望能得到一些见解。登录流程已在两种浏览器中经过测试并正常工作。*
### 5. *可选* - 配置 Linux 虚拟机(如果不使用 Linux)
**虚拟机设置:**
你 *100% 可以* 配置一个虚拟机,并将流量从你的主机路由到虚拟机客户机,虚拟机配置说明可在 [eBPF 文档](https://un-nf.github.io/404-docs/dev/ebpf/)中找到。
目前,仅运行 STATIC 应该就足够了,尽管如果没有 Linux 内核,网络级别的混淆是无法实现的(目前)。
## 为什么我应该在我的机器上安装并运行它?
你的在线指纹正变得越来越独特。现代追踪不仅依赖于 cookie;它从数百个数据点构建“个性云”:TLS 握手模式 (JA3/JA4)、HTTP 头组合、Canvas 渲染怪癖、麦克风/扬声器/耳机型号和品牌、字体枚举、WebGL 参数、音频上下文特征以及行为计时模式...... 仅举几例。
这些半唯一值(.nav 属性、时区、屏幕分辨率、浏览器类型等)的集合允许服务器非常自信地将用户识别为并非半唯一,而是完全唯一。
商业指纹服务,如 FingerprintJS、Fingerprint.com 和 DataDome,可以跨以下情况识别用户:
- 同一设备上的不同浏览器
- 私密/隐身模式(链接到“公开”浏览配置文件)
- VPN 连接(或代理,甚至是住宅代理)
- Cookie 和缓存清除
- 不同的网络
这不是偏执。这是监控资本主义。
Windows
**通过 winget 安装** 1. 点击 [此处](https://static.rust-lang.org/rustup/dist/i686-pc-windows-msvc/rustup-init.exe) (32位) 下载 rust-up。打开下载的 `.exe` 文件并按照设置说明操作。 - 使用 "Workload" (工作负载) 选项卡选择 "Desktop Development with C++" (使用 C++ 的桌面开发) 选项。 - [帮助](https://rust-lang.github.io/rustup/installation/windows-msvc.html) 2. 打开命令提示符 - 按 Windows + R - 在运行对话框中输入 "cmd"。 3. 下载依赖项 ``` winget install --id Kitware.CMake -e && winget install --id NASM.NASM -e ``` *安装后重启你的 shell。工具应自动添加到你的 PATH 中。*macOS
**通过 homebrew 安装(推荐)** 1. 打开终端 - 按 Command + Space - 搜索 "Terminal" 并按 Enter 2. 确保你已安装 homebrew a. ``` xcode-select --install ``` b. ``` /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` 3. 使用 homebrew 下载依赖项: ``` brew install rust nasm cmake ``` *安装后重启你的 shell。工具应自动添加到你的 PATH 中。*Linux
**通过包管理器安装** ``` # Debian/Ubuntu $ sudo apt update $ sudo apt install -y curl build-essential nasm cmake # Arch $ sudo pacman -S rust nasm cmake # Fedora/RHEL $ sudo dnf install -y rust cargo nasm cmake # 通过 rustup 安装 Rust (如果未通过 package manager 安装) $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh $ source $HOME/.cargo/env ```Firefox
**Firefox 使用自己的信任存储,你必须在应用程序中信任该 CA:** Firefox -> 设置 -> 隐私与安全 -> 证书 -> 查看证书 -> 机构标签页 -> 导入 -> 选择 static-ca.crt -> 勾选 "信任此 CA 以标识网站" -> 确定Windows
**使用 `certutil` 信任 CA:** ``` certutil.exe -addstore root C:\\path\\to\\myCA.pem ``` **...或手动操作:** 1. 导航到 `404/` 目录并找到 `../static_proxy/certs/` 目录。 2. 双击标记为 `static-ca.crt` 的文件(可能显示时没有 .crt 扩展名) 3. 点击 `安装证书...` 4. 选择 `当前用户` 并点击 `下一步` 5. 选择 `将所有的证书都放入下列存储` 并点击 `浏览...` 6. 选择 `受信任的根证书颁发机构` 并点击 `确定` 7. 点击 `下一步` 然后 `完成`macOS
``` sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain static_proxy/certs/static-ca.crt ``` **或使用 GUI:** 1. 打开钥匙串访问 2. 文件 -> 导入项目 -> 选择 static-ca.crt 3. 找到该证书,双击它 4. 展开 "信任" 并将 "使用此证书时" 设置为 "始终信任"Linux
``` # 复制 CA 到 system trust store sudo cp static_proxy/certs/static-ca.crt /usr/local/share/ca-certificates/static-ca.crt sudo update-ca-certificates ```标签:Canvas指纹, HTTPS解密, Linux内核模块, Rust, TLS代理, 中间人代理, 匿名化, 反追踪, 可视化界面, 底层编程, 指纹混淆, 数据防泄露, 本地CA, 流量伪装, 流量劫持, 浏览器指纹, 爬虫对抗, 硬件欺骗, 网络安全, 网络安全, 网络流量审计, 跨会话追踪, 身份隐藏, 通知系统, 隐私保护, 隐私保护, 隐私增强技术