技术揭秘:安全浏览器真的安全吗?

安全 应用安全
中国的互联网公司做事情的浮躁已是众所周知。在浏览器行业,各种加壳浏览器在Webkit和Trident上套个马甲,再加点组件,动辄就冠之以“最快”、“最安全”来装点自己。你别说,人家还不脸红。

中国的互联网公司做事情的浮躁已是众所周知。在浏览器行业,各种加壳浏览器在Webkit和Trident上套个马甲,再加点组件,动辄就冠之以"最快"、"最安全"来装点自己。你别说,人家还不脸红。

我一个在Chrome开发团队的哥们告诉我,Chrome 90%的开发资源只用来做3件事:快、安全、稳定。

这就是差距。

本文要吐槽的是"安全浏览器"。说实话,浏览器+安全的概念不错,虽然内核是人家的,自己还是能折腾出点花样的。但这几天看到某知名厂商随时把"最安全"挂在嘴边,我愤青的内心就被撩动了。

大家也许已经猜到了是哪家厂商,欢迎对号入座。其实,是哪家厂商、哪款浏览器真的不重要。重要的是,用户自己要做到心中有数,别中了人家阴招还在说感谢。

举例来说,当你网购时,有"经验"的卖家会"好心"向你推荐某知名安全浏览器,主打安全,你还心存感激。所以当他发你一个链接,该浏览器没报任何风险,你就放心大胆支付消费了。结果呢?这是一个钓鱼陷阱,你的资金早已直接捐给了骗子。安全浏览器真的安全吗?

纯粹技术分析太过于抽象,我选择360安全浏览器、猎豹浏览器和谷歌Chrome作为分析对象。为什么选这三款呢?360安全浏览器和猎豹浏览器都出身于国内主流安全厂商,体现了国内最高的安全实力,目前也均卖力主打安全牌;Chrome则是国际上公认最安全的产品之一,包括Firefox也采用了Chrome的一些安全技术。IE呢?就不用提了吧。

浏览器安全应该需要什么指标?

有同学可能会说,安全应该是杀毒软件的工作职责呀。是的,完全正确。杀病毒、拦钓鱼确实是杀毒软件的份内事。但如果只能依靠杀毒软件,所谓安全的浏览器就只能称之为坑爹货!既然取名安全或者主打安全牌,就要拿出点干货来!

那么,安全的浏览器需要什么干货呢?顾名思义,就是你在浏览器内进行的任何操作都应该是受到保护和避开风险的。通俗地说,你访问色情网站,它要保证你不中毒;你网上购物,它要保证你不被盗;你登录微博,它要保证你的隐私不会泄露……

从技术角度来讲,安全的浏览器需要拦截别有用心的人一切可能的浏览攻击行为,至少要包括以下几个部分:

钓鱼网址访问拦截

挂马网站访问拦截

下载文件安全检测

防止键盘敲击遭记录

木马程序执行拦截

系统内核保护

网购支付页面防篡改

……

这些标准是不是过于严格?安全无小事。恰恰相反,以上这些是最最基本的,缺任何一项都存在风险。比如,如果没有木马拦截,对方发给你一张"宝贝细节图",你就可能已经中招,支付后才发现没转到支付宝上,钱款彻底无影踪。你要没中过招,问问身边的人,就知道网络有多危险了。

你的安全浏览器挂了几个钩?

哪款浏览器能实现上述功能?我采用了一个工具进行分析,可通过查看它挂了什么"钩子"(Hook)来判断它在哪些地方做了安全监控,再通过代码逆向的方式查看它具体设计了哪些功能?

"钩子",程序设计中的一个专业名词。Windows系统中存在一些重要的系统关键点,在这些关键点上"挂钩子",如下图,就可以在Windows原生程序流程的基础上运行额外的程序,实现特定的功能。如果要做安全防护,同样可以在一些关键处挂上安全监控的钩子。

 

 

图注:钩子(Hook)可以在Windows原生程序流程上增加关键点,运行额外的程序功能。

一般来说,系统中最关键的位置往往是内核,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,是一个操作系统的核心。任何程序包括恶意程序从启动到关闭的整个过程,都离不开内核的管理。因此,几乎所有安全软件都会在内核上挂钩子--内核钩子。#p#

形象地来说,安全软件所挂的内核钩子,就像在机场内登机必经的路口设置安检处,验证为安全的人和包裹(程序)就放行,验证为风险的就拦截并及时处理掉。因为所有登机的人和包裹均是经过安全检查的,所以保证了飞机的飞行安全和乘客安全。如下图。

 

 

 

图注:安全软件所挂的内核钩子,就相当于在机场中的必经之处设置安检一样。

我使用圈里人爱用的一个Anti-Rootkit(简称ARK)工具XueTr.exe查看,Chrome和360浏览器都没有挂内核钩子,而猎豹浏览器则挂了2个内核钩子,如下图,挂钩位置均是其驱动文件KNBDrv.sys。这个文件也可在猎豹浏览器的安装目录中查看到,\liebao\LBBrowser\Module\security\。

 

