测一测才知道,百度安全软件是不是真流氓?


发布人:admin分类:网络安全浏览量:27发布时间:2017-12-12

前言

最近不知为何掀起“黑百度”风,360老总不顾颜面微博喊话李彦宏,广大用户纷纷吐槽百度杀毒的静默安装、卸载不了以及软件捆绑安装。这些所谓安全软件的问题也不是一天两天了,之前就有人说某安全软件上传工程源码以完成所谓“云查杀”,又时不时涉嫌各种隐私问题,不一而足。

之前在百度杀毒那边实习过一阵,感觉软件不至于无耻到网上所流传那种地步。这里我选择不同平台安装不同的百度产品,从安装到运行,以及卸载,看看它们到底多流氓。

工具

VM虚拟机、win7 x86win7 x64、ProcessMonitorProcessExplorerPCHunterWindbgVKD

百度高速下载

百度搜索某软件,会有“高速下载”选项,我们使用高速下载来作为测试:

高速下载得到一个exe:npp.6.6.9.Installer_13478_BDdl.exe,图标是度熊手;普通下载得到的是:npp_V6.7_Installer.1418630513.exe。

从文件名可以目测出两个问题:

1、高速下载得到的是捆绑了百度产品的
2、高速下载得到的是低版本的。可能捆绑是需要时间的吧。

那我们运行这个高速版看看会发生什么:

首先映入眼帘的是百度下载助手的安装程序,百度的签名:

然后下载助手安装成功,并启动notepad++的下载和安装。所以说之前那个npp.6.6.9.Installer_13478_BDdl.exe纯粹是混淆视听,就是baiduxiazaizhushou.exe,怪不得连图标都没变。再试几个其他的高速下载,都是会安装“百度下载助手”,然后再“高速”下载该软件。何来点了高速下载就会静默安装百度杀毒和百度卫士?

这里黑得不漂亮啊!不过这个确实也属于欺骗用户的。倒是有时候下载的时候有个选项“安装百度杀毒”,默认是勾选的,如果不取消选择,那铁定是要中招了。我之前确实见过这种情况,不过写这篇文章测试的时候一直没搜出来,只好作罢。另外有一点我觉得是无脑黑,说什么百度搜索360会被屏蔽云云,可能纯粹是网络问题吧。百度说点竞争对手坏话倒有可能,大家都这样,不至于屏蔽竞争对手。

我倒是觉得软件中心挺好,起码点下载就是下载,不至于点下载给你安装个美图秀秀;而且也过滤了一些不良软件。这些进步是应该看到的,大家互相黑的同时也在一定程度上互相促进了,对用户来说是好事。这个小问题解决之后我们看看百度杀毒和百度卫士有多少干货。

百度杀毒

下载百度杀毒最新版,安装并监控。我记得上次我装的时候确实什么都没提醒就装上了,这次测试的时候倒是提醒了。安装之后运行了这两个程序,可以看出一个是主防一个是杀毒服务:

PCHunter可以看到百度杀毒装的驱动:

bd0001~bd0004、文件系统过滤、沙箱、反病毒等,驱动还是不少,感觉有点乱。毕竟是内核层的,搞这么多东西难免会出问题。注册了一些系统回调,用于监控进程创建、线程创建、模块加载、注册表更改、关机等,也是一些常规的回调,具体效果得看实现如何。也往往是干掉防护的突破口:

Bd0003还有一个DPC定时器:0x8777DFB000x9875DE60C:\Windows\system32\DRIVERS\bd0003.sys文件系统过滤驱动BDFileDefenderBD0003也是实现了一些常规的IRP过滤:

这个时候出了个意外,蓝屏了,windbg及时捕捉:    

    CHKIMG_EXTENSION: !chkimg -lo 50 -d !nt
        83e8b3e9-83e8b3f0  8 bytes - nt!KiFastCallEntry+e9
        [ 8b fc 3b 35 1c 07 fb 83:e9 f0 02 01 0b 90 90 90 ]
        83eafb5f - nt!SwapContext_PatchXSave+2 (+0x24776)
        [ 01:21 ]
        83eafdad - nt!EnlightenedSwapContext_PatchXSave+2 (+0x24e)
        [ 01:21 ]
        83eb7ce0-83eb7ce3  4 bytes - nt!KiServiceTable+5f0 (+0x7f33)
        [ e1 42 0d 84:72 97 21 92 ]
        84086c93-84086c96  4 bytes - nt!PsOpenThread+20f
        [ 88 c3 03 00:59 ae 21 23 ]
        840a9b80-840a9b83  4 bytes - nt!NtTerminateProcess+43 (+0x22eed)
        [ 81 25 fc ff:cc 87 1f 23 ]
        840bc935-840bc938  4 bytes - nt!NtTerminateThread+51 (+0x12db5)
        [ cc f7 fa ff:17 5a 1e 23 ]
        840c0dfe-840c0e01  4 bytes - nt!PsOpenProcess+22d (+0x44c9)
        [ 1d 22 00 00:ee 0c 1e 23 ]
        840c411f-840c4122  4 bytes - nt!NtDuplicateObject+5d (+0x3321)
        [ e2 7f fa ff:0d dc 1d 23 ]
    34 errors : !nt (83e8b3e9-840c4122)
    FOLLOWUP_NAME:  MachineOwner
    MEMORY_CORRUPTOR:  PATCH_bd0001
    FAILURE_BUCKET_ID:  MEMORY_CORRUPTION_PATCH_bd0001
    BUCKET_ID:  MEMORY_CORRUPTION_PATCH_bd0001
    Followup: MachineOwner
    ---------

可以看到bd0001ntoskrnl进行了patch,具体看看:

kd> !chkimg !nt
34 errors : !nt (83e8b3e9-840c4122)
kd> ln 83e8b3e9
(83e8b300)   nt!KiFastCallEntry+0xe9   |  (83e8b480)   nt!KiServiceExi
kd> u 83e8b3e9
nt!KiFastCallEntry+0xe9:
*** ERROR: Module load completed but symbols could not be loaded for bd0001.sys
83e8b3e9 e9f002010b      jmp     bd0001+0x86de (8ee9b6de)
83e8b3ee 90              nop
83e8b3ef 90              nop
83e8b3f0 90              nop
83e8b3f1 0f832e020000    jae     nt!KiSystemCallExit2+0xa5 (83e8b625)
83e8b3f7 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]
83e8b3f9 f6456c01        test    byte ptr [ebp+6Ch],1
83e8b3fd 7416            je      nt!KiFastCallEntry+0x115 (83e8b415)

百度杀毒的驱动对KiFastCallEntry进行HOOK,这是系统入口点,所有系统调用都会经过这个函数。我们需要了解一下系统调用的基本知识,应用层的API做一些参数检查工作之后会调用ntdll.dll的同名nt函数,比如CreateFile会调用ntdll.dll中的NtCreateFile函数(和ntdll.dllZwCreateFile完全一样),然后NtCreateFile填写参数之后执行sysenterint 0x2E,这个时候由应用层进入内核层,内核分发函数就是KiFastCallEntry,它会根据应用层调用去执行SSDT的相应函数。

所以KiFastCallEntry是防护软件绝佳的HOOK地点。最早应该是360发现的,所以360使用的HOOK点是最佳的,百度这里看到有nop填充,估计也是无奈之举。同时也能知道百度采用的是比较流行的驱动框架模型,bd0001是个驱动框架,其它驱动通过bd0001的接口注册回调,bd0001调用实现监控。

再回头看这个蓝屏:

kd> kb
ChildEBP RetAddr  Args to Child              
a39a250c 83f24e71 00000003 2fa590e4 00000065 nt!RtlpBreakWithStatusInstruction
a39a255c 83f2596d 00000003 00003ff8 a5d3adbc nt!KiBugCheckDebugBreak+0x1c
a39a2920 83ecd8e3 00000050 a5d3adbc 00000000 nt!KeBugCheck2+0x68b
a39a29ac 83e8e5f8 00000000 a5d3adbc 00000000 nt!MmAccessFault+0x106
a39a29ac a7280e2f 00000000 a5d3adbc 00000000 nt!KiTrap0E+0xdc
WARNING: Stack unwind information not available. Following frames may be wrong.
a39a2a4c a72825cd a5d3ad90 00200000 052a0020 PCHunter32ag+0x52e2f
a39a2af8 a72828f7 052a0020 00200000 00001000 PCHunter32ag+0x545cd
a39a2b0c a728296e 00000000 000008f1 8744a740 PCHunter32ag+0x548f7
a39a2bfc 83e844bc 9174ae98 889b3930 889b3930 PCHunter32ag+0x5496e
a39a2c14 84085eee 88932038 889b3930 889b39a0 nt!IofCallDriver+0x63
a39a2c34 840a2cd1 9174ae98 88932038 00000000 nt!IopSynchronousServiceTail+0x1f8
a39a2cd0 840a54ac 9174ae98 889b3930 00000000 nt!IopXxxControlFile+0x6aa
a39a2d04 83e8b42a 00000508 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
a39a2d04 76fc64f4 00000508 00000000 00000000 nt!KiFastCallEntry+0x12a
001266d8 76fc4cac 7516a08f 00000508 00000000 ntdll!KiFastSystemCallRet
001266dc 7516a08f 00000508 00000000 00000000 ntdll!NtDeviceIoControlFile+0xc

