马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册用户
x
一、 背景 近期我们接到用户反馈。刚刚装好的系统无法安装火绒安全软件,表现为:安装程序执行安装步骤到一半的时候,安装程序自己消失,除此以外浏览器首页也被恶意篡改。通过定位问题,我们在用户计算机上提取了和中毒现象相关的八个病毒文件。在进一步的分析中我们发现,提取的文件是一组病毒,并且和两个叫做“卫士”的软件有关联,分别是:“浏览器卫士”和“铠甲卫士”。 这个发现并不让我们感到意外,这些年免费的“卫士”类软件不断出现,一般都是广告满天、弹窗不断,浏览器主页“被”保护,当然这些都是“增值功能”,大多还是有安全防护能力的。但是今天这两个”卫士“,颠覆了我们的三观:打着卫士的幌子,作着流氓的生意,没有安全软件的功能,却屏蔽安全软件的安装,和真正危害计算机安全的病毒的共存,所谓的“卫士”,最主要的功能除了锁首截取导航站流量,下载推广软件。 二、 病毒分析 中毒计算机可以在C:WINDOWSsystem32Qprotect目录找到以下六个文件(x64系统安装目录就是C:WindowsSysWOW64Qprotect目录):“QProtect.sys、QProtect64.sys、svchost.exe、QProtect.dll、QProtect64.dll、csrss.exe”。在C:WindowsSystem32Drivers目录下找到另外两个以“usb”字母开头,文件名称随机的驱动文件。根据提取的文件,我们在火绒病毒实验室复现了用户现场。 Qprotect文件夹下的病毒文件名相似,创建时间也相同。其余两组文件usb3568.sys、usb79701.sys看起来和第一组病毒没有太大关系。但是这些病毒的数字签名的签名人姓名一致,签名日期相近,很可能是由一个病毒释放器安装的,如图2-1: 图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:WINDOWSsystem32Qprotect目录下,x64系统安装目录就是C:WindowsSysWOW64Qprotect。 2. 加载驱动文件QProtect.sys,x64下是Qprotect64.sys。 3. 联网在hxxp://bbup.201061。C0m 替换。和0下载带有病毒作者推广信息的安装包到%Windir%Qhotfix目录下,如图2-2: 图2-2、csrss.exe执行流程 4. x86下csrss.exe会对新启动进程注入Qprotect.dll,x64位程序由svchost.exe负责注入。Qprotect.dll、Qprotect64.dll动态库的功能相同。注入后的Qprotect动态库会挂钩CreateProcessInternalW系统函数,拦截被注入进程启动的程序。如图2-3: 图2-3、Qprotect挂钩CreateProcessInternalW系统函数 以Qprotect.dll注入资源管理器(explorer.exe)为例,Qprotect.dll会调用VerQueryValueW函数得到explorer.exe欲启动程序的详细信息,调用证书相关API得到启动程序的签名信息,和病毒内置的推广软件安装包信息进行对比。如果explorer.exe启动的程序是一个安装包,并且在病毒自己的列表内,就会启动%Windir%Qhotfix目录下的对应的安装包安装,以QQ浏览器为例,如图2-4、2-5: 图2-4、用户下载的QQ浏览器和explorer.exe启动的QQ浏览器不同 图2-5、explorer.exe启动的QQ浏览器 这些安装包都包含有渠道商信息,如果不使用监控工具,用户根本不可能知道自己下载的安装包被替换运行过,通过此方法可以悄声无息的截取软件安装量。病毒内完整功能的推广列表如下(图2-6): 图2-6、提取病毒和推广软件功能相关的可见字符 QProtect.sys驱动负责保护HKLMSOFTWAREQprotect、HKLMSYSTEMCurrentControlSetServicesQprotect注册表项不被修改删除。保护Qprotect文件夹下的病毒文件不被修改、删除。这样病毒可以长期驻留用户计算机。 这一组病毒文件模块众多,表面功能简单。但是仔细分析可以发现,病毒不是只有表现的这些功能。在分析Qprotect.sys代码时,我们发现了该驱动可以“保护”默认浏览器注册表项,阻止安装第三方浏览器的功能,但是实际测试时并没有生效。如图2-7: 图2-7、Qprotect.sys中没有用到的字符串 同样在病毒程序csrss.exe的资源文件中,我们发现一个名为ZIPRES00830804的压缩包资源,解压出来可以看到如下内容(图2-8、2-9): 图2-8、csrss.exe内包含的图片资源 图2-9、csrss.exe内包含的文字资源 一个是默认浏览器注册表项和浏览器列表,一个是“浏览器卫士”的贴图和文字资源,而以上两点,都没有看到病毒使用。这说明该病毒和名为"浏览器卫士"软件存在联系。在同源性分析章节,我们会对"浏览器卫士"这条线索继续追查,证明此事。 2.2 阻止安全软件安装 第二组病毒usb3568.sys就是在用户计算机上无法安装安全软件的元凶。病毒功能简单,就是对抗安全软件的安装,如果有安全软件在安装,就会结束安装包的进程。 该病毒驱动加载后会初始化过滤文件列表,列表内包含有绝大多数的安全软件关键文件名称,只要出现在该列表内文件,都会在病毒文件过滤功能中拦截,病毒发现若是有安装程序创建列表内的文件,就会调用内核函数ZwTerminateProcess将创建文件的进程结束,阻止安装程序继续安装。 有意思的是,该病毒调试日志丰富,如果启动内核调试器调试,可以看到病毒打印出来的调试日志信息,调试信息中包含了病毒要过滤文件的完整列表,列表内包含了国内外几乎常见的所有安全软件关键文件,如图2-10: 图2-10、病毒打印的日志 和第一组病毒一样,我们发现usb3568.sys包含部分代码不会被调用,比如:病毒创建的设备“DeviceKJAnti”、还有“KJClientPort”都可以和上层应用程序进行通信。但是在用户计算机上没有找到上层应用。这的符号名中都包含“KJ”也是重要的线索,在同源性分析章节,也会继续追查,寻找病毒源头。 2.3 破坏安全软件功能 第三组程序usb79701.sys是整个病毒的核心,负责截取用户首页流量,也是功能比较多的一个驱动模块。病毒中包含的所有有用信息全都被加密保存对抗分析,这是其他两组程序没有的。 usb79701.sys驱动首次加载后,会复制自身到系统drivers目录下,然后删除驱动原始文件。将新释放的驱动加载到用户系统,并且删除驱动的注册表服务启动项,做到无启动项,后续通过关机回掉函数,在关机的时候写回启动项。复制到drivers目录下新的病毒文件名是随机的。无启动项、随机文件名,都给手工检测、发现病毒提高了难度。 加载后的病毒会在用户桌面创建“淘宝.url”文件,在用户收藏夹也会创建三个url文件分别是:“百度.url"”、“京东商城.url"”和“淘宝.url"”,如图2-11: 图2-11、病毒添加的URL文件 三个URL的链接分别指向以下三个网址,最终回跳到下表右侧的“跳转链接“指向的网址,如下表2-1: 添加链接 | 跳转链接 | hxxp://ie.150398。C0m 替换。和0/baidu.html | hxxps://w-w-w。去掉-更换。baidu。C0m 替换。和0/index.php?tn=93139410_hao_pg | hxxp://ie.150398。C0m 替换。和0/taobao.html | hxxp://ai.taobao。C0m 替换。和0/?pid=mm_120655403_19768235_68200168 | hxxp://ie.150398。C0m 替换。和0/jingdong.html | hxxps://w-w-w。去掉-更换。jd。C0m 替换。和0/?cu=true&utm_source=kong&utm_medium= tuiguang&utm_campaign=t_1000023102_&utm_term= 139109ff8cf04e53a91cf9a66f385e7f&abt=3 |
表2-1 其中百度和淘宝的两个URL并不是直接跳转的,中间会有一个跳转页面。百度的是的是hxxp://w-w-w。去掉-更换。112112。C0m 替换。和0,淘宝的是hxxp://shop.156038。C0m 替换。和0。这两个网址直接访问都显示的都是正常页面,但是如果修改了referrer,就会跳转到病毒访问的推广页面,如图2-12、2-13: 图2-12、修改referrer会的到不同的结果 图2-13、修改referrer会的到不同的结果 我们猜测这样做的目的是为了让带有推广号的导航页面更隐蔽。除了释放URL病毒驱动还包含其他RootKit功能: 1.注册文件过滤驱动,如图2-14。 2.注册进程通知、映像通知、和关机通知几个内核通知,如图2-15。 图2-14、病毒包含文件过滤功能 图2-15、病毒包含进程通知、关键通知、和映像通知 下面分别进行详细说明: 文件过滤驱动主要负责病毒文件的隐藏和保护工作,如果在中毒计算机直接查看文件信息,看到的都是系统动态库Ntdll.dll的信息。用于迷惑用户和安全研究人员。恢复文件过滤器就可以看到真实的文件信息和数字签名,如图2-16、2-17: 图2-16、文件过滤功能生效的情况下看到的假信息 图2-17、文件过滤功能失效的情况下看到的真实信息 关机通知负责驱动的服务项回写。因为驱动注册成功后会删除相关启动项,病毒注册关机通知就可以利用关机回调函数回写注册表启动项。做到有病毒无启动项。并且在关机时添加服务启动项可以过掉主流安全软件的主防拦截。同样用户正常关机后可以在PE系统下看到的关机后病毒添加的注册表驱动服务启动项,如图2-18: 图2-18、PE系统下看到病毒关机添加的驱动启动项 映像通知负责病毒驱动对抗安全软件的首页保护功能。病毒驱动在映像文件加载的时候,会判断是否是浏览器进程,该进程中是否注入了安全软件浏览器首页锁定相关动态库,如果都满足就补丁首页保护动态库入口代码使其加载失败,失去浏览器保护功能,如图:,被Patch完的某安全软件首页保护动态库模块入口代码,如图2-19、2-20: 图2-19、病毒Patch安全软件首页保护功能的反汇编流程图 图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。C0m 替换。和0/,问号后面的是驱动的安装日期,是病毒作者用于统计的标记,如图2-21: 图2-21、病毒劫持的首页 有意思的是,在病毒代码中我们发现有一段用于检测是否存在KJService.exe(区分大小写)进程的代码片段。如果存在该进程,病毒的进程通知中给浏览器命令行添加导航页面的功能将不再生效,没有多余的任何判断。这又引起了我们的注意。结合之前的字符串"KJAnti"和"KJClientPort",和现在的“KJService.exe” 都包含“KJ”字样。“KJ”指的会是什么。下一章的同源性分析中我们将会继续追踪。 三、 同源性分析 3.1 “浏览器卫士”病毒 通过火绒情报威胁系统,对病毒文件Qprotect,sys的火绒检测结果进行检索。可以找到包含该病毒样本,SHA1是5fd5e56cfe51a1fb90852e6fb11c8bd2f7f6d610,是一个自身描述为“浏览器卫士安装程序”的安装包文件。 找到的“浏览器卫士”是一个静默安装包,默认的安装路径、驱动名称和病毒只有一个字母的差别,如图3-1: 图3-1、“浏览器卫士”静默包安装路径和安装后文件 如果分别对驱动文件通过简单提取字符比较,可以看到两者相似度极高,左边是”浏览器卫士”HProtect.sys的字符数据,右边是病毒Qprotect.sys的字符数据。如图3-2:火绒对两个文件的检测结果也是一致:“Trojan/Kiaja.a”。 图3-2、左侧是“浏览器卫士”,右侧是病毒文件 在查看HProtect.exe的资源文件中,可以找到名为ZIPRES00650804的压缩包资源,解压出来的资源和第一组病毒的csrss.exe也是一样。 我们找到”浏览器卫士”包含用户界面,功能上除了拦截浏览器,还会对安全软件进行拦截。如图3-3: 图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: 图3-4、卸载功能在软件设置中,且卸载按钮为灰色 以“浏览器卫士”作为关键字在百度知道进行搜索,可以看到很多用户都遇到了“浏览器卫士”阻止安装浏览器的,并且针对“浏览器卫士”卸载的卸载也有用户询问,如图3-5: 图3-5、用户针对“浏览器卫士”遇到的问题 通过分析可以确认“浏览器卫士”就是一个打着卫士幌子的病毒。自身没有提供任何和安全相关功能,还阻止其他安全软件的安装。这个“卫士”还只是一个“单纯”的KillAV(特指对抗安全软件的病毒),下一个“卫士”可就不那么简单了。 3.2 “铠甲卫士”病毒 再看第二组病毒同源信息,我们使用关键字"KJAnti"关键字进行搜索,可以得到“铠甲卫士"(hxxp://w-w-w。去掉-更换。kaijiaweishi。C0m 替换。和0)这条线索。而汉语拼音的“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安装完成后,可以在安装目录(CrogramFilesKaiJia)下的Drivers文件夹找到两个驱动文件kjanti.sys和kjanti64.sys。通过简单字符对比和IDA引用分析,可以确认KJ1.x的驱动文件kjanti.sys和火绒捕获usb3568.sys病毒功能一致,如图3-6、3-7: 图3-6、左侧是病毒,右侧是铠甲卫士 图3-7、左侧是病毒,右侧是铠甲卫士 对比病毒驱动usb3568.sys和铠甲卫士kjanti.sys的数字签名时间可以看出,铠甲卫士驱动的出现时间更早,先有的铠甲卫士后出现的病毒。如图3-8: 图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: 图3-9、铠甲卫士二代包含了病毒寻找的KJService.exe这个文件 经过试用,“铠甲卫士“一代和”铠甲卫士“二代,同“浏览器卫士“一样,都不具有安全软件基本的功能,无法保护用户计算机安全,在安全功能不足的情况下,专精首页锁定,锁首页面“45.cc、696123。C0m 替换。和0”和软件推广。 我们列出前文出现的所有可疑域名:201061。C0m 替换。和0、150398。C0m 替换。和0、112112。C0m 替换。和0、156038。C0m 替换。和0、kaijiaweishi。C0m 替换。和0、696123。C0m 替换。和0 、45.cc和rjguanjia。C0m 替换。和0。在whois.chinaz。C0m 替换。和0上进行域名检索。可以发现除“150398。C0m 替换。和0”域名外,注册人都为一个,如图3-10: 图3-10、201061。C0m 替换。和0在whois.chinaz。C0m 替换。和0的查询结果 根据注册的QQ邮箱反查,可以看到该邮箱注册多个域名,其中绝大多数都是导航站。完整列表如下图(3-11): 图3-11、whois.chinaz。C0m 替换。和0上通过邮箱反查得到的全部域名 浏览这些域名,有几个域名引起我们的注意“bigbaicai。C0m 替换。和0”, “ushendu.net“、“laomaotaoupan.cn”。再加上第一章交代的用户反馈:“刚刚装好的系统无法安装火绒安全软件”,我们怀疑在病毒是在启动盘的时候安装的。通过搜索引擎搜素验证了我们的猜想。如图3-12: 图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 | | 518c01705e89ec231e1de75656f4a9ca0d5303b6 | | c2c864234a2ce1079151cd33f97dd3c5f1c6b0a4 | 浏览器卫士静默包 | 5fd5e56cfe51a1fb90852e6fb11c8bd2f7f6d610 |
|