手工逆 Chrome 扩展后门的一些思路

昨天看到 V2EX 上的这个讨论:

大家注意了 Chrome 的插件 User-Agent Switcher 是个木马
v2ex.com/t/389340

对于我这种很在意隐私与安全,且研究过 Chrome 扩展木马的老司机来说,也还是吓了一跳。刚开始以为自己也中招了,后来发现没有,如果有,那这个确实是很细思恐极的事。

Chrome 扩展,在 Google 那是有安全审计的,所以基本上会觉得靠谱,但是对于玩安全的我们来说,都是默认抱着怀疑的态度去安装一些扩展。你们只要注意下,那些你安装的扩展需要的权限是不是很多?(这点很像 Android App 的权限生态,同样的陋习)。如果这些扩展是恶意的或者存在 XSS、MITM 等漏洞被恶意利用,那么危害就很大了。扩展的权限是大于网页的(但一般情况下小于本地文件),至少可以无视同源策略。这意味着,如果你安装了一个恶意扩展,那么在这个浏览器的一切行为都有可能被监控,隐私数据都有可能被盗取。

当年我挖掘过一些扩展漏洞,达到的效果如:访问我的一个链接,就可以拿你 Gmail 权限。也写过扩展后门及相关安全工具,早期这方面更不安全,第三方扩展都可以随意安装,现在安装会麻烦得多,但不是不可以。

这是我玩 Chrome 扩展的一些见解。这次这个后门,我手工逆起来很快,给大家简单分享下经验。

首先是后门扩展地址:

chrome.google.com/webst

可以随便搜索个 Chrome 扩展下载服务把扩展文件下载下来分析。比如这个:

chrome-extension-downloader.com

扩展后缀是 crx,改为 7z,解压就好。

解压后,直接去读相关文件:js、html、json 等,可以先看看 manifest.json 文件,这里做了这个扩展需要的基本声明,尤其是权限,如下:

可以看到这个权限已经足够控制你 Chrome 的一切网络行为了,只要它愿意。

然后直入主题去看这次出问题的 js 文件:background.js,第 80 行,这行是一大段代码,做了些加密操作,可以用我开源的 XSS'OR(xssor.io)直接去解。

把这行代码粘贴到 XSS'OR 的 ENCODE/DECODE 的文本框去,然后点击 JS BEAUTIFY 就可以一键解密并美化。

美化后,里面的 Canvas 操作逻辑就很明显了,恶意代码隐藏在图片 promo.jpg 里,通过 Canvas 技术读取出来并应用下面这个技巧来动态执行:

document.defaultView[(typeof r.Ae).charAt(0).toUpperCase() + (typeof r.Ae).slice(1)](n)()

实际上,这个技巧等于:

document.defaultView[Function](n)()

n 这个变量可以是任意一段 JavaScript 代码。

我们在做调试时,可以把这些代码片段拿出来,在 XSS'OR 的 ENCODE/DECODE 里进行,用其中的 EVAL CODZ 功能就好(在 JS BEAUTIFY 按钮旁边)。调试输出,可以用 alert,也可以 console.log,看个人喜好。

不过由于这里涉及到从图片里获取数据并解析输出,我还是写了个独立页面进行手动调试,这里:

xssor.io/s/uasbackdoor.

注:独立页面的调试可以考虑用在 Chrome 开发者工具里去断点调试跟踪输出。

你可以访问看看,等几秒,就可以看到上面那个 n 变量的内容了(来自 promo.jpg 图片并解析后的)。内容不小,如图:

这段内容很眼花,但是我们已经可以接触到真相了。后续可以继续通过 XSS'OR 的 JS BEAUTIFY 去美化,但是还是会很眼花,因为所有变量都加花了,而且这里运用了大量 ES6 语法糖,如果对 JavaScript 新标准不了解,看这段代码很容易晕。

到这,重复上面的一些调试技巧逐一耐心调试,没有解不开的代码。

如果你想更清晰了解某些代码片段的意思,有必要好好去了解下 Chrome 扩展开发的一些知识。

更多细节自己实战起来吧,这里懒得展开。通过昨晚的简单调试可以得出结论这个扩展确实具备后门特点,不过懒得深入判断细节逻辑,至于危害是多大,目前不好说。但是,我还是希望通过本文的分享,告诉大家小心 Chrome 恶意扩展带来的威胁,在使用一些不那么可信的扩展时,多留意。可以开个网络抓包分析是否有怪异请求发出去,能力 OK 的话,就自己审计一番,扩展的源码按照如上方式是可以轻易得到的,毕竟都是前端那些事。


微信公众号「Lazy-Thought
几个黑客在维护,都很懒,都想改变点什么

编辑于 2017-09-10

文章被以下专栏收录

    本懒号主要关注点:隐私、攻击、安全开发。几个黑客在维护,都很懒,都想改变点什么。 By 余弦@LanT34m