IofCallDriver用于发送Irp,之后的栈就出问题了,reactos中看实现:

NTSTATUS
FASTCALL
IofCallDriver(IN PDEVICE_OBJECT DeviceObject,
              IN PIRP Irp)
{
    return DriverObject->MajorFunction[StackPtr->MajorFunction](DeviceObject,
                                                                Irp);
}

看来是bd0001的分发函数调用出了问题。这个蓝屏纯属意外,恰好可以讲解一下百度杀毒的驱动模型和HOOK技术。现在回归主线。重启电脑。

看一下大家比较关心的隐私问题,看看网络链接情况:

Baidusdsvc.exe是和220.181.112.25480端口保持通信的,该IP是北京电信的。Wireshark看一下通信内容,没发现往上传文件的情况。                                            

再看看启动项:        

这只是可执行文件和服务,看看驱动:

挺多,大部分启动类型都是1,连bd0001都是1,也就是普通驱动,而不是BOOT型。BOOT型驱动启动类型为0,由winload.exe加载,和ntoskrnl.exe以及hal.dll同级,加载时间非常早;之后才加载系统级驱动。所以说如果中病毒了,而该病毒有个boot型驱动,用百度杀毒显然是无能为力的。

百度杀毒卸载问题

好多朋友都问我如何卸载百度杀毒,真有那么难以卸载吗?这里测试一下。卸载过程真是…… 把“不卸载”大写并且突出,“继续卸载”扁平化恨不得凹进去。不过识字的应该都能顺利卸载完成。接着重启。                      

没了。目测是卸载干净了。

看了看注册表,bd0001等驱动都没了。看一下KiFastCallEntryHOOK点:

kd> !chkimg nt
14 errors : nt (83e873e9-83eb3ce3)
kd> ln 83e873e9
(83e87300)   nt!KiFastCallEntry+0xe9   |  (83e87480)   nt!KiServiceExit

