流氓软件化身“卫士”,携带病毒对抗安全软件

2017-01-09 354045人围观 ,发现 13 个不明物体 系统安全

*本文原创作者:火绒安全,本文属FreeBuf原创奖励计划,未经许可禁止转载

一、背景 

近期我们接到用户反馈。刚刚装好的系统无法安装火绒安全软件,表现为:安装程序执行安装步骤到一半的时候,安装程序自己消失,除此以外浏览器首页也被恶意篡改。通过定位问题,我们在用户计算机上提取了和中毒现象相关的八个病毒文件。在进一步的分析中我们发现,提取的文件是一组病毒,并且和两个叫做“卫士”的软件有关联,分别是:“浏览器卫士”和“铠甲卫士”。

这个发现并不让我们感到意外,这些年免费的“卫士”类软件不断出现,一般都是广告满天、弹窗不断,浏览器主页“被”保护,当然这些都是“增值功能”,大多还是有安全防护能力的。但是今天这两个”卫士“,颠覆了我们的三观:打着卫士的幌子,作着流氓的生意,没有安全软件的功能,却屏蔽安全软件的安装,和真正危害计算机安全的病毒的共存,所谓的“卫士”,最主要的功能除了锁首截取导航站流量,下载推广软件。

二、病毒分析

中毒计算机可以在C:\WINDOWS\system32\Qprotect目录找到以下六个文件(x64系统安装目录就是C:\Windows\SysWOW64\Qprotect目录):“QProtect.sys、QProtect64.sys、svchost.exe、QProtect.dll、QProtect64.dll、csrss.exe”。在C:\Windows\System32\Drivers目录下找到另外两个以“usb”字母开头,文件名称随机的驱动文件。根据提取的文件,我们在火绒病毒实验室复现了用户现场。

Qprotect文件夹下的病毒文件名相似,创建时间也相同。其余两组文件usb3568.sys、usb79701.sys看起来和第一组病毒没有太大关系。但是这些病毒的数字签名的签名人姓名一致,签名日期相近,很可能是由一个病毒释放器安装的,如图2-1:

1.png

图2-1、病毒文件数字签名一致

中毒的计算机有两个明显的现象:安全软件无法安装,首页被劫持。除此之外还有一个不太容易注意到的问题,就是安装某些软件的时候,启动的安装程序并不是用户自己下载的。按照现象我们分为三组:

第一组病毒的负责替换用户下载的常见软件安装包,替换为带有病毒作者推广信息的安装包,截取软件安装量。相关文件有:QProtect.sys、QProtect64.sys、svchost.exe、QProtect.dll、QProtect64.dll、csrss.exe。

第二组病毒,只有usb3568.sys一个文件。负责对抗安全软件,阻止安全软件进入中毒计算机。病毒文件名很可能会有不同变化,一般规律是“usb“字母开头后跟4位数字。

第三组文件也只有一个“usb79701.sys”,该病毒文件名称也是随机,usb字母开头后跟5位随机数字,负责对抗安全软件的首页保护功能,截取浏览器导航页面流量。

三组病毒按照功能:“推广软件安装”,“阻止安全软件安装”和“破坏安全软件功能”分别进行分析。

2.1推广软件安装

Qprotect目录下的病毒是第一组。csrss.exe这个文件是整组程序的主模块。它接受一个参数“/load”,添加该参数启动后,csrss.exe会执行以下流程:

1. 将病毒从任意目录复制到C:\WINDOWS\system32\Qprotect目录下,x64系统安装目录就是C:\Windows\SysWOW64\Qprotect。

2.加载驱动文件QProtect.sys,x64下是Qprotect64.sys。

3.联网在hxxp://bbup.201061.com下载带有病毒作者推广信息的安装包到%Windir%\Qhotfix目录下,如图2-2:

2.png

图2-2、csrss.exe执行流程

4.   x86下csrss.exe会对新启动进程注入Qprotect.dll,x64位程序由svchost.exe负责注入。Qprotect.dll、Qprotect64.dll动态库的功能相同。注入后的Qprotect动态库会挂钩CreateProcessInternalW系统函数,拦截被注入进程启动的程序。如图2-3:

3.png

图2-3、Qprotect挂钩CreateProcessInternalW系统函数

