搜索
bottom↓
回复: 39

如何看待小米路由进行 404 网页劫持?

[复制链接]

出0入0汤圆

发表于 2015-7-5 11:07:52 | 显示全部楼层 |阅读模式
本帖最后由 DevLabs 于 2015-7-5 11:10 编辑

转自知乎: http://www.zhihu.com/question/30358197

小米路由器404错误页面美化功能将用户访问链接提交到服务器已是毫无疑问,那么就请大家回答一下这个问题:
出于什么样的目的,小米路由器404错误页面美化功能将用户访问链接提交到小米服务器? - 小米科技

“404错误页面美化”不仅仅是响应页面被修改,更严重的问题是用户访问链接被发送到了小米的服务器,这就涉及个人隐私泄露问题。我做了一个实验,通过在小米路由器上抓包,获取了页面重定向和美化页面相关的HTTP请求信息。

以PlayBoy官网为例,先在浏览器地址栏输入网址,发现现在PlayBoy主页很素。于是想试探一下,有没有隐藏的内容,于是把首页地址后面加了naked/。(思想不健康)

然而naked目录并不存在,于是出现了小米的“404错误美化页面”。

用wireshark打开tcpdump抓包文件,看到了HTTP请求报文:

在重定向页面请求报文中发现向小米服务器提交的URL中含有刚才访问的链接信息。

这是最终的404错误美化页面请求报文,链接中含有一段BASE64编码的信息,在浏览器地址栏里也能看到这段信息。

通过在线解码网站得到BASE64解码信息,其中包含了用户的路由器设备ID和访问链接。

通过以上实验,我们可以看出:小米路由器向服务器报告了用户访问的链接,并与唯一的设备ID关联。如果用户正在访问了敏感网站,或者链接中含有敏感信息,遇到404错误时,这些信息将被发送到小米服务器,导致个人隐私泄露。这才是小米路由器“404错误页面美化”功能最危险之处。

7月1日补充一个实验:
某网站没有使用https协议,某天网站维护员在升级时出现差错,导致用户登录时出现404错误,我们来看看小米路由器是如何美化网页。
测试的网站是:http://www.weixinto.com/,在登录页面里输入用户名:admin,密码:1234567890,如下图所示。

点击“Login”按钮后出现了小米路由器的404错误美化页面,我们留意到页面链接的域名api.miwifi.com,是小米公司的服务器。完整链接是:http://api.miwifi.com/error-page ... HQ&error_type=1
404错误页面截图如下:

将链接中从data=后到&error_type=1之间的字符串复制,然后贴到在线Base64编码/解码器里解码,得到:device_id=fa69d2c3-2059-4b18-aa8f-a6fc858cd7b6&rom=&hardware=&channel=&error_type=1&sc=404&url=http%3A%2F%2Fwww.weixinto.com%2Flogin%2F%3Fuser%3Dadmin%26pass%3D1234567890&tpl=default
看到了在登录页面中输入的admin和1234567890,还有路由器的设备ID,这些信息已提交到了小米的服务器。


