扣扣保镖除了拥有其宣称的11大类可见功能之外,至少还存在4个隐藏功能,这些功能仅针对QQ,且都具有用户不可见、不可控制等特性。这些隐藏功能随时处于活动状态,并且可由360公司远程开启。
昨日,曾有媒体报道扣扣保镖存在四大后门技术,可以随时远程开启。但360对此矢口否认。如今终于得到来自第三方反病毒机构瑞星铁一般的证实。
以下是报告全文:
360扣扣保镖为何激怒腾讯?
----瑞星第三方独立研究报告(一)
2010年10月29日,360公司在京宣布,推出一款名为“扣扣保镖”的安全工具,全面保护QQ用户的安全。该工具包括防止隐私泄漏、防止木马盗取QQ账号以及给QQ加速等功能。360称,扣扣保镖默认不修改QQ任何设置,所有功能都必须由用户主动选择触发,并可随时启用和恢复。
瑞星研发部门通过对扣扣保镖(1.0.0.1004版本)主要功能实现模块QGuard.dll进行分析:发现该软件除了拥有其宣称的11大类可见功能之外,至少还存在4个隐藏功能,这些功能仅针对QQ,且都具有用户不可见、不可控制等特性。这些隐藏功能随时处于活动状态,并且可由360公司远程开启。
扣扣保镖4个隐藏功能详细分析
扣扣保镖除了界面上的可见功能以外,还存在屏蔽QQ软件升级、劫持腾讯浏览器、屏蔽QQ启动的特定进程列表、备份并恢复QQ软件等4个隐藏的功能,它们均由Config.ini文件进行开关控制。经分析,该控制文件在扣扣保镖安装包中并没有提供,安装后也不会自动生成,只可能由360 “云服务器”直接进行远程投递(或用户可以手动生成激活隐藏功能)。也就是说,用户对于这些隐藏功能均无法控制,而且不了解其激活和生效情况。
技术细节:
用户使用扣扣保镖(1.0.0.1004版本)时,它会把自己的主要功能模块QGuard.dll通过全局钩子方式注入腾讯QQ进程,并拦截QQ进程的系统调用ShellExecuteExW和CreateProcessInternalW等,时刻关注Config.ini文件(隐藏功能激活文件),一旦发现该文件存在,将根据文件内容进行相关隐藏功能的激活动作。
通过对现有的4个隐藏功能代码分析,我们可以推测Config.ini文件至少存在以下4种开关:
[Main]
DisableUpdate=1 //自动屏蔽QQ升级,导致用户不知情的情况下QQ软件无法升级。
DisableBrowser=1 //劫持QQ对浏览器的启动并替换为360”安全”浏览器。
Com=<过滤的进程文件名1>;<过滤的进程文件名2>;……
//自动屏蔽QQ启动指定镜像名例表的进程启动。
enable_repair=1 //开启备份QQ的参数:是否开启弹框引导用户备份QQ软件
MaxNotifyCount = 50 //开启备份QQ的参数:最多弹框次数
FirstNotify=1 //开启备份QQ的参数: QQ启动后弹框的时间(秒)
以下为扣扣保镖QGuard.dll 进行WINDOWS API 拦截及API拦截功能实现的相关代码
扣扣保镖在QQ IM进程中拦截相关系统API后将实时监控QQIM启动进程动作(用户不能使用任何功能设置项进行隐藏功能关闭操作)
隐藏功能一:激活后自动屏蔽QQ软件升级
该隐藏功能影响域:
该隐藏功能激活后,QQ的安全组件、QQ本身等软件都不能正常更新升级(用户毫不知情,也不会得到任何错误提示),QQ软件将变成一个“死”软件。
以下为扣扣保镖QGuard.dll在拦截ShellExecuteExW及CreateProcessInternalW后进行的QQ IM启动升级进程(屏蔽QQ升级)识别及屏蔽升级部分代码。
如果发现启动的是auclt.exe、SelfUpdate.exe和QQSafeud.exe并在Config.ini文件中DisableUpdate=1则将绕开真实系统调用,使QQ升级进程启动失效。这些操作将对用户没有任何提示!
隐藏功能二:激活后根据指定进程列表进行QQ启动程序的拦截
该隐藏功能影响域:
该隐藏功能激活后,将根据360投送的Config.ini里指定的进程名进行QQ启动程序过滤。这将让360可以非常方便进行可控的QQ启动程序拦截。
扣扣保镖还会尝试读取位于安装目录下360\360safe\360QGuard\下的Config.ini中Main主键下的Com字段(参照上文所述Config.ini结构)。由于Config.ini在默认安装情况下不存在,在此无法得知具体需要屏蔽的进程,但是通过分析代码可以得知此字段为一个由“;”分割的一个进程列表。扣扣保镖将拦截此列表中所有文件名相同的进程的启动。
以下为QQ启动程序屏蔽列表部分代码
以下为:扣扣保镖QGuard.dll屏蔽列表读取代码
除此之外还会在%AppData%的配置文件UserConfig.ini中读取component字段,其中每一项镜像名其后的0和1为进程屏蔽开关。
%AppData%\360QGuard\UserConfig.ini内容如下:
[component]
<要阻止的文件名及扩展名>=0|1
隐藏功能三:激活后对QQ软件的浏览器进行劫持(替换成360浏览器)
该隐藏功能影响域:
该功能激活后,QQ 进程启动的浏览器进程(带参数浏览URL方式)将被替换成启动360SE来进行浏览(装着360浏览器的情况下)。由于该功能是拦截 API实现,所以无论用户设置的默认浏览是什么,也不论腾讯QQ当前选用哪个浏览器都将被劫持成360SE(附:该隐藏功能不单可以劫持TTraveler.exe,QQBrowser.exe,还能根据升级的配置随时指定劫持的浏览器进程名。)
这样QQ软件用户聊天时带的所有URL链接的浏览量将都被360SE获取。
扣扣保镖QGuard.dll拦截程序,发现QQ IM启动的程序为腾讯的浏览器(TTraveler.exe和QQBrowser.exe),且Config.ini文件内容中有DisableBrowser=1,则将QQ IM启动的浏览器自动替换为360的浏览器。
除此之外,通过最后一行Call InitComponent读取位于%AppData%的配置文件UserConfig.ini中的component项是否有指定名称的镜像名,如果发现也将替换为360的浏览器。
隐藏功能四:激活后欺骗用户对QQ软件进行备份(并可做恢复操作)
该隐藏功能影响域:
该隐藏功能激活后,将根据360投送的Config.ini里配置的参数引导用户备份QQ软件到360指定目录,并可通过扣扣保镖进行恢复。
在config.ini里填入以上内容,在启动QQ时会出现以下对话框。
在这里可以禁用QQ的自动更新功能。备份按钮会将QQ的全部数据备份到360的配置目录。如下图:
相关代码如下:
分析总结:
由于360扣扣保镖的这4个隐藏功能针对性极强(针对QQ软件)并具有:
1、在不被用户知情的情况下进行破坏其它软件正常运行的流氓软件特性。
2、绕开用户控制隐蔽触发的后门功能特性。
3、注入其它进程,修改其正常功能运行方式的外挂特性。
而这些技术手段通常只在木马、后门、病毒这类恶意软件上见到,在一款“以安全为名”的软件上出现并针对正常软件使用是极为罕见的。这也可以很好地理解为什么360让它如此短命,腾讯为什么如此愤怒。
附:
从百度百科中查出一些公众认知的定义:
外挂:外挂一般是指在电脑运行中,一个程序通过某种事件触发而得以挂接到另外一个程序的空间里(常用的触发事件有键盘触发,鼠标触发,消息触发等),挂接的目的通常是想改变被挂接程序的运行方式。
后门功能:指绕过软件的安全性控制而从比较隐秘的通道获取对程序或系统访问权的方法。
流氓软件新发展:新的流氓软件可能并没有捆绑插件,新的流氓行为包括故意妨碍其他同类软件的使用,新的流氓行为包括把自己的流氓行为说成是BUG或者好功能,以此来掩盖自己肮脏的目的,新的流氓都精通心理学,把用户的心理研究的透透彻彻,并利用这种心理来做利于自己的事情。