以Qprotect.dll注入资源管理器(explorer.exe)为例,Qprotect.dll会调用VerQueryValueW函数得到explorer.exe欲启动程序的详细信息,调用证书相关API得到启动程序的签名信息,和病毒内置的推广软件安装包信息进行对比。如果explorer.exe启动的程序是一个安装包,并且在病毒自己的列表内,就会启动%Windir%\Qhotfix目录下的对应的安装包安装,以QQ浏览器为例,如图2-4、2-5:

4.png

图2-4、用户下载的QQ浏览器和explorer.exe启动的QQ浏览器不同

5.png

图2-5、explorer.exe启动的QQ浏览器

这些安装包都包含有渠道商信息,如果不使用监控工具,用户根本不可能知道自己下载的安装包被替换运行过,通过此方法可以悄声无息的截取软件安装量。病毒内完整功能的推广列表如下(图2-6):

6.png

图2-6、提取病毒和推广软件功能相关的可见字符

QProtect.sys驱动负责保护HKLM\SOFTWARE\Qprotect、HKLM\SYSTEM\CurrentControlSet\Services\Qprotect注册表项不被修改删除。保护Qprotect文件夹下的病毒文件不被修改、删除。这样病毒可以长期驻留用户计算机。

这一组病毒文件模块众多,表面功能简单。但是仔细分析可以发现,病毒不是只有表现的这些功能。在分析Qprotect.sys代码时,我们发现了该驱动可以“保护”默认浏览器注册表项,阻止安装第三方浏览器的功能,但是实际测试时并没有生效。如图2-7:

7.png

图2-7、Qprotect.sys中没有用到的字符串

同样在病毒程序csrss.exe的资源文件中,我们发现一个名为ZIPRES\0083\0804的压缩包资源,解压出来可以看到如下内容(图2-8、2-9):

8.png

图2-8、csrss.exe内包含的图片资源

9.png

图2-9、csrss.exe内包含的文字资源

一个是默认浏览器注册表项和浏览器列表,一个是“浏览器卫士”的贴图和文字资源,而以上两点,都没有看到病毒使用。这说明该病毒和名为”浏览器卫士”软件存在联系。在同源性分析章节,我们会对”浏览器卫士”这条线索继续追查,证明此事。

2.2  阻止安全软件安装

第二组病毒usb3568.sys就是在用户计算机上无法安装安全软件的元凶。病毒功能简单,就是对抗安全软件的安装,如果有安全软件在安装,就会结束安装包的进程。

该病毒驱动加载后会初始化过滤文件列表,列表内包含有绝大多数的安全软件关键文件名称,只要出现在该列表内文件,都会在病毒文件过滤功能中拦截,病毒发现若是有安装程序创建列表内的文件,就会调用内核函数ZwTerminateProcess将创建文件的进程结束,阻止安装程序继续安装。

有意思的是,该病毒调试日志丰富,如果启动内核调试器调试,可以看到病毒打印出来的调试日志信息,调试信息中包含了病毒要过滤文件的完整列表,列表内包含了国内外几乎常见的所有安全软件关键文件,如图2-10:

10.png

图2-10、病毒打印的日志

和第一组病毒一样,我们发现usb3568.sys包含部分代码不会被调用,比如:病毒创建的设备“\Device\KJAnti”、还有“\\KJClientPort”都可以和上层应用程序进行通信。但是在用户计算机上没有找到上层应用。这的符号名中都包含“KJ”也是重要的线索,在同源性分析章节,也会继续追查,寻找病毒源头。

2.3  破坏安全软件功能

第三组程序usb79701.sys是整个病毒的核心,负责截取用户首页流量,也是功能比较多的一个驱动模块。病毒中包含的所有有用信息全都被加密保存对抗分析,这是其他两组程序没有的。

usb79701.sys驱动首次加载后,会复制自身到系统drivers目录下,然后删除驱动原始文件。将新释放的驱动加载到用户系统,并且删除驱动的注册表服务启动项,做到无启动项,后续通过关机回掉函数,在关机的时候写回启动项。复制到drivers目录下新的病毒文件名是随机的。无启动项、随机文件名,都给手工检测、发现病毒提高了难度。

加载后的病毒会在用户桌面创建“淘宝.url”文件,在用户收藏夹也会创建三个url文件分别是:“百度.url””、“京东商城.url””和“淘宝.url””,如图2-11:

