记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

通过在节点服务器部署MITM劫持奈飞cookie实现免费观看netflix

通过在节点服务器部署MITM劫持奈飞cookie实现免费观看netflix
教程文档
教程文档
安装x-ui:
XML/HTML代码
  1. bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
检测是否解锁奈飞:
XML/HTML代码
  1. #下载检测解锁程序
  2. wget -O nf https://github.com/sjlleo/netflix-verify/releases/download/v3.1.0/nf_linux_amd64 && chmod +x nf
  3. #执行
  4. ./nf
warp解锁奈飞(WireGuard 网络接口模式)
XML/HTML代码
  1. # 自动配置 WARP WireGuard 双栈全局网络
  2. bash <(curl -fsSL git.io/warp.sh) d
  3. # 自动配置 WARP WireGuard IPv4 网络
  4. bash <(curl -fsSL git.io/warp.sh) 4
  5. # 自动配置 WARP WireGuard IPv6 网络
  6. bash <(curl -fsSL git.io/warp.sh) 6
  7. # Cloudflare WARP 一键配置脚本 功能菜单
  8. bash <(curl -fsSL git.io/warp.sh) menu
good-mitm
XML/HTML代码
  1. # 生成自签CA私钥和证书
  2. ./good-mitm genca
  3. # 执行good-mitm
  4. ./good-mitm run -r netflix.yaml
  5. # 后台执行
  6. nohup ./good-mitm run -r netflix.yaml > goodmitm.log 2>&1 &
good-mitm配置文件
XML/HTML代码
  1. - name: "netflix"
  2.   mitm: "*.netflix.com"
  3.   filters:
  4.     url-regex: '^https:\/\/(www\.)?netflix\.com'
  5.   actions:
  6.     - modify-request:
  7.         cookie:
  8.           key: NetflixId
  9.           value: 填入你的NetflixId
  10.     - modify-request:
  11.         cookie:
  12.           key: SecureNetflixId
  13.           value: 填入你的SecureNetflixId
  14.     - modify-response:
  15.         cookie:
  16.           key: NetflixId
  17.           remove: true
  18.     - modify-response:
  19.         cookie:
  20.           key: SecureNetflixId
  21.           remove: true
x-ui配置模板
XML/HTML代码
  1. {
  2.   "api": {
  3.     "services": [
  4.       "HandlerService",
  5.       "LoggerService",
  6.       "StatsService"
  7.     ],
  8.     "tag": "api"
  9.   },
  10.   "inbounds": [
  11.     {
  12.         "listen": "127.0.0.1",
  13.         "port": 30000,
  14.         "protocol": "socks",
  15.         "sniffing": {
  16.             "enabled": true,
  17.             "destOverride": ["http", "tls"]
  18.         }
  19.     }
  20.   ],
  21.   "outbounds": [
  22.     {
  23.       "protocol": "freedom",
  24.       "settings": {}
  25.     },
  26.     {
  27.         "tag": "netflix_proxy",
  28.         "protocol": "http",
  29.         "settings": {
  30.          "servers": [
  31.            {
  32.              "address": "127.0.0.1",
  33.              "port": 34567
  34.            }
  35.          ]
  36.         },
  37.         "streamSettings": {
  38.              "security": "none",
  39.              "tlsSettings": {
  40.                "allowInsecure": false
  41.             }
  42.         }
  43.     },
  44.     {
  45.       "protocol": "blackhole",
  46.       "settings": {},
  47.       "tag": "blocked"
  48.     }
  49.   ],
  50.   "policy": {
  51.     "system": {
  52.       "statsInboundDownlink": true,
  53.       "statsInboundUplink": true
  54.     }
  55.   },
  56.   "routing": {
  57.     "rules": [
  58.       {
  59.         "type": "field",
  60.         "outboundTag": "netflix_proxy",
  61.         "domain": [
  62.           "geosite:netflix"
  63.         ]
  64.       },
  65.       {
  66.         "inboundTag": [
  67.           "api"
  68.         ],
  69.         "outboundTag": "api",
  70.         "type": "field"
  71.       },
  72.       {
  73.         "ip": [
  74.           "geoip:private"
  75.         ],
  76.         "outboundTag": "blocked",
  77.         "type": "field"
  78.       },
  79.       {
  80.         "outboundTag": "blocked",
  81.         "protocol": [
  82.           "bittorrent"
  83.         ],
  84.         "type": "field"
  85.       }
  86.     ]
  87.   },
  88.   "stats": {}
  89. }