kd> u nt!KiFastCallEntry+0xe9
nt!KiFastCallEntry+0xe9:
*** ERROR: Module load completed but symbols could not be loaded for bd0001.sys
83e873e9 e9f0e29215      jmp     bd0001+0x86de (997b56de)
83e873ee 90              nop
83e873ef 90              nop
83e873f0 90              nop
83e873f1 0f832e020000    jae     nt!KiSystemCallExit2+0xa5 (83e87625)
83e873f7 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]
83e873f9 f6456c01        test    byte ptr [ebp+6Ch],1
83e873fd 7416            je      nt!KiFastCallEntry+0x115 (83e87415

卧槽,居然还被HOOK呢。    
       

看一下KiFastCallEntryHOOK点:

kd> !chkimg nt
14 errors : nt (83e873e9-83eb3ce3)
kd> ln 83e873e9
(83e87300)   nt!KiFastCallEntry+0xe9   |  (83e87480)   nt!KiServiceExit

kd> u nt!KiFastCallEntry+0xe9
nt!KiFastCallEntry+0xe9:
*** ERROR: Module load completed but symbols could not be loaded for bd0001.sys
83e873e9 e9f0e29215      jmp     bd0001+0x86de (997b56de)
83e873ee 90              nop
83e873ef 90              nop
83e873f0 90              nop
83e873f1 0f832e020000    jae     nt!KiSystemCallExit2+0xa5 (83e87625)
83e873f7 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]
83e873f9 f6456c01        test    byte ptr [ebp+6Ch],1
83e873fd 7416            je      nt!KiFastCallEntry+0x115 (83e87415

卧槽,居然还被HOOK呢。                    
                       

试着删除bd0004,禁止删除,应该是下载助手。卸载百度下载助手之后试试。删除成功, 重启看看: 

kd> !chkimg nt                                                                       
2 errors : nt (83ebbb5f-83ebbdad)

这次没问题了。

为什么卸载之后bd0001还会加载到内存呢?可能是我操作有误,重新试了一次发现安装——重启——卸载——重启之后,系统是干净的,没有出现卸载问题。卸载问题是怎么来的呢?

考虑到推广,可能是被绑定软件搞的鬼。我们下载一个合作软件,通过绑定方式安装杀毒,看看卸载情况。不得不说,百度的情况肯定是被水军和职业黑夸大了,我找了好久都没找到绑定的情况,即使安装百度输入法并且一路下一步,都没能被绑定装上杀毒。

X64情况

Windows 64位对内核采取了一系列保护措施,最经典的就是KPPDSEKernel Kernel Patch Protection主要使用PatchGuard,禁止修改内核,所以传统的SSDT Hook和修改内核对象等手段都走不通了;DSE强制驱动签名。所以64位驱动大多是使用windows官方定义的回调,结合应用层HOOK来搞。64win7上装好杀毒,看了看services,跟32位的差不多,也是bd00001等系统级驱动。

运行卸载程序之后重启,并没有发现不能卸载的情况。感觉非常不好,测试了半天连个流氓行为都没有捕获。难道那些流言都是空穴来风?

问题复现

测试了半天,没发现百度杀毒有问题。问了一些出问题的朋友,有的说是捆绑情况,杀毒、卫士、浏览器同时被装上,然后卸载重启之后右下角弹框,点修复就会重新装上。之前的测试只是针对百度杀毒一个,这次把杀毒、卫士都装上试试。

官网直接下载某个非常小的下载器。会把最新版杀毒卫士都下载下来然后安装好。这个过程中确实没有任何提醒,没有下一步,直接就装好了,连安装地址都不能选择。PCHunter看了一眼吓一跳,能装的都装上了:

驱动也多了几个:

多了一些网络过滤驱动和浏览器防护的,这也是卫士的基本功能。其他的HOOK就不看了,都差不多。还是关注一下卸载问题。卸载百度杀毒,同时删除配置信息,重启。百度卫士修复了半天漏洞,优化这个那个的,反正界面很华丽得搞了半天。百度杀毒确实是卸载掉了。

那么怎么样才能重现卸载不了的问题呢?我查了一下百度流氓行为的一些信息,按照他们说的某个软件,都测试过一次,均没有出现不能卸载这种奇葩现象。

有一种情况是可能的,装百度杀毒和百度卫士,但是只卸载其中一个,另一个使用猥琐的方法(比如在修补漏洞界面非常隐蔽的隐藏一句同时安装杀毒/卫士)骗取用户同意然后重新安装另一个。驱动公用,想装另一个太容易了。

另外我绝对不是托儿,首先我还不够资格;其次也没必要,我只是想亲自看看传说中的流氓行为,只不过搞了半天没有复现,仅此而已。杀软这种东西很大程度上是给小白用户个心理安慰,真正能有多大用呢?当然升级软件方便一些,清理垃圾也方便一些,沙箱针对一般恶意应用也提供了足够防护。各家厂商技术差距肯定存在,但是那些技术的差距落实到每个用户电脑上,又能有多大的体现?大佬们口水仗打得爽,跟用户其实没半毛钱关系,难不成你还真以为公司没事儿干为了情怀做个杀软让你用?

装软件的时候也非常注意是不是捆绑了其他程序,多长个心眼儿,那些传说中的流氓行为都可以避免。现在最大的问题是法律法规对互联网行为没有做好规范,这个黑那个,那个黑这个,真正为用户考虑的没几个,号称为用户考虑也不过是宣传口号而已。真希望能早日做到有法可依。

[作者/dedogger,作者独立观点,FreeBuf不做任何形式背书。本文属FreeBuf黑客与极客(FreeBuf.COM)原创文章奖励计划,]


被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

免责声明

本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:21414696(PV) 页面执行时间:118.739(MS)
  • xml
  • 网站地图