edge 商店里的 Proxy SwitchyOmega 是李鬼

2020-08-07 01:07:21 +08:00
 Jat001
闲得无聊来扒下皮

首先用 beyond compare 比较一下李鬼跟原版有什么区别,发现 background.html 里多引了一个脚本 js/pic.js


打开 pic.js 看核心代码,用 String.fromCharCode.apply 把 ascii 转回字符串,发现这里实际上是又加载了一个脚本 img/logo.png


把 logo.png 的扩展名改为 html 然后用浏览器打开就会发现这个文件前半部分是 png,后半部分是纯文本。图片浏览器会忽略后半部分,所以仍然可以当作图片正常打开。上面那段代码就是寻找脚本的关键字( sojson ),截取后半部分


所以这段脚本到底是干嘛的呢?由于太长了直接拉到最后


\x73\x70\x6c\x69\x74 是 split,正则 /[a-zA-Z]{1,}/ 是 split 的参数,这一大串其实就是用字母分隔的 ascii 数组,把字母去掉然后用 String.fromCharCode.apply 转回字符串,李鬼现行了

https://gist.github.com/jat001/b10d12eee207c380246e7be74f8e6ed6
30282 次点击
所在节点    分享发现
104 条回复
snw
2020-08-08 22:09:57 +08:00
巨硬真是从来没对商店上心过。很久以前的 WP 商店就是李鬼横行。
lilydjwg
2020-08-08 23:41:15 +08:00
@Jat001 #58 Mozilla 不推荐混淆,并且要求提供混淆前的代码用于重现。所以实现应该是这样的:程序发现代码经过混淆,转人工,人工没收到混淆前的代码,直接打回去。(当然这是我觉得合理的推测,Mozilla 是怎么实现的我不清楚。)
Jat001
2020-08-09 00:51:38 +08:00
@lilydjwg 最关键的一步你倒是省略了……要是有程序能理解代码逻辑,那编程 AI 早实现了
lilydjwg
2020-08-09 01:42:37 +08:00
@Jat001 不是我省略了,而是不存在。程序应该只是行为分析,看看调用了些什么 api,有没有很容易发现的违规操作,就跟杀毒软件差不多。不确定的就交给人类。
Jat001
2020-08-09 02:57:52 +08:00
@lilydjwg #64 这脚本也没什么特殊行为啊,就是修改页面,很多扩展都会修改页面,甚至一些比价插件也会往页面插入返利网站的链接,靠程序根本没法区分。

我之所以能发现问题,一是有原始代码供对比,二是上传扩展的人明显就是个脚本小子,这些混淆都是用工具生成的,特征太明显了,正常人根本不会这么写代码。但如果是一个程序员想上传恶意扩展呢,都不需要技术多么牛逼,把代码写得跟屎一样就行,再加一堆没用的代码,谁能审核出来,总不能因为代码写得烂就拒绝上架吧
lilydjwg
2020-08-09 09:18:58 +08:00
@Jat001 混淆就是特殊行为啊。为什么不能因为代码太垃圾就拒绝上架?想对抗审核,最好的策略是故意留下不那么容易发现的 bug 。
sc104501
2020-08-09 09:38:47 +08:00
受害者+1,感谢楼主
ryh
2020-08-09 12:23:23 +08:00
at 一下微软的 v 友 @formulahendry
Jat001
2020-08-09 14:06:34 +08:00
@lilydjwg 之前不是说了根本没有程序可以区分代码是否用了混淆吗?除了这种特征明显,用公开工具生成的混淆代码。我写一个变量和函数名全是用拼音,冗余代码一堆,完全没有代码复用,全是复制粘贴,就算放 github 上也没人想看的那种代码,这算不算混淆?有任何规定说代码写的烂不允许上架吗?你确定这样搞能触发人工审核吗?而且我都怀疑 Mozilla 有那人力搞人工审核吗?

杀毒软件不也是靠特征码,比如我写个程序上传用户数据到我自己的服务器,杀毒软件能做的无非是在程序访问敏感文件的时候拦截,最终判断还是交给用户,但用户也不知道程序访问文件是否正常啊,比如搜索程序访问文件是很正常的行为,但要是这搜索程序还附带偷偷上传文件的功能呢?另外像用到了 p2p 技术的下载软件和网盘程序,读取文件并上传大量数据都是很正常的行为,如何把这种程序跟故意上传用户隐私的程序区分开呢?

说到底,这种连普通用户都无法区分的行为,不要指望靠机器来识别。无论是浏览器扩展的应用商店还是手机 app 的应用商店,都没有那么多人力来人工审核代码,现在大家做的无非就是细化各种权限,最终交给用户来决定是否给予相应的权限。
lilydjwg
2020-08-10 00:46:01 +08:00
@Jat001 原来你在纠结这个。ml 一个分类器就可以搞定常见的工具了,简单的直接抓 eval 也不是不可以。当然精心设计的不容易抓到,但那种的成本也高。
lilydjwg
2020-08-10 00:53:53 +08:00
@Jat001 另外是有规定看不懂的烂代码不允许上架的:「 Code is considered obfuscated if the logic and meaning is transformed in a way intended to make it difficult for a human to understand or reverse-engineer.」
Jat001
2020-08-10 07:06:53 +08:00
@lilydjwg #70 我不是纠结这个,我是想说人工审核的成本太高了,连谷歌和微软都没能力搞的事情,mozilla 也没能力搞。而且为啥要直接写 eval 给人抓现行呢,来看看高手怎么玩的



当然,这里的 jquery 是被人魔改后的,490837..toString(32) 估计也不是这个人发明的
kevinle
2020-08-10 07:56:45 +08:00
@legend4 SmartProxy 没有什么人用啊, 商店看只有 4000+的用户
lilydjwg
2020-08-10 10:14:47 +08:00
@Jat001 你怎么知道 mozilla 没能力搞呢?难道我遇到的人工审核都是假的?
lilydjwg
2020-08-10 10:15:22 +08:00
@Jat001 那个图片是 jpeg,太糊了根本看不清。
maketime4life
2020-08-10 11:05:26 +08:00
幸好我装的是 Chrome Web Store 里的
maketime4life
2020-08-10 11:06:53 +08:00
作者都不一样啊,稍微注意点就不会安装
youthfire
2020-08-10 11:12:29 +08:00
感谢,已经把 edge 商店所有扩展换为 Chrome 商店里的
Jat001
2020-08-10 17:31:47 +08:00
@lilydjwg 点开图片就能看到大图,可以放大的,一点也不糊
你不会真的以为 Mozilla 会雇一堆工程师一行行审核代码吧,比如这个扩展,在没有原始代码的情况下,一个个文件找要多久。我估计那些审核都是黑盒的,不可能一行行审计代码
okampfer
2020-08-10 20:00:38 +08:00
LZ 厉害!

从 Chrome 商店安装是安全了,但问题是同步这些扩展就需要翻 qiang 了。

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

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

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

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

© 2021 V2EX