欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

浏览器技术揭秘:安全浏览器是否真的安全

程序员文章站 2022-03-24 21:52:10
浏览器技术揭秘:安全浏览器是否真的安全...
中国的互联网公司做事情的浮躁已是众所周知。在浏览器行业,各种加壳浏览器在webkit和trident上套个马甲,再加点组件,动辄就冠之以"最快"、"最安全"来装点自己。你别说,人家还不脸红。
我一个在chrome开发团队的哥们告诉我,chrome 90%的开发资源只用来做3件事:快、安全、稳定。
这就是差距。
本文要吐槽的是"安全浏览器"。说实话,浏览器+安全的概念不错,虽然内核是人家的,自己还是能折腾出点花样的。但这几天看到某知名厂商随时把"最安全"挂在嘴边,我愤青的内心就被撩动了。
大家也许已经猜到了是哪家厂商,欢迎对号入座。其实,是哪家厂商、哪款浏览器真的不重要。重要的是,用户自己要做到心中有数,别中了人家阴招还在说感谢。
举例来说,当你网购时,有"经验"的卖家会"好心"向你推荐某知名安全浏览器,主打安全,你还心存感激。所以当他发你一个链接,该浏览器没报任何风险,你就放心大胆支付消费了。结果呢?这是一个钓鱼陷阱,你的资金早已直接捐给了骗子。安全浏览器真的安全吗?
纯粹技术分析太过于抽象,我选择360安全浏览器、猎豹浏览器和谷歌chrome作为分析对象。为什么选这三款呢?360安全浏览器和猎豹浏览器都出身于国内主流安全厂商,体现了国内最高的安全实力,目前也均卖力主打安全牌;chrome则是国际上公认最安全的产品之一,包括firefox也采用了chrome的一些安全技术。ie呢?就不用提了吧。
浏览器安全应该需要什么指标?
有同学可能会说,安全应该是杀毒软件的工作职责呀。是的,完全正确。杀病毒、拦钓鱼确实是杀毒软件的份内事。但如果只能依靠杀毒软件,所谓安全的浏览器就只能称之为坑爹货!既然取名安全或者主打安全牌,就要拿出点干货来!
那么,安全的浏览器需要什么干货呢?顾名思义,就是你在浏览器内进行的任何操作都应该是受到保护和避开风险的。通俗地说,你访问色情网站,它要保证你不中毒;你网上购物,它要保证你不被盗;你登录微博,它要保证你的隐私不会泄露……
从技术角度来讲,安全的浏览器需要拦截别有用心的人一切可能的浏览攻击行为,至少要包括以下几个部分:
钓鱼网址访问拦截
挂马网站访问拦截
下载文件安全检测
防止键盘敲击遭记录
木马程序执行拦截
系统内核保护
网购支付页面防篡改
……
这些标准是不是过于严格?安全无小事。恰恰相反,以上这些是最最基本的,缺任何一项都存在风险。比如,如果没有木马拦截,对方发给你一张"宝贝细节图",你就可能已经中招,支付后才发现没转到支付宝上,钱款彻底无影踪。你要没中过招,问问身边的人,就知道网络有多危险了。
你的安全浏览器挂了几个钩?
哪款浏览器能实现上述功能?我采用了一个工具进行分析,可通过查看它挂了什么"钩子"(hook)来判断它在哪些地方做了安全监控,再通过代码逆向的方式查看它具体设计了哪些功能?
"钩子",程序设计中的一个专业名词。windows系统中存在一些重要的系统关键点,在这些关键点上"挂钩子",如下图,就可以在windows原生程序流程的基础上运行额外的程序,实现特定的功能。如果要做安全防护,同样可以在一些关键处挂上安全监控的钩子。
 
浏览器技术揭秘:安全浏览器是否真的安全
图注:钩子(hook)可以在windows原生程序流程上增加关键点,运行额外的程序功能。
一般来说,系统中最关键的位置往往是内核,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,是一个操作系统的核心。任何程序包括恶意程序从启动到关闭的整个过程,都离不开内核的管理。因此,几乎所有安全软件都会在内核上挂钩子--内核钩子

形象地来说,安全软件所挂的内核钩子,就像在机场内登机必经的路口设置安检处,验证为安全的人和包裹(程序)就放行,验证为风险的就拦截并及时处理掉。因为所有登机的人和包裹均是经过安全检查的,所以保证了飞机的飞行安全和乘客安全。如下图。
 
 
浏览器技术揭秘:安全浏览器是否真的安全
图注:安全软件所挂的内核钩子,就相当于在机场中的必经之处设置安检一样。
我使用圈里人爱用的一个anti-rootkit(简称ark)工具xuetr.exe查看,chrome和360浏览器都没有挂内核钩子,而猎豹浏览器则挂了2个内核钩子,如下图,挂钩位置均是其驱动文件knbdrv.sys。这个文件也可在猎豹浏览器的安装目录中查看到,\liebao\lbbrowser\module\security\。
浏览器技术揭秘:安全浏览器是否真的安全
图注:猎豹浏览器在驱动文件knbdrv.sys中挂了2个内核钩子,可进行系统安全检查。
浏览器技术揭秘:安全浏览器是否真的安全
图注:360安全浏览器并没有挂内核钩子,无法进行系统安全拦截。
没挂内核钩子意味着什么?正如上面所说,系统内核已经失守,无法保证没有风险。如果有一个程序启动,你无法验证这是一个正常程序还是一个木马病毒程序;如果有一个程序被关闭,你仍然无法得知是正常关闭还是你的安全防御程序被恶意关闭……风险程度可想而知。
从这个角度来说,360安全浏览器和chrome并不具备系统安全防护能力。套用网购欺诈者常用的手段,在你使用这两款浏览器在网上购物时,对方通过即时通讯工具如qq等发送"宝贝细节图"文件给你,实为网购木马病毒文件,双击打开后,木马启动运行,乃至篡改账号劫持交易,这两款浏览器因为没有监控而会一直无动于衷。



代码逆向查验本质
有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、本文纯技术分析,你可以对号入座,但谢绝口水,谢绝脑残粉丝价值观灌输。本人不吃这一套。