1
Reficul 2016-05-26 19:10:27 +08:00 via Android 1
深表同情,在我去年毕业之前最后一个通用的方法是 openwrt 路由器发起中间人攻击,接管 PPPoE 拨号。
GitHub 上有 repo ,当时 bb 版本编译出来的还是可以用的, cc 没测。 |
2
winterbells OP @Reficul 这个应该和网页验证一样,不过客户端会定时报告,服务器收不到就断网
|
3
Syc 2016-05-26 21:08:29 +08:00 via Android 1
抓个包分析↓接口呗
|
4
Reficul 2016-05-26 21:36:31 +08:00 via Android 1
@winterbells
以前的版本是私有的 chap 加密算法,并没有心跳包检测,在 openwrt 上架设一个假的 PPPoE 服务器和一个 patch 的 ppp 客户端,拨号的时候电信的挑战包转发给后面的电脑,电脑拿到数据计算完毕发出去的时候其实把数据包给了 ppp 让他发出去,并完成握手, PPPoE 连接建立之后便不会断开。 至于有没有心跳包,抓包看看就知道了。如果还是私有 chap 算法的话应该还能用的。 |
5
acess 2016-05-26 22:32:01 +08:00 1
南航有人抓过包,发现电信的客户端会在后台刷流量,这大概能解释占 CPU 、不稳定等奇怪的现象。
不知道你用的天翼客户端实际上是怎么认证的? 我们这边曾经上线过一套新的认证系统(天翼校园客户端分享版+掌上大学),如果没登录的话,访问任何网页都会跳至提示网页 http://pre.f-young.cn/(后面还会跟一长串参数),登录后才能正常上网。 如果用任务管理器干掉电脑端天翼客户端,或者强行停止手机端 App “掌上大学”,认证不会失效。 那个时候我找到一个蛋疼的绕过办法:先让某台设备通过认证,然后拔网线 /禁用 WiFi ,设置路由的 WAN 口 MAC 和 DHCP 主机名,都设置成那台通过认证的设备在用的值,路由成功 DHCP 拿到 IP 地址后,就可以正常上网。如果把路由器 WAN 口直接设置为 DHCP ,客户端软件发现自己在内网,就不显示登录按钮了,所以我才用这种蛋疼的办法…… 想下线的时候,就用手机端 App “掌上大学”的管理功能点一次下线。 @Reficul 天翼校园客户端分享版的认证方式和以前已经不一样了,反正不再劫持修改 PPPoE 数据包了。 我不知道该怎么表达,应该叫做 Captive Portal ?这和很多公共 WiFi 热点类似。 大概情况是:电脑 /手机先 DHCP 获取内网 IP 地址,这个时候访问任何网页都会跳至 http://pre.f-young.cn 。 然后用电信的客户端可以登录(应该是 HTTPS 请求),登录后就就可以正常访问互联网了。 |
6
acess 2016-05-26 22:35:31 +08:00 1
@winterbells 如果仅仅是定时 HTTP 请求, OpenWrt 路由上写个脚本应该就能维持住了吧。
我抓过天翼校园客户端分享版的包……技术太渣看不懂(掩面) |
7
winterbells OP @acess 就是这个。天翼校园客户端分享版+掌上大学
强退客户端大概一分钟后还是断网,因为客户端会不停的向服务器确认存活信息 下面是客户端自动生成的 log 2016-5-26 17:19:56.60 - client disconnect 1 2016-5-26 17:19:56.60 - CPortalServer::ServerStatus 2016-5-26 17:19:56.60 - DisConnect For client disconnect 2016-5-26 17:19:56.76 - TermUrl is :http://202.111.54.132/term.cgi 2016-5-26 17:19:56.435 - record not connect 2016-5-26 17:19:56.435 - NetStateChange oldState 11,newState 12,code 1 2016-5-26 17:19:56.888 - KeepPluseThread exit because disconn 2016-5-26 17:22:19.577 - log start 2016-5-26 17:22:19.577 - DoWork 2016-5-26 17:22:22.140 - <M><OpS>Portal</OpS><OpT>InfoCenter</OpT><OpC>SetValue</OpC><P><Key>hostName</Key><Value>MYSTERY</Value></P></M> 2016-5-26 17:22:22.140 - <M><OpS>Portal</OpS><OpT>InfoCenter</OpT><OpC>SetValue</OpC><P><Key>clientId</Key><Value>6ee4a880-b592-46f3-8c35-8974d2fe0a99</Value></P></M> 2016-5-26 17:22:22.140 - <M><OpS>Portal</OpS><OpT>InfoCenter</OpT><OpC>SetValue</OpC><P><Key>version</Key><Value>1004</Value></P></M> 2016-5-26 17:22:22.140 - <M><OpS>Portal</OpS><OpT>Portal</OpT><OpC>CheckEnv</OpC><P></P></M> 2016-5-26 17:22:22.140 - check net status start 2016-5-26 17:22:22.140 - sysVer is Windows 10(10586),64 bit 2016-5-26 17:22:22.156 - NetStateChange oldState 33,newState 33,code 30000101 2016-5-26 17:22:22.952 - CPortalConn::RequestConfig 2016-5-26 17:22:22.952 - CPortalConn::CheckConnState 2016-5-26 17:22:22.952 - requestConfig is :http://preportal.f-young.cn/detect.html 2016-5-26 17:22:22.999 - portal test request state code is 200 2016-5-26 17:22:22.999 - HTTP/1.1 200 OK Connection: close Date: Thu, 26 May 2016 09:22:34 GMT Content-Length: 358 Content-Type: text/html Last-Modified: Mon, 20 Jul 2015 06:40:02 GMT Accept-Ranges: bytes ETag: "55ac97c2-166" Server: nginx 2016-5-26 17:22:22.999 - BAS 采用 REFRESH 的机制进行重定向 2016-5-26 17:22:22.999 - portal test response Refresh Redirect Location <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-store, must-revalidate"> <meta http-equiv="expires" content="0"> <meta http-equiv="refresh" content="1; url=http://www.189.cn"> <title></title> </head> <body> </body> </html> 2016-5-26 17:22:22.999 - requestConfig is :http://www.189.cn 2016-5-26 17:22:27.640 - portal test request state code is 200 2016-5-26 17:22:27.640 - HTTP/1.1 200 OK Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0 Connection: close Date: Thu, 26 May 2016 09:22:39 GMT Pragma: no-cache Content-Length: 775 Content-Type: text/html Expires: 0 Server: nginx Server-Tag: cdcportal/1.0.0/pre-portal-73 Error-Code: 0 |
8
billlee 2016-05-26 23:01:42 +08:00 1
以前在学校的时候搞了个 MITM, 后来不知道电信用了什么黒科技,我记得当时是用新版本的客户端可以拨号可以正常使用,但 MITM 失败了(而且我抓包没看出任何区别),旧版本直接拨号可以正常使用,可以 MITM, 但 MITM 后很快就会被丢包。
最后我去投诉它不能在 Linux 中使用。 |
9
acess 2016-05-27 00:13:45 +08:00 1
@billlee
还在用 PPPoE 破解( noisyfox 的作品)的时候,每天都会被 TCP RST 。 改 IPID 、 TTL 都没用,不知道是我改的方式不对,还是电信用应用层检测之类的手段。 后来到了 1.5.6 版本,电信搞了个什么 zsm 模块,自那以后南航那边好像就没再公开破解。 我用 MitM 试过 1.5.6 版的天翼校园客户端,可以成功,只是要注意改一下用户名前缀。 现在电信在我们学校换成标准 PPPoE 了,已经没有共享限制了。所以,也没办法重现当时的情景了。 大家也许还可以关注一下微博博主 Stanfree ,他公开了天翼客户端的一些细节。 |
10
acess 2016-05-27 00:38:21 +08:00 1
如果有手机客户端的话,也许可以试试打开 USB 绑定?
我们当时用过的手机端 App 是掌上大学,连的是电信新配置的公共热点,电信当时也允许用无线 AP 桥接有线网端口。掌上大学里有宽带登录、设备管理等功能。 我用 apktool 和 jd-gui 打开过一次掌上大学,但源码看起来被混淆了,本渣到此止步。 |
11
dlsflh 2016-05-27 00:41:31 +08:00 via Android 1
淘宝有卖破解的路由器
|
12
roth 2016-05-27 00:53:25 +08:00 via Android 1
淘宝上破解天翼客户端的路由器还是南京最先推出的呢,后来合肥这边才跟进,但现在合肥只要你带一台苹果或 Linux 到营业厅就可以改成普通的拨号上网,没想到你们还在没和电信和解啊。。
|
13
Reficul 2016-05-27 00:54:26 +08:00 via Android 1
@acess
和你一样,那会 TCP RST 就用 shadowsocks 全局翻墙,后来用中间人,现在没法重现了。 真是 tmd 感谢电信,鼓励我入坑 Linux 和转行读码农,顺便还练了一手烙铁功夫和认识了几个人。 话说那会中间人攻击也是用的楼上 billlee 的 repo 。 |
14
acess 2016-05-27 01:08:01 +08:00 1
先抛开限制共享问题……不刷流量的客户端不是好客户端
国内运营商搞劫持已经好多年了,似乎见怪不怪了,而且运营商用的设备也支持白名单,用户投诉也淡定 |
15
acess 2016-05-27 01:08:55 +08:00 1
以上分析来自微博博主 Stanfree
|
16
aynt 2016-05-27 01:16:30 +08:00 1
最好的结果是,我今年毕业了~
|
17
winterbells OP |