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
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 ```
### 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
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 ```
### 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 和缓存清除 - 不同的网络 这不是偏执。这是监控资本主义。
标签:Canvas指纹, HTTPS解密, Linux内核模块, Rust, TLS代理, 中间人代理, 匿名化, 反追踪, 可视化界面, 底层编程, 指纹混淆, 数据防泄露, 本地CA, 流量伪装, 流量劫持, 浏览器指纹, 爬虫对抗, 硬件欺骗, 网络安全, 网络安全, 网络流量审计, 跨会话追踪, 身份隐藏, 通知系统, 隐私保护, 隐私保护, 隐私增强技术