出于好奇的免流尝试

有一天上网,不经意被一个关键词"云免流"所吸引,经过各种度娘学习、爬贴+尝试,于是有了下文。—— 典型的故事开头….. :)


什么是免流

简言之就是三大运营商(电信、移动、联通)流量计费系统的漏洞,通过伪造特定的http header信息绕过流量计费。具体请看乌云截图。地址:http://www.wooyun.org/bugs/wooyun-2015-0165733

看公开时间,截至本文发布,估计漏洞已被人耍了两三年,难道回老家工作了,信息都滞后呢 :(

有人可能会问:这么长时间了,漏洞也公开了,运营商难道就不能杜绝么?

答:由于运营商计费形式已形成一套,很难说改就改,而且运营商存在各种各种的优惠业务是以不需要流量来吸引消费者开通的,比如说联通的Wo阅读,通过购买电子书收费,但在线看书就不扣除流量的政策来经营。所以运营商要杜绝这个漏洞,还需要一定的时间,一直在玩免流的人也知道,到了今天已经很多方法都不能免流了,看以看出漏洞的影响力在慢慢地削弱。

《出于好奇的免流尝试》


全国都存在吗

这个不是的,虽然原理是都可以用,但是运营商也都知道这个漏洞,但是因为是免费业务,有真正的客户是需要访问的,运营商也很无奈。当然,一些特定的地区把当地的服务器端口关闭了,从而使一些特定的地址不免流,当然,只要有免费业务,就会有线路。 还有些地区,例如重庆。重庆的移动公司针对云冕的群体,采用的方式是直接的关闭了x-online-host字段.基本上云冕靠的就是转发host才得以实现免流的。详见:http://www.fromgeek.com/telecom/59508.html 但是这也对重庆移动公司造成了很大的损失。基本上大部分的地区是可以用的,一小部分地区的确是死区,就是用不了。但是也有可能有人发掘出来能用的线路没公开。


漏洞利用原理

基本利用原理如下:

利用OpenVPN本身可以使用http代理的特性,也就是说,OpenVPN客户端不是直接和OpenVPN服务器连接,而是使用http代理进行连接。这个特性是OpenVPN的外围特性,不是其核心的,然而却能解决很多实际问题,它相当于隧道外面又套了一个隧道,不过这个外面的隧道并不是真实的隧道,因为它并没有封装,而仅仅是伪装了端口信息而已,然而不管怎么说,它还是使用http代理服务器的connect方法的。具体流程就是:

1.OpenVPN客户端连接http代理服务器(CONNECT方法)

2.http代理服务器连接OpenVPN服务器;

3.http代理服务器在OpenVPN客户端和OpenVPN服务器之间中转数据。


    那么为何要使用http代理连接OpenVPN服务器呢?这一般是为了对付防火墙的封堵,另外的意义就是,一般很容易在公网上找到http代理服务器,且该http代理支持CONNECT方法。这样的话,所有的OpenVPN的数据全部被伪装到了代理服务器的端口,成功绕过防火墙。这么做之所以可行,那是因为一般而言,http的80端口或者https的443端口是不被封锁的。

   使用http代理服务器唯一的副作用就是,OpenVPN服务器将得不到OpenVPN客户端的真实IP地址,所看到的只是http代理服务器的IP地址,这对于管理接口而言很不方便,也不便于根据用户IP设置策略。

   使用http代理的方式及其简单,那就是在OpenVPN客户端配置文件中加入一行:http-proxy xxx yyy zzz

    利用这个特性除了绕过防火墙,还能绕过计费系统,比如说:xxx.ticp.net 是我的路由器 ddns。如果 openvpn 设置为这样的话,那么 http 请求会是怎样的呢?
    看 remote 服务器是 wap.10086.cn 80,伪造了咱们 openvpn  的服务器地址为 wap.10086.cn 80
    同时使用 POST
 http://wap.10086.cn,相当于 Http 头部
    POST 
http://wap.10086.cn / HTTP/1.1
    那简直与手机 4G 访问 10086 的官网一样的请求头部,所以,你手机能免流了。

    备注:http-proxy xxx.ticp.net 8888 是我路由器的代理,这个代理能让你访问  wap.10086.cn 80 的时候,实际上是访问到了路由器自己的 openvpn  的服务器地址。从而 openvpn  连接成功了。


准备知识

接触的一个星期内,我做了些文章记录,方便阅读。

代理软件:

Tinyproxy:https://ixiqiao.cn/archives/148

Squid:https://ixiqiao.cn/archives/126

mproxy:https://ixiqiao.cn/archives/129

vpn软件:

openvpn:https://ixiqiao.cn/archives/90

路由器固件:

老毛子Padavan:https://ixiqiao.cn/archives/131

(除了这些软件外,还有使用http注射器、SSR、代理服务器实现免流的,大家可以百度学习更多免流方式… :)

开始搭建

方式一:使用花生壳 + 家里路由刷老毛子Padavan固件(自带openvpn + tinyproxy + mproxy + nvpproxy) + 公网IP (因为广东移动很多免流配置是需要 8080 或 80 端口才行的,但基本上大部分地区的电信已封锁这两个端口)

方式二:网上找一些流控平台,比如:西门吹雪、流量卫士、千流云、大猫哥、缤纷云控、小白免流、FreeMl、青云流控等等,注册会员,购买流量。即使购买流量也不贵,省心省钱。

方式三:找免费或破解的流控脚本自建平台这样你可以自用或,这个需要较强的动手能力和专业知识,不过从中可以学到的知识也很多。

我尝试过方式一成功连接,但会影响家里网速,有时也不稳定。最后还是通过一台阿里云搞掂,跟其他教程比起来可能会比较另类,因为我是在一台 windows 服务器下配置的。

我的软件组合是 CCProxy + nvpproxy(win版)+ openvpn(win版)+ openvpn(手机端)

nvpproxy配置(实现http转接),下载地址:《出于好奇的免流尝试》nvpproxy_win_64.zip

《出于好奇的免流尝试》

CCProxy配置(实现简单的流控,验证功能):

《出于好奇的免流尝试》

《出于好奇的免流尝试》

openvpn在使用需要验证的代理服务器时可以这样配置:

http-proxy 192.168.5.1 8080  #如果HTTP代理不需要用户名及密码认证
http-proxy 192.168.5.1 8080 stdin basic  #如果HTTP代理需要基本认证
http-proxy 192.168.5.1 8080 stdin ntlm  #如果HTTP代理需要NTLM认证

也可以把用户名密码(分做两行写)保存成一个文件,把stdin替换成密码文件的文件名。

又或者你想写到同一个配置文件,可以这样添加到**.ovpn配置文件里面:

<http-proxy-user-pass>
user
password
</http-proxy-user-pass>

openvpn服务端配置:

local 127.0.0.1

port 440

proto tcp

dev tun

ca ca.crt

cert server.crt

key server.key

dh dh1024.pem

server 10.8.0.0 255.255.255.0

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 114.114.114.114"

client-to-client

keepalive 10 120

cipher BF-CBC        

comp-lzo

max-clients 10

persist-key

persist-tun

status openvpn-status.log

verb 3

;mute 20

openvpn客户端配置:免流代码就是在这里配置的,自用的服务器配置就省略不贴了~


到这里,如果大家可能觉得很难搞,请忽略前面一万字,直接看这里:

前面说了,即使你搭建了所有服务软件,如果免流代码没用等于白费,这里提供一种傻瓜方式实现免流:(仅针对广东移动佛山、深圳地区;时间:2017年6月17日14:02:01还有效)

第一步:手机安装openvpn软件,安卓&苹果都有

第二步:通过openvpn导入以下配置文件,账号:test1000   密码:123456

(该配置属于内网配置,缺点是比较难连接上,连不上的请看下面 疑问 第三点):

client

dev tun

proto tcp

########免流代码########

remote / 80

;http-proxy-retry

;http-proxy [proxy server] [proxy port]

http-proxy-option EXT1 " "Host:freeml.leiting6.cn:440

http-proxy 211.138.250.72 80

http-proxy-option EXT1 Host:211.138.250.72

########免流代码########

resolv-retry infinite

nobind

persist-key

persist-tun

setenv IV_GUI_VER "de.blinkt.openvpn 0.6.17"

push route 114.114.114.114 114.114.115.115

machine-readable-output

connect-retry-max 5

connect-retry 5

resolv-retry 60

auth-user-pass

ns-cert-type server

comp-lzo

verb 3

#

<ca>

—–BEGIN CERTIFICATE—–

MIIFADCCA+igAwIBAgIJALP5ypRoVMazMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD

VQQGEwJDTjESMBAGA1UECBMJR3VhbmdEb25nMQ8wDQYDVQQHEwZGb3NoYW4xGDAW

BgNVBAoTD3d3dy5kbWt1YWlsLmNvbTEPMA0GA1UECxMGaVBob25lMRswGQYDVQQD

ExJ3d3cuZG1rdWFpbC5jb20gQ0ExEDAOBgNVBCkTB09wZW5WUE4xIjAgBgkqhkiG

9w0BCQEWE09wZW52cG5AZG1rdWFpbC5jb20wHhcNMTcwMTE1MDYyNjEzWhcNMjcw

MTEzMDYyNjEzWjCBsDELMAkGA1UEBhMCQ04xEjAQBgNVBAgTCUd1YW5nRG9uZzEP

MA0GA1UEBxMGRm9zaGFuMRgwFgYDVQQKEw93d3cuZG1rdWFpbC5jb20xDzANBgNV

BAsTBmlQaG9uZTEbMBkGA1UEAxMSd3d3LmRta3VhaWwuY29tIENBMRAwDgYDVQQp

EwdPcGVuVlBOMSIwIAYJKoZIhvcNAQkBFhNPcGVudnBuQGRta3VhaWwuY29tMIIB

IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqXswr9Fa9bqfWOZjM5Jzn5mR

S5rxitEg1Ld+ozMF7LXMitvyYbDgVUXiUWJ5NVvz9Tlo/7I6QYy43h9Ll4ut2vO5

AkB1MZZ7R+I3hTHOVZq3A9gy3KLrf9VskGEBuu+Oq+vuaHguw+bx1cnSbepKK+2R

1aDaioiEL5IXdVvBwW2xNG5rnT2EARoTf9lQd754yuaEd/KShDxPxTEiCixd3YLw

qgJj/fKAZiwv57S+NZkPdd/dNjqDCLwz4WDk9h9SxS4hg4h28jxviOZJO6Tdhwoa

fXxlKsma2uBwIEg4XgMbySiW3QkXtICPLYR++tBTw+4QYO2isJSPMiDIEmAVtQID

AQABo4IBGTCCARUwHQYDVR0OBBYEFN3ACx9l5FwlwwOeqqcqN7FRUPTWMIHlBgNV

HSMEgd0wgdqAFN3ACx9l5FwlwwOeqqcqN7FRUPTWoYG2pIGzMIGwMQswCQYDVQQG

EwJDTjESMBAGA1UECBMJR3VhbmdEb25nMQ8wDQYDVQQHEwZGb3NoYW4xGDAWBgNV

BAoTD3d3dy5kbWt1YWlsLmNvbTEPMA0GA1UECxMGaVBob25lMRswGQYDVQQDExJ3

d3cuZG1rdWFpbC5jb20gQ0ExEDAOBgNVBCkTB09wZW5WUE4xIjAgBgkqhkiG9w0B

CQEWE09wZW52cG5AZG1rdWFpbC5jb22CCQCz+cqUaFTGszAMBgNVHRMEBTADAQH/

MA0GCSqGSIb3DQEBCwUAA4IBAQBRoh++n3YPZjwqZN0ovTbrFE1uR2tkpJIgpni9

S0ypjU+GxE4rU/SNcpEpzj5yjrAFh5dzDv9FajcPE4wcobu6v2sl42zeYv359oap

Zh79JJ01oxIAwPN7bz4Jljys8qS4p7a54eINwbaEk3OBNUe72ceNihDk+FD4PJn6

mQW/zZ+PJqDmXl2wteRX37rgxPQEY0MUtzSQEJ2zFJZp4VyWQZDbN5SIoz0O2tTX

/S9/quhF7eVyd4K9UBe4G0P//RuLiANr47f+7R0RGdHOAmlVcd+EPbNhQujcrAmk

s+qUE8qSw/CWHrYAzVGuPYqwKPVRPswxctLQdRBgqrsENYwS

—–END CERTIFICATE—–

</ca>

key-direction 1

<tls-auth>

#

# 2048 bit OpenVPN static key

#

—–BEGIN OpenVPN Static key V1—–

899a06a89adc10e0aaed8bc30ca114f4

7d5ae9dcbb5f03458f72aae7883316ef

293b48bdd0fea344d737ca6fa9e89ed7

de55638d8a0f28dcb5e139125e436045

7f84cbd380cd9197efedc4129abbf76a

94dfcdc2abdf07075239a360f8cb5b40

4d7e223f56f5dfdc2d0671b24c9bb4aa

e1104ba95db9ab6ae9fd37c828627c3f

1734d6b534a185ee1b04a5626fd2eebb

8c735139520fcdf4d7b9d993838a2531

33973556918ea92056b7c0e042f879e7

d21e2a58cf43572a45d5a9dbd9370ba0

2990289ddc9f95326a6f73515fc27aa7

0955a285618c61ec561ea7d5d1980053

a32e5779bcb14b3e457652749e64c8fc

85a6a15c8a9bf0caf7c07f744b8b8d7d

—–END OpenVPN Static key V1—–

</tls-auth>


疑问

  1. openvpn链接成功后,怎样查询是否免流成功呢?
    测试前发短信 CXLL 到 10086 查询余量,连上openvpn后下载了一个5MB左右的文件,再发短信查询流量,如果一点流量不扣绝对绝对是延迟了,还没结算;各地流量结算是有延迟的,短的几分钟,长的2小时,看各地情况;如果使用免流之前流量剩余44.69MB,查询后剩余44.52MB,恭喜,免流成功!免流并不是100%免流,还是会消耗少量的流量的,大概比例为100:1(即下载100M的文件,实际扣除流量1M左右),有些免流代码 或 免流模式的问题,会有较高“跳点”(即没有100:1,可能只有50:1)

  2. 关于地区的说明:比如佛山移动免流配置,指的是:你是移动的手机卡是移动,并且你人在佛山,这时候就可以用佛山移动配置文件来测试免流;如果你是佛山移动卡,你人在东莞、惠州、湖北、天津,就不能用佛山移动;你是联通、电信,你人在佛山,也不能用佛山移动;总的来说就是免流配置跟所在地相关。

  3. 使用openvpn打开免流配置文件,输入账号密码并连接上;需要说明的是内网配置文件:内网配置文件和普通配置文件不同的是,内网配置文件可能不会一次就连上,很有可能会报错(常见错误是reply incomplete和waiting to server卡住不动2种情况),这时候,你需要开启飞行模式5秒,然后关闭飞行模式,等4G信号恢复之后,再点击连接;还连接不上的重复以上动作i。作用是重启分配IP地址,直到遇到内网IP。


学习资源

恩山论坛:http://www.right.com.cn/forum/forum-156-1.html

小白入门:http://leiting6.cn/ml/

免流原理:http://koolshare.cn/thread-48041-1-1.html

免流涉及的知识还是比较多的,有兴趣的还得靠大家多百度去学习啦!

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注