6月29日更新:
上面的实验只是通过抓包了解到小米路由器404错误页面劫持情况,接下来以1T硬盘版小米2.2.9稳定版固件为例,分析其工作原理。
启动脚本 /etc/rc.d/S99http_status_stat 符号链接到 /etc/init.d/http_status_stat,在这个脚本文件的start()中加载几个与404错误页面相关的内核模块(.ko文件)。
start()首先判别http_status_stat.settings.enabled参数是否为1,如果不为1就退出。也就是通过这个参数关闭404错误页面劫持。
start()接着判断nvram参数CountryCode (国家代码)是否为CN,如果不是CN就退出。由此可见,小米不敢在其他国家使用404错误页面劫持
  1. start() {
  2.     config_load "http_status_stat"
  3.     local switch
  4.     switch=`uci get http_status_stat.settings.enabled -q`
  5.     if [ $switch -ne "1" ]; then
  6.         return 0
  7.     fi
  8.     local cc=$(nvram get CountryCode)
  9.     cc=${cc:-"CN"}
  10.     if [ $cc != "CN" ]; then
  11.         echo "http_stat: Bad Country!"
  12.         return 0
  13.     fi

  14.     fastpath=`uci get misc.http_proxy.fastpath -q`
  15.     [ -z $fastpath ] && return 0

  16.     if [ $fastpath == "ctf" ]; then
  17.         if [ -f $APP_CTF_MGR ]; then
  18.             $APP_CTF_MGR http_stat http on
  19.         fi
  20.     elif [ $fastpath == "hwnat" ]; then
  21.         echo "http status can work with hw_nat."
  22.     else
  23.         echo "http_status_stat.init: unknown fastpath type! Treat as std!"
  24.     fi
  25.     insmod nf_conn_ext_http >/dev/null 2>&1
  26.     insmod nf_tcp_proxy >/dev/null 2>&1
  27.     #echo "open and set proxy action to kernel"
  28.     echo "ADD 5 $LIP $PROXY_PORT" > $CFG_PATH
  29.     # ensure start switch
  30.     echo "1" > $SWITCH_PATH
  31.     insmod http_status_code_proxy >/dev/null 2>&1
  32.     [ -f $REFERER_PATH ] && echo $REFERER_STR > $REFERER_PATH 2>/dev/null
  33.     return 0
  34. }
复制代码

下一步要弄清楚三个内核模块在干什么?
  1. nf_conn_ext_http.ko
  2. nf_tcp_proxy.ko
  3. http_status_code_proxy.ko
复制代码


先看看文件里有哪些字符串?

这些字符串含有hijack,请英语达人给翻译一下hijack的中文意思。
tcp_hijack_func
security_hijack
http_response_hijack
http_response_hijack
security_hijack
%s, security hijack successd!
%s, security hijack failed for some reason!
%s, syn ack but can NOT hijack!!
nf_tcp_proxy.ko的大致功能:
向内核的netfilter挂钩子,监视经过路由器的TCP报文。将HTTP报文通知
http_status_code_proxy,http_identify,http_match,http_content_type_mark这些模块。这些模块解析http报文,如果需要劫持,就调用nf_tcp_proxy中的相关函数,让nf_tcp_proxy生成相关TCP报文,然后注入到TCP会话中。由此可见,这就是TCP会话劫持。

