侧边栏壁纸
  • 累计撰写 45 篇文章
  • 累计创建 87 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

NaiveProxy完美隐藏搭建方案

Even
2022-11-03 / 0 评论 / 4 点赞 / 10627 阅读 / 7916 字

NaiveProxy

NaiveProxy,挪威语叫NaïveProxy,翻译成中文:“天真的代理”,是2019年底由klzgrad大神开发的一种突破GFW网络审查的新型科学上网代理技术,它使用Chrome的网络堆栈来伪装流量,具有较强的抗审查能力和较低的可检测性,重用Chrome网络堆栈是确保性能和安全性的最佳实践。

NaiveProxy的原理和trojan很像,除去教程搭建的节点消除了服务器tls指纹和隐藏了所有翻墙服务以及伪装成正常网站,NaiveProxy协议更上一层,消除了客户端的tls指纹和tls-in-tls特征,并且naive协议基于http2,自带多路复用,对比ws需要频繁握手来讲延迟更低,前面也说过NaiveProxy客户端使用chrome浏览器内核作为网络协议栈,从防火墙的角度来看,就像是你在正常的使用正常的谷歌浏览器访问正常的网站。

NaiveProxy还可以缓解以下流量攻击:

  • 网站指纹识别/流量分类:通过 HTTP/2 中的流量多路复用来缓解。
  • TLS参数指纹识别:因重用Chrome的网络堆栈而失败。
  • 主动探测:被应用程序前端击败,即通过应用层路由将代理服务器隐藏在常用前端的后面。
  • 基于长度的流量分析:通过长度填充缓解。

该代码由一系列补丁程序组成,这些补丁程序在每个新的Chrome版本中都经过了变形和重新设计。

🔗 NaiveProxy项目地址:https://github.com/klzgrad/naiveproxy

1、NaiveProxy的工作原理

工作原理架构:[浏览器 → NaiveProxy客户端] ⟶ GFW ⟶ [常用前端 → NaiveProxy服务端] ⟶ 互联网

由于 NaiveProxy 使用Chrome的网络堆栈,GFW审查截获的流量行为与Chrome和标准前端(如 Caddy、HAProxy)之间的常规 HTTP/2 流量完全相同。前端还会将未经身份验证的用户和活动探测器重新路由到后端HTTP服务器,从而使得无法检测到代理的存在,比如像这样:探查⟶常用前端⟶网站页面。

从 NaiveProxy V84 版本开始,用户可以在没有Naive服务器的情况下运行Caddy转发代理的Naive分支。

2、NaiveProxy与Trojan的优点与区别

Trojan最大的优点就是伪装成互联网最常见的HTTPS流量,而NaiveProxy最大的优势不仅伪装成 HTTP/2 的流量,而且使用互联网最常用的浏览器Chrome网络堆栈的指纹,更加难以被识别,而且这些也是Go语言模仿不了的。

3、NaiveProxy服务器搭建教程

编译安装caddy+naive:

# 安装golang
apt install golang-go

go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

~/go/bin/xcaddy build --with 

github.com/caddyserver/forwardproxy@caddy2=github.com/klzgrad/forwardproxy@naive

如果第二条指令执行出错,可以尝试执行go env -w GO111MODULE=on 再重试,还不行的话请自行搜索升级go版本方法

Caddyfile配置:

:443, naive.buliang0.tk #你的域名
tls example@example.com #你的邮箱
route {
 forward_proxy {
   basic_auth user pass #用户名和密码
   hide_ip
   hide_via
   probe_resistance
  }
 #支持多用户
 forward_proxy {
   basic_auth user2 pass2 #用户名和密码
   hide_ip
   hide_via
   probe_resistance
  }
 reverse_proxy  https://demo.cloudreve.org  { #伪装网址
   header_up  Host  {upstream_hostport}
   header_up  X-Forwarded-Host  {host}
  }
}

caddy常用指令:

# 前台运行caddy
./caddy run

# 后台运行caddy
./caddy start

# 停止caddy
./caddy stop

# 重载配置
./caddy reload

caddy配置守护进程(开机自启):https://github.com/klzgrad/naiveproxy/wiki/Run-Caddy-as-a-daemon

自定义端口:

naive如果要用自定义端口,需要使用json的配置方式,新手可以直接跳过

config.json内容:

//需删除注释内容caddy才能加载
{
 "apps": {
   "http": {
     "servers": {
       "srv0": {
         "listen": [
           ":4431"   //监听端口
         ],
         "routes": [
           {
             "handle": [
               {
                 "auth_user_deprecated": "user",   //用户名
                 "auth_pass_deprecated": "pass",  //密码
                 "handler": "forward_proxy",
                 "hide_ip": true,
                 "hide_via": true,
                 "probe_resistance": {}
               }
             ]
           },
           {
             "handle": [
               {
                 "handler": "reverse_proxy",
                 "headers": {
                   "request": {
                     "set": {
                       "Host": [
                         "{http.reverse_proxy.upstream.hostport}"
                       ],
                       "X-Forwarded-Host": [
                         "{http.request.host}"
                       ]
                     }
                   }
                 },
                 "transport": {
                   "protocol": "http",
                   "tls": {}
                 },
                 "upstreams": [
                   {
                     "dial": "demo.cloudreve.org:443"  //伪装网址
                   }
                 ]
               }
             ]
           }
         ],
         "tls_connection_policies": [
           {
             "match": {
               "sni": [
                 "naive.buliang0.tk"  //域名
               ]
             },
             "certificate_selection": {
               "any_tag": [
                 "cert0"
               ]
             }
           }
         ],
         "automatic_https": {
           "disable": true
         }
       }
     }
   },
   "tls": {
     "certificates": {
       "load_files": [
         {
           "certificate": "a.crt",  //公钥
           "key": "a.key",   //私钥
           "tags": [
             "cert0"
           ]
         }
       ]
     }
   }
 }
}

启动服务

nohup ./caddy run --config caddy.json >caddy.log 2<&1 &

安装并启用 BBR 加速

cd /usr/src && wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

温馨提醒:如果修改版BBR加速模块工作不正常,请使用原版BBR模块加速。

由于新版本Linux系统自带BBR加速模块,所以你可以直接执行以下命令,启用原版BBR加速。命令如下:

bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sysctl -p

至此,NaiveProxy服务器端就搭建完成了。

客户端配置

1)、Naive客户端:https://github.com/klzgrad/naiveproxy/releases/latest

客户端配置:

{
  "listen": "socks://127.0.0.1:1080",
  "proxy": "https://user:pass@example.com"
}

2)、Qv2ray 中 NaiveProxy插件:https://www.scwcd.cn/archives/27.html

xmSduG08

4、TLS指纹查看

jarm工具:https://github.com/salesforce/jarm

网络空间资产搜索引擎:https://fofa.info

# 下载jarm
wget https://raw.githubusercontent.com/salesforce/jarm/master/jarm.py

# 查看网站jarm指纹
python3 jarm.py naive.buliang0.tk

🔗原文链接:https://bulianglin.com/archives/naive.html

4

评论区