11.png

图2-11、病毒添加的URL文件

三个URL的链接分别指向以下三个网址,最终回跳到下表右侧的“跳转链接“指向的网址,如下表2-1:

添加链接 跳转链接
hxxp://ie.150398.com/baidu.html hxxps://www.baidu.com/index.php?tn=93139410_hao_pg
hxxp://ie.150398.com/taobao.html hxxp://ai.taobao.com/?pid=mm_120655403_19768235_68200168
hxxp://ie.150398.com/jingdong.html hxxps://www.jd.com/?cu=true&utm_source=kong&utm_medium=tuiguang&utm_campaign=t_1000023102_&utm_term= 139109ff8cf04e53a91cf9a66f385e7f&abt=3

表2-1

其中百度和淘宝的两个URL并不是直接跳转的,中间会有一个跳转页面。百度的是的是hxxp://www.112112.com,淘宝的是hxxp://shop.156038.com。这两个网址直接访问都显示的都是正常页面,但是如果修改了referrer,就会跳转到病毒访问的推广页面,如图2-12、2-13:

12.png

图2-12、修改referrer会的到不同的结果

13.png

图2-13、修改referrer会的到不同的结果

我们猜测这样做的目的是为了让带有推广号的导航页面更隐蔽。除了释放URL病毒驱动还包含其他RootKit功能:

1.注册文件过滤驱动,如图2-14。

2.注册进程通知、映像通知、和关机通知几个内核通知,如图2-15。

14.png

图2-14、病毒包含文件过滤功能

15.png

图2-15、病毒包含进程通知、关键通知、和映像通知

下面分别进行详细说明:

文件过滤驱动主要负责病毒文件的隐藏和保护工作,如果在中毒计算机直接查看文件信息,看到的都是系统动态库Ntdll.dll的信息。用于迷惑用户和安全研究人员。恢复文件过滤器就可以看到真实的文件信息和数字签名,如图2-16、2-17:

16.png

图2-16、文件过滤功能生效的情况下看到的假信息

17.png

图2-17、文件过滤功能失效的情况下看到的真实信息

关机通知负责驱动的服务项回写。因为驱动注册成功后会删除相关启动项,病毒注册关机通知就可以利用关机回调函数回写注册表启动项。做到有病毒无启动项。并且在关机时添加服务启动项可以过掉主流安全软件的主防拦截。同样用户正常关机后可以在PE系统下看到的关机后病毒添加的注册表驱动服务启动项,如图2-18:

18.png

图2-18、PE系统下看到病毒关机添加的驱动启动项

映像通知负责病毒驱动对抗安全软件的首页保护功能。病毒驱动在映像文件加载的时候,会判断是否是浏览器进程,该进程中是否注入了安全软件浏览器首页锁定相关动态库,如果都满足就补丁首页保护动态库入口代码使其加载失败,失去浏览器保护功能(如图2-19),被Patch完的某安全软件首页保护动态库模块入口代码,如图2-20:

19.png

图2-19、病毒Patch安全软件首页保护功能的反汇编流程图

20.png

图2-20、被Patch的某安全软件的入口点代码

除了图中展示的某安全软件的首页保护动态库以外,病毒补丁入口的全部动态库列表如下:

*\QMPROTECT.DLL

*\QMIESAFEDLL.DLL

*\KSHMPG.DLL

*\KWSUI.DLL

*\KSHMPGEXT.DLL

*\QMIESAFEDLL64.DLL

*\SAFEWRAPPER64.DLL

*\KWSUI64.DLL

进程通知负责判断启动进程是否浏览器进程,如果是则通过PsGetProcessPeb得到PROCESS_PARAMETERS.CommandLine.Buffer直接修改添加导航页面,用作流量截取。添加的导航网址是hxxp://123.150398.com/,问号后面的是驱动的安装日期,是病毒作者用于统计的标记,如图2-21:

21.png

图2-21、病毒劫持的首页

有意思的是,在病毒代码中我们发现有一段用于检测是否存在KJService.exe(区分大小写)进程的代码片段。如果存在该进程,病毒的进程通知中给浏览器命令行添加导航页面的功能将不再生效,没有多余的任何判断。这又引起了我们的注意。结合之前的字符串”KJAnti”和”KJClientPort”,和现在的“KJService.exe” 都包含“KJ”字样。“KJ”指的会是什么。下一章的同源性分析中我们将会继续追踪。