证书检测工具
视频文稿
其实我早在节点钓鱼那期就演示过该功能的实现原理,就是利用了中间人劫持,这里再来简单解释以下,假设我们现在通过节点使用http的方式登陆奈飞,在浏览器中输入账号密码点击登陆,数据包通过代理发送到了节点服务器,节点将数据转交给奈飞,奈飞拿到数据后会验证账号密码是否正确,验证通过后,奈飞会返回一串无规则的字符给你,每个用户的字符串都是唯一的,这串字符叫做session,浏览器拿到session后,会保存在cookie里,此时就代表你登陆成功了,这时你将观看影片的请求发送给奈飞,由于http是无状态的协议,无状态的意思是这次的请求和上一次请求没有任何关系,也就是说奈飞并不知道你刚才已经登陆了。为了维持登陆状态,我们在发送请求的时候需要携带cookie,cookie里面保存了刚才服务器返回给我们的session,奈飞拿到cookie里的session后,可以通过session的唯一性来确定你是哪个用户,并为你播放影片,如果session错误或者过期了的话将会跳转到重新登陆的页面让你获取新的session
所以session起到了维持登陆状态的作用,此时就存在安全问题,如果别人盗用了你的session,就可以实现无需账号密码直接登陆你的账号了,正常上网的情况下不太可能被盗用,就怕中了木马病毒直接被黑客控制了电脑,前段时间博主AK的账号被盗就是被黑客钓鱼中了木马病毒导致浏览器里保存的cookie被黑客获取了,所以无需账号密码就能登陆youtube并发布诈骗直播
人的疏忽大意才是整个安全系统中最大的漏洞,社工yyds,给大家推荐一部电影:《我是谁:没有绝对安全的系统 》,影片将社工发挥到了极致
讲了这么多和我们今天讲的奈飞劫持有什么关系?
关系很大,速蛙云的福利社就是通过节点自带cookie实现无需登陆即可免费观看奈飞的。
当我们连接了速蛙的节点,在没有登陆情况下给奈飞发送播放影片的请求,数据来到节点后,发现你要访问奈飞,于是节点将他保存在服务器里的奈飞cookie附加到你的请求里,当奈飞收到请求后发现你已经是登陆状态了,就会为你播放影片了。
这样就实现了无需登陆即可直接观看奈飞,这样做的好处是多个用户使用同一节点都无需登陆即可直接观看,并且可以突破屏幕限制,奈飞的高级会员最多只允许4块屏幕同时在线观看,而使用这种方法我实测开启7个屏幕同时在线播放没有被限制,具体上限没有测试。
以上讲的是http的情况下,请求数据到达节点后完全是明文状态,所以可以很轻易的对数据进行修改,而实际情况是现在访问奈飞和绝大多数网站都是使用https,也就是数据经过了tls加密,数据来到节点服务器之后,他根本无法把cookie插入到加密的数据中,要插进去的话必须先将数据解密,此时就引入了https中间人劫持的手段,https的通信很复杂,我在节点搭建系列trojan那节详细介绍过了https的通信过程和证书的颁发流程,我这里简单的讲一下劫持,不再进行详细说明,感兴趣的朋友可以回去看下之前的内容
首先浏览器发起访问奈飞的请求,由于使用https访问,所以会先进行tls握手,节点收到数据后发现是访问奈飞,会用自己的ca私钥给奈飞颁发一个证书,将证书发送给浏览器并对他说:我就是奈飞,这是我的证书,同时将自己伪装成客户端向奈飞服务器发起tls握手,这段握手就按正常的流程走就行了,关键是浏览器和节点服务器之间的握手,浏览器拿到节点的证书后,发现证书并不是受信任的ca机构颁发的证书,于是发出报警,此时用户需要自己判断,是否选择相信这个ca机构,如果你要使用福利社你就必须相信,相信的方式就是将这个节点的ca证书添加到电脑里的受信任根证书颁发机构列表,之后浏览器就不再报警,你访问奈飞的https流量经过节点就会被解密,然后节点将cookie插入进去,再通过节点和奈飞之间的tls连接将数据加密后发送给奈飞。奈飞解密数据后,得知了节点服务器的意图,于是将响应数据加密后发送给节点服务器,节点服务器拿到数据后再解密,解密后再通过和浏览器建立的tls连接将数据加密后发给浏览器,浏览器再进行解密,这就是劫持实现免费观看奈飞的原理。劫持P站和迪士尼也是同样的原理。
此时就埋下了一颗定时核弹
为了使用福利社我们选择相信节点服务器的ca证书,而这个ca证书可以为任何网站颁发证书,节点可以人为的设置需要劫持的网站,也就是说google,youtube、facebook等所有网站的https流量发给这个节点都能被解密,由于我们选择相信ca证书导致浏览器不会再报警,即使被劫持了也毫无感知,这就是随意相信CA证书的后果,存在巨大的安全隐患。
我这里只在理论上给大家说明可行性,并不代表速蛙以前就这么干了,大家要做的就是提高网络安全意识,不要乱安装ca证书。如果你以前在不知情的情况下安装过证书了我会在演示完奈飞劫持后教大家怎么删除。
接下来就来搭建一个节点实现奈飞劫持,先声明我这里只是为了理论结合实践让大家能更清晰的理解劫持的原理,并不建议大家这么做,自己用下还可以,不要使用陌生人提供的劫持服务,存在很严重的安全隐患。
 

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):