图注:猎豹浏览器在驱动文件KNBDrv.sys中挂了2个内核钩子,可进行系统安全检查。

 

图注:360安全浏览器并没有挂内核钩子,无法进行系统安全拦截。

没挂内核钩子意味着什么?正如上面所说,系统内核已经失守,无法保证没有风险。如果有一个程序启动,你无法验证这是一个正常程序还是一个木马病毒程序;如果有一个程序被关闭,你仍然无法得知是正常关闭还是你的安全防御程序被恶意关闭……风险程度可想而知。

从这个角度来说,360安全浏览器和Chrome并不具备系统安全防护能力。套用网购欺诈者常用的手段,在你使用这两款浏览器在网上购物时,对方通过即时通讯工具如QQ等发送"宝贝细节图"文件给你,实为网购木马病毒文件,双击打开后,木马启动运行,乃至篡改账号劫持交易,这两款浏览器因为没有监控而会一直无动于衷。#p#

代码逆向查验本质

有2个内核钩子的猎豹浏览器能否防住?这需要更深入地对它进行研究。我用逆向工程代码破解工具IDA Pro对它的KNBDrv.sys进行了反汇编,如下图。

 

 

图注:用IDA Pro逆向猎豹浏览器的文件knbdrv.sys,查看它有什么函数,具备什么功能。

逆向代码之后,可以看到猎豹浏览器设置了如下拦截点:创建线程、创建进程、挂起进程、保护虚拟内存、终止进程、写入虚拟内存等,如下图红框中。表示什么意思呢?就是此钩子可以对系统中上述任何一个动作进行安全验证。

 

图注:猎豹浏览器设置了众多拦截点,系统中出现任何此类动作都可及时获知。

更直观地来说,系统中任何进程的启动或关闭,猎豹浏览器凭借这些钩子函数均要检查,利用金山固有的云安全平台,即可判定此程序(进程)是黑是白。正常文件当然OK,如果是木马病毒在启动,当然就会进行拦截。

再啰嗦几句

看了上面的分析其实大家都明白了的,但还是忍不住再多说几句,下个结论。

凭借360的云安全平台,360安全浏览器实现钓鱼拦截、下载文件鉴定不成问题,但这还远不能保证浏览安全和网购安全。对恶意程序的启动拦截,360浏览器还不能独立进行,需要严重依赖360安全卫士或者360杀毒。就这,如果说自己是"安全浏览器",还马马虎虎过得去,但如果动辄当"最"字辈,就只两个字形容:坑爹。

Chrome呢?口碑很安全,但没抓到内核钩子,我分析是由于Chrome采用了沙盒技术。它只要保证自己的程序不被恶意程序攻破即可,系统防护它可以不予考虑。关于沙盒技术,已有不少介绍,不再详述。

猎豹浏览器还真的让我有点意外,他们家包装了个BIPS概念,说实话,我没兴趣。但是猎豹确实把毒霸的K+和云安全都植入到了内核里,要不我们在逆向的时候也看不到内核钩子了。当然,到底这一套玩意能不能经得起实战,需要做大量专业测试。我没测试,就不多说了。单从程序的逻辑分析来看,猎豹浏览器具有内核钩子、逆向出来的函数覆盖全面,再结合云安全技术,猎豹浏览器做到上述防御是完全可行的。

再再啰嗦几句

1、做安全也好,做浏览器安全也好。其实拼的还是实力和积累。买来的引擎用在杀毒上尚可,但要植入到浏览器,终究会现原形。

2、国产浏览器如果真的做到了安全,喝水别忘挖井人,保持对Chrome、Firefox甚至IE的敬畏和感激是起码的。动辄吹嘘自己"最安全",你让肯花几千美金买个漏洞Chrome情何以堪?

3、本文纯技术分析,你可以对号入座,但谢绝口水,谢绝脑残粉丝价值观灌输。本人不吃这一套。

 

 

责任编辑:Writer 来源: 51cto.com
相关推荐

2012-05-16 18:16:20

2022-04-22 13:38:26

区块链加密货币安全

2012-11-30 10:57:09

2010-01-10 17:50:17

2013-12-03 10:07:12

浏览器浏览器安全插件

2010-01-14 10:26:12

2015-04-24 10:37:40

Web安全浏览器跨域访问

2013-11-22 09:58:36

2014-01-02 13:15:21

2009-08-23 15:56:53

2011-09-21 17:33:23

2010-11-03 15:39:19

2009-04-10 23:28:00

2013-10-23 11:49:51

浏览器安全微软谷歌

2012-05-02 17:50:56

2017-12-19 14:53:18

2020-07-15 08:10:00

浏览器安全Fetch

2010-03-05 09:07:46

2010-03-23 09:33:10

2023-10-24 15:46:34

点赞
收藏

51CTO技术栈公众号