三、同源性分析

3.1 “浏览器卫士”病毒

通过火绒情报威胁系统,对病毒文件Qprotect,sys的火绒检测结果进行检索。可以找到包含该病毒样本,SHA1是5fd5e56cfe51a1fb90852e6fb11c8bd2f7f6d610,是一个自身描述为“浏览器卫士安装程序”的安装包文件。

找到的“浏览器卫士”是一个静默安装包,默认的安装路径、驱动名称和病毒只有一个字母的差别,如图3-1:

22(3-1).png

图3-1、“浏览器卫士”静默包安装路径和安装后文件

如果分别对驱动文件通过简单提取字符比较,可以看到两者相似度极高,左边是”浏览器卫士”HProtect.sys的字符数据,右边是病毒Qprotect.sys的字符数据。如图3-2:火绒对两个文件的检测结果也是一致:“Trojan/Kiaja.a”。

23.png

图3-2、左侧是“浏览器卫士”,右侧是病毒文件

在查看HProtect.exe的资源文件中,可以找到名为ZIPRES\0065\0804的压缩包资源,解压出来的资源和第一组病毒的csrss.exe也是一样。

我们找到”浏览器卫士”包含用户界面,功能上除了拦截浏览器,还会对安全软件进行拦截。如图3-3:

24.png

图3-3、安装安全软件的时候会在屏幕右下角弹出提示,默认阻止

完整拦截文件的列表如下:2345MPCSafe.exe、HipsMain.exe、rsmain.exe 、kismain.exe、KSafe.exe、BaiduSd.exe、BaiduAn.exe、360sd.exe、360Safe.exe、YYExplorer.exe、baidubrowser.exe、UCBrowser.exe、Opera.exe、Theworld.exe、firefox.exe、maxthon.exe、2345explorer.exe、sogouexplorer.exe、qqbrowser.exe、chrome.exe、liebao.exe、360chrome.exe、360se.exe。

而且”浏览器卫士”安装后无法在添加删除里卸载,卸载只能通过设置界面的卸载按钮才能完成。如图3-4:

25.png

图3-4、卸载功能在软件设置中,且卸载按钮为灰色。

以“浏览器卫士”作为关键字在百度知道进行搜索,可以看到很多用户都遇到了“浏览器卫士”阻止安装浏览器的,并且针对“浏览器卫士”卸载的卸载也有用户询问,如图3-5:

26.png

图3-5、用户针对“浏览器卫士”遇到的问题

通过分析可以确认“浏览器卫士”就是一个打着卫士幌子的病毒。自身没有提供任何和安全相关功能,还阻止其他安全软件的安装。这个“卫士”还只是一个“单纯”的KillAV(特指对抗安全软件的病毒),下一个“卫士”可就不那么简单了。

3.2  “铠甲卫士”病毒