下面是在nf_tcp_proxy.ko中发现的一段字符串,这是跳转404错误页面时注入的HTTP响应报文的模板。
  1. GET /error-page?error_type=1&sc=   
  2. Host: api.miwifi.com
  3. Connection: keep-alive
  4. Cache-Control: no-cache
  5. Accept: */*
  6. Pragma: no-cache
  7. User-Agent:   HTTP/1.1
  8. Padding:
复制代码


调用nf_register_hooks函数,注册2个钩子函数:
  1. NF_IP_PRE_ROUTING ipv4_tcpproxy_pre_hook
  2. NF_IP_POST_ROUTING ipv4_tcpproxy_post_hook
复制代码


这2个钩子函数位于netfilter的最前和最后,前端用于监视,后端用于注入或重定向。借用一张图来说明钩子函数所处的位置。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2015-7-5 11:12:52 | 显示全部楼层
呵呵呵呵呵呵.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-7-5 11:14:36 | 显示全部楼层
今天劫持 404 页面, 明天就可能劫持 200 页面了.

出0入0汤圆

发表于 2015-7-5 12:21:22 | 显示全部楼层
这么纠结别上网好了

出0入0汤圆

发表于 2015-7-5 12:21:25 | 显示全部楼层
要注意,小米已经有了裆猥,那就不用解释什么了。

出0入58汤圆

发表于 2015-7-5 12:29:12 来自手机 | 显示全部楼层
一个破路由器,干好本职工作就行。老是搞一些偷鸡摸狗的勾搭。果断不会买

出0入0汤圆

 楼主| 发表于 2015-7-5 13:00:32 | 显示全部楼层
lisn3188 发表于 2015-7-5 12:21
这么纠结别上网好了

不用小米路由就行了, 干嘛要不上网.

出0入0汤圆

发表于 2015-7-5 13:07:43 | 显示全部楼层
买了就刷OpenWRT。小米要成为劫持而生了

出0入0汤圆

发表于 2015-7-5 14:13:39 | 显示全部楼层
hjack就是劫持的意思

出0入0汤圆

发表于 2015-7-5 14:33:33 来自手机 | 显示全部楼层
借楼主帖子 问个问题,家里tplink路由器,联通4兆宽带,晚上上网速度几乎为零,有大半年没有动过了,昨晚无意中被我复位重置了一下,网速瞬间恢复正常,晚上速度比之前白天还快,什么原理???

出0入663汤圆

发表于 2015-7-5 15:12:14 | 显示全部楼层
wxty 发表于 2015-7-5 14:33
借楼主帖子 问个问题,家里tplink路由器,联通4兆宽带,晚上上网速度几乎为零,有大半年没有动过了,昨晚无 ...

低端路由由于ROM和RAM很小,一般跑的是嵌入式RTOS,TCP/IP协议栈稳定性欠佳,跑的时间长了或者连接数多了(例如挂P2P)很容易挂掉,只能定期重启。

出0入0汤圆

发表于 2015-7-5 16:20:30 | 显示全部楼层
DevLabs 发表于 2015-7-5 13:00
不用小米路由就行了, 干嘛要不上网.

你上网发送的数据,不只经过你家那台路由器,外面有千千万万台路由帮你转发了。你是不是要去查一下,他们有没有保存你的访问习惯,明显是有的。要不然怎么给你投广告。说白点,他们知道你什么时候去看黄网,什么时候撸完。。。

出0入0汤圆

发表于 2015-7-5 17:02:39 来自手机 | 显示全部楼层
gzhuli 发表于 2015-7-5 15:12
低端路由由于ROM和RAM很小,一般跑的是嵌入式RTOS,TCP/IP协议栈稳定性欠佳,跑的时间长了或者连接数多了 ...

是恢复出厂设置啊,不是重启,。。

出0入0汤圆

 楼主| 发表于 2015-7-5 18:47:34 | 显示全部楼层
lisn3188 发表于 2015-7-5 16:20
你上网发送的数据,不只经过你家那台路由器,外面有千千万万台路由帮你转发了。你是不是要去查一下,他们 ...

如果你这么说的话请看: http://drops.wooyun.org/tips/6820
收集习惯和劫持是两码事.

出0入0汤圆

发表于 2015-7-5 19:58:03 | 显示全部楼层
等什么时候mitm了,才是大新闻,可以把小米批判一番。

出215入118汤圆

发表于 2015-7-5 22:16:31 | 显示全部楼层
小米MINI 拿到手就刷了OPENWRT,谁有在OPENWRT刷UBOOT的方法么?

出0入0汤圆

发表于 2015-7-6 07:16:58 来自手机 | 显示全部楼层
DevLabs 发表于 2015-7-5 11:14
今天劫持 404 页面, 明天就可能劫持 200 页面了.

就是啊,司马昭之心路人皆知。

出0入0汤圆

发表于 2015-7-6 09:30:24 | 显示全部楼层
不厚道啊

出0入0汤圆

发表于 2015-7-6 09:49:51 | 显示全部楼层
谁家的路由都这个德行
知识你不知道 而已

出0入0汤圆

发表于 2015-7-6 10:56:08 来自手机 | 显示全部楼层
弄个定时上不存在网页呗,一天让它收集几十万条

出0入0汤圆

发表于 2015-7-6 11:12:24 | 显示全部楼层
現在打開瀏覽器 , 之前所有搜尋的東東的大部分廣告就塞在這網頁裡

出0入0汤圆

发表于 2015-7-6 11:37:28 | 显示全部楼层
米  ----\   粪
共  ----/   粪

出25入12汤圆

发表于 2015-7-6 15:54:24 | 显示全部楼层
现在的声明都不能相信了  全是假话

出0入0汤圆

 楼主| 发表于 2015-7-6 16:45:58 | 显示全部楼层
lhxr 发表于 2015-7-6 09:49
谁家的路由都这个德行
知识你不知道 而已

未必. 否则给小米洗地的早就炸锅了.
另外这个很简单, 抓包看一下就知道了.

出0入663汤圆

发表于 2015-7-6 16:55:47 | 显示全部楼层
lhxr 发表于 2015-7-6 09:49
谁家的路由都这个德行
知识你不知道 而已

TP-Link、D-Link、腾达这些传统厂商暂时是没有的,只有几家互联网公司搞的所谓智能路由器有这些玩意。

出0入0汤圆

发表于 2015-7-7 16:26:32 | 显示全部楼层
运营商做这样的手脚,你也没法防

出0入0汤圆

发表于 2015-7-7 18:25:49 | 显示全部楼层
这些智能路由坚决不能用。

出0入0汤圆

发表于 2015-7-7 19:57:58 | 显示全部楼层
shawn_bu 发表于 2015-7-5 12:29
一个破路由器,干好本职工作就行。老是搞一些偷鸡摸狗的勾搭。果断不会买 ...

我买了一个,现在刷了潘多拉固件,挂了一个硬盘,还是很好用的,哈哈

出0入58汤圆

发表于 2015-7-8 08:09:14 | 显示全部楼层
zhengxg1990 发表于 2015-7-7 19:57
我买了一个,现在刷了潘多拉固件,挂了一个硬盘,还是很好用的,哈哈

潘多拉固件 是第三方的? openwrt base么?

出0入0汤圆

发表于 2015-7-8 08:37:13 | 显示全部楼层
shawn_bu 发表于 2015-7-8 08:09
潘多拉固件 是第三方的? openwrt base么?

是openwrt的一个分支,官网上有

出0入58汤圆

发表于 2015-7-8 10:40:17 | 显示全部楼层
zhengxg1990 发表于 2015-7-8 08:37
是openwrt的一个分支,官网上有

你买的是mini版本的路由器还是自带硬盘的?如果是mini版本的挂USB硬盘靠谱不?

出0入0汤圆

发表于 2015-7-8 10:46:22 | 显示全部楼层
shawn_bu 发表于 2015-7-8 10:40
你买的是mini版本的路由器还是自带硬盘的?如果是mini版本的挂USB硬盘靠谱不? ...

mini的,一百多,挂个移动硬盘靠谱,现在做了远程迅雷下载,开了网络共享,用着很方便

出0入0汤圆

发表于 2015-7-8 10:56:55 | 显示全部楼层
DevLabs 发表于 2015-7-5 13:00
不用小米路由就行了, 干嘛要不上网.

我也觉得纠结就不用小米路由就可以了,为什么要不上网?

出0入4汤圆

发表于 2015-7-8 11:13:49 | 显示全部楼层
信小米你就输了

出0入0汤圆

发表于 2015-7-8 11:54:36 | 显示全部楼层
坚决不用小米的产品

出0入0汤圆

发表于 2015-7-8 11:55:28 | 显示全部楼层
信不过小米呀

出0入0汤圆

发表于 2015-7-8 14:09:00 | 显示全部楼层
支持楼主的分析精神。

从不用烂米。

出0入0汤圆

发表于 2015-7-8 23:26:23 | 显示全部楼层
正准备入手一个小米MINI路由器呢,看了这个帖子有点犹豫了

出0入0汤圆

发表于 2015-7-9 01:10:00 | 显示全部楼层
好牛叉的技术哇

出0入0汤圆

发表于 2015-7-9 07:13:13 来自手机 | 显示全部楼层
不喜欢雷军的公司
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-27 13:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表