再看第二组病毒同源信息,我们使用关键字”KJAnti”关键字进行搜索,可以得到“铠甲卫士”(hxxp://www.kaijiaweishi.com)这条线索。而汉语拼音的“KaiJia”首字母缩写正是“KJ”二字。这说明后两组usb字母开头的驱动文件和铠甲卫士这款软件一定存在关系。

在铠甲卫士的主页可以看到,它有两个主要版本1.x和2.x。分别下载kjaqws_1.0.16.233.1458641936.exe(下文简称KJ1.x或者铠甲病毒第一代)和KaiJiaSetup@gw_2.0.16.927(下文简称KJ2.x或者铠甲病毒第二代),在安装后分别进行分析验证。

3.3   铠甲病毒第一代

KJ1.x安装完成后,可以在安装目录(C:\ProgramFiles\KaiJia)下的Drivers文件夹找到两个驱动文件kjanti.sys和kjanti64.sys。通过简单字符对比和IDA引用分析,可以确认KJ1.x的驱动文件kjanti.sys和火绒捕获usb3568.sys病毒功能一致,如图3-6、3-7:

27.png

图3-6、左侧是病毒,右侧是铠甲卫士

28.png

图3-7、左侧是病毒,右侧是铠甲卫士

对比病毒驱动usb3568.sys和铠甲卫士kjanti.sys的数字签名时间可以看出,铠甲卫士驱动的出现时间更早,先有的铠甲卫士后出现的病毒。如图3-8:

29.png

图3-8、病毒和铠甲卫士一代的签名时间对比

3.4  铠甲病毒第二代

在2016年9月铠甲卫士更新到了v2.0.16.927版本。重新安装v2.0.16.927后,安装目录“kjanti.sys“和“kjanti64.sys”两个驱动已经找不到了,但是名为“KJService.exe“文件出现在我们眼前,“KJService.exe“文件的自我描述为“铠甲安全卫士-安全防护服务”。这个文件名称我们在第三组病毒“usb79701.sys”中曾经看到过。

在上文分析中,病毒“usb79701.sys“会检测中毒计算机是否存在“KJService.exe”(区分大小写)进程。如果存在,则首页劫持代码就不会生效,这一定不是巧合。继续查看KJService.exe和病毒usb79701.sys的文件签名时间也是出现在同一天,如果不事先知情,病毒代码又怎么会和“铠甲卫士“的程序上做到同步修改呢?如图3-9:

30.png

图3-9、铠甲卫士二代包含了病毒寻找的KJService.exe这个文件

经过试用,“铠甲卫士“一代和”铠甲卫士“二代,同“浏览器卫士“一样,都不具有安全软件基本的功能,无法保护用户计算机安全,在安全功能不足的情况下,专精首页锁定,锁首页面“45.cc、696123.com”和软件推广。

我们列出前文出现的所有可疑域名:201061.com、150398.com、112112.com、156038.com、kaijiaweishi.com、696123.com 、45.cc和rjguanjia.com。在whois.chinaz.com上进行域名检索。可以发现除“150398.com”域名外,注册人都为一个,如图3-10:

31.png

图3-10、201061.com在whois.chinaz.com的查询结果

根据注册的QQ邮箱反查,可以看到该邮箱注册多个域名,其中绝大多数都是导航站。完整列表如下图(3-11):

32.png

图3-11、whois.chinaz.com上通过邮箱反查得到的全部域名

浏览这些域名,有几个域名引起我们的注意“bigbaicai.com”, “ushendu.net“、“laomaotaoupan.cn”。再加上第一章交代的用户反馈:“刚刚装好的系统无法安装火绒安全软件”,我们怀疑在病毒是在启动盘的时候安装的。通过搜索引擎搜素验证了我们的猜想。如图3-12:

33.png

图3-12、网络上关于铠甲卫士的相关问题

四、附录

QProtect.sys 6e65611aa8e3b5007f9ee0a9e6fa25075a62df85
QProtect64.sys 754ca3d964596b870aa2bdbe7ebe754d087a2ca3
usb3568.sys 654c1eb569dfd44d2d6da1e987ccc2e3d12f16a0
usb79701.sys a022ae991fe771a624609eec3fd945fb0c5f1042
usb3568.sys(x64) 5ceabc70723bf53557562277681607dbf3429b89
usb79701.sys(x64) 65dddb5357cfcb7b33792d318a11474b071c4c81
svchost.exe 68825ac3c7b53c7ec74c97ccee37e8cd1c21335c
csrss.exe 1ceca8919d7fbb70cceb4249b5b65b54f0ef75d9
QProtect.dll c1a3c3926712d7454916b5049324e5f120950a4b
QProtect64.dll 54fca4c4382ff35e2e636245164a75c2b3c35bf7
kjanti.sys df4277c037ff08307d9d73f47e718768482f32da
kjanti64.sys 915632f398d779e5d13dcd8b42fd45fdc5c94878
kjaqws_1.0.16.233.1458641936.exe 263103ec357cc91ab71e7a18864abb3df810f0b4
KaiJiaSetup@gw_2.0.16.927.exe 518c01705e89ec231e1de75656f4a9ca0d5303b6
KaiJiaSetup@gw_2.0.16.1111.exe c2c864234a2ce1079151cd33f97dd3c5f1c6b0a4
浏览器卫士静默包 5fd5e56cfe51a1fb90852e6fb11c8bd2f7f6d610

 *本文原创作者:火绒安全,本文属FreeBuf原创奖励计划,未经许可禁止转载

这些评论亮了

发表评论

已有 13 条评论

取消
Loading...
css.php