快捷搜索:  网络  后门  CVE  渗透  木马  扫描  黑客  as

另辟蹊径:Kuzzle木马伪装万能驱动钓鱼

近期,360核心安全团队监测到钓鱼网站大批传播主页挟制木马,引诱用户下载装置“万能驱动”软件后,偷偷在用户电脑上开释高隐蔽性的木马模块。通过深入的追踪,我们发现该挟制木马是Kuzzle木马团伙制造,目前看来他们不局限于使用bootkit方式来隐躲启动,本次监测到的木马结合社工以及隐蔽的内核Rootkit手艺试图突破杀软的防护。

传播过程

木马团伙专程用一个服务器来部签名为“万能驱动”的钓鱼网站,在上面放置引诱用户下载装置的链接。以下是该服务器使用的一个域名,该“万能驱动”网站页面高仿驱动精灵官网,实则是一个钓鱼网站,两款软件的名称以及类型比较相近,极具迷惑性,木马团伙的仿冒意图显然。

1.png

图1

对该钓鱼网站的服务器进一步挖掘发现,该服务器使用多个域名来进行钓鱼,即钓鱼域名均指向同一服务器IP(222.***.51)。

钓鱼域名
rj.s****2.cn
rj.n*****c.cn
rj.b***x.cn
rj.q*********o.com
qd.e******6.cn
xp.l****0.com
win7.l****0.com

挖掘过程中发现,服务器首页为仿冒“驱动精灵”的官网钓鱼页面,此外服务器还部署了其他的钓鱼页面,均是仿冒经常使用电脑软件的下载页面,并且还会判定域名来控制返归给用户正常的或恶意的下载链接,进而提高其隐蔽性。

Clipboard Image.png

图2

上图页面是通过域名“qd.******6.cn”走访钓鱼服务器的“wnys.html”(万能钥匙下载页面),任意点击页面的地位将会弹出一个指向“百度”服务器的正常软件下载链接。然而,换一个域名走访相同的服务器页面如“http://rj.****2.cn/ wnys.html”,此时弹出的倒是另外一个指向木马软件的下载链接。

从钓鱼网站下载的装置包是经过二次打包的程序,并且图标也做了诈骗性修改,一旦用户下载运行,就会先执行木马模块的开释流程,大概的运行流程以下图所示:

Clipboard Image.png

图3

样本阐发

下面,我们从钓鱼网站下载的装置包最先,具体跟踪木马的感染过程。

Clipboard Image.png

图4

1、装置过程

起首,从静态看该装置包的大小比较大,缘故起因是由于其在资源里包含了另外两个装置包文件,其中一个是正常的“驱动人生”装置包,另一个则是包含恶意模块的软件“FreeImage”。

双击装置包运行后,选择装置路径,然后点击下一步,起首样本会检测安全软件是否运行,要是用户电脑没有运行安全软件,则会直接偷偷装置恶意程序“FreeImage”,然后再运行正常的驱动人生程序,当用户看到驱动人生的装置界面时木马模块实际上已经装置完毕。

相反,要是检测过程中发现体系存在360安全卫士,就会弹出引诱信息,让用户手动关闭360安全卫士;要是不退出360安全卫士,就会反复弹出对话框直到用户抛却装置或者退出360安全卫士落后入上述装置流程。

Clipboard Image.png

图5

静默装置的恶意软件“FreeImage”是从开源项目改造而来,文件名为“FreeImage_292.exe”,以命令参数“-quiet”启动后就会开释恶意驱动模块“drvtmpl.sys”,并通过写注册表的方式直接注册该驱动服务。

为了使恶意驱动“drvtmpl.sys”优先于安全软件启动,恶意程序将驱动添加到“System Reserved”(体系保留)组,从ServiceGroupOrder的加载顺序可以看到“SystemReserved”组位于第一启动顺序,如许保障驱动最优先启动。

除了注册症结的驱动服务以外,“FreeImage”装置包还开释了一些驱动运行过程中需要用到的加密资源。

Clipboard Image.png

图6

至此装置包的首要工作就实现了,在用户重启电脑后,体系就会自动以优先于安全软件的顺序启动运行恶意驱动“drvtmpl.sys”来实现后续的义务。

二、“drvtmpl.sys”驱动

“drvtmpl.sys”驱动是一个加载器,驱动启动后先注册一个“LoadImageNotify”模块加载归调,在归调函数里实现首要的工作。其首要义务是自我隐躲,在内存解密并加载后续的恶意驱动模块:surice.*(x86以及x64扩台甫不同)。

Clipboard Image.png

图7

一、自我隐躲

drvtmpl.sys主若是通过挂钩内核注册表对象归调以及磁盘读写归调来隐躲自身,下图是重启先后的注册表对比,发现重启体系后,驱动服务drvtmpl的内容发生变迁,注册表项伪装成了一个USB扩大驱动,此时使用ARK工具的HIVE解析功能也没法还原真实注册表信息。

Clipboard Image.png

图8

之所以会出现这类征象,是因为drvtmpl.sys事前挂钩了注册表Hive对象的CmpFileWrite归调,在体系写入Hive文件之前进行拦截维护

同时,驱动还挂钩磁盘驱动(disk.sys)的IRP读/写归调,挂钩的过程是在“classpnp.sys”驱动模块的加载空间寻觅空暇地位,在该地位写入跳转到实际挂钩函数的代码,最后再将磁盘驱动的IRP读写归调修改为该地址,之所以如许做是因为想让磁盘读写归调的函数地址仍处于“classpnp.sys”驱动模块空间,由此绕过某些ARK工具的钩子检测。

Clipboard Image.png

图9

drvtmpl.sys主动调用ZwSetValueKey将自身服务的注册表项进行修改会触发挂钩函数的功能。HIVE的挂钩函数,使磁盘的Hive数据与内存中的不一致,干扰注册表编辑器的读取效果。磁盘驱动(disk.sys)IRP读/写归调函数的挂钩首要想维护两个对象。一个是system服务注册表对应的Hive文件,即“C:\Windows\System32\config\SYSTEM”,另一个则是“drvtmpl.sys”驱动本身。在挂钩函数里检查IO操作的地位是否落在受维护对象的范围,返归诈骗性数据。

使用PCHunter的Hive阐发功能查看drvtmpl服务的注册表项,将会发送磁盘读的IRP要求,进入挂钩后的磁盘读例程,该例程检查到读磁盘的地位刚好落在“SYSTEM”文件中drvtmpl服务项的地位,因而返归给要求者虚假的注册信息。

当挂钩函数检测到读磁盘的地位为“drvtmpl.sys”驱动本身时,譬如用Winhex走访该驱动,则会返归诈骗性数据(全为0)。

Clipboard Image.png

图10 

2、解密shellcode加载surice.*内核模块

drvtmpl.sys行使shellcode来加载surice.*内核模块,该内核模块是一个被加密的驱动文件,在32位环境文件名是“surice.eda”, 64位下文件名是“surice.edi”。

drvtmpl.sys解密shellcode并执行后,读取“surice.eda”文件到内存,接着进行解密,解密的算法是根据传入的参数key进行一些简单的异或运算。

“surice.eda”文件解密后,在内存得到一个原始驱动程序,接着shellcode将驱动程序按照PE格式进行解析,拷贝节数据、修重定位表以及加添IAT表,执行驱动程序的入口函数。

Clipboard Image.png

图11 

3、“surice.*”驱动

Shellcode加载“surice.*”驱动后,调用了该驱动的入口函数。surice.*的入口函数注册LoadImageNotify模块加载、CreateProcessNotify进程创建、CreateThreadNotify线程创建3种归调例程,后续的首要工作由3个归调例程协作实现。surice.*驱动是该木马的核心营业模块,首要负责向3环应用层环境注入shellcode,,用来解密并启动nestor.tga以及nsuser.tga木马模块。

Clipboard Image.png

图12

一、线程创建归调例程

该例程的首要功能是向explorer.exe桌面进程注入shellcode,并且仅在第一次创建该进程时进行注入操作。注入的过程是先在桌面进程调配一段捏造内存,同时将该地址存储在注册表Tcpip子健下的EchoMode字段,然后拷贝shellcode到该内存,并为其调配MDL映照到内核地址以便驱动在进程创建的归调例程里与shellcode通讯。

注入shellcode代码后通过对explorer.exe的SendMessageW函数进行IAT Hook,获得shellcode的执行机会。

Clipboard Image.png

图13

2、进程创建归调例程

该例程的首要功能是在体系创建新进程时,通过检查桌面进程shellcode最先地位缓冲区中的进程列表(刚注入时为空,后由3环木马模块修改),来判定是否为需威胁制的阅读器进程。若为威胁制的阅读器进程,则配置全局标志来通知模块加载归调例程向该阅读器进程注入shellcode来启动挟制模块。进程列表,用分号“;”区别不同进程名。

Clipboard Image.png

图14

三、模块加载归调例程

该例程在全局标志g_flag_brower大于0且加载模块为ntdll.dll(创建进程加载的第一个模块)时进入挟制流程,黑客技术,挟制过程是通过修改阅读器程序的OEP使其跳转到注入的shellcode的入口点。

该例程往阅读器进程注入的shellcode实际上与线程创建归调例程往桌面进程注入的shellcode相同,无非在执行前修改了一下其中的一个路径参数,设置shellcode去解密加载另一个木马模块nsuser.tga(此模块由注入桌面进程的模块nestor.tga联网下载而来)。

除了注入shellcode到阅读器进程外,该例程还负责阻止安全软件往阅读器加载安全模块,使其失去对阅读器的维护功能。

Clipboard Image.png

图15

4、阅读器挟制

体系启动过程中驱动程序的预备工作实现后,后续的义务就首要交给3环的shellcode程序来实现。桌面进程的shellcode解密nestor.tga模块来负责控制治理、升级等功能,而阅读器进程的shellcode解密nsuser.tga模块完成挟制主页的功能。

一、nestor.tga模块

本模块运行后会联网进行更新检测,并下载相应的加密资源包进行解压,更新的接口需要带上特定的参数才能返归正常的更新信息。

Clipboard Image.png图16

更新信息包含重要的字段时downloadurl以及mainpage,一个是更新包的下载地址,另一个则是云控挟制的阅读器主页地址。下载地址对应的更新包包含加密的阅读器挟制模块nsuser.tga以及挟制设置文件fpld.spc,详细的文件列表以及对应功能以下所示。

更新包文件 说明
fpld.spc 阅读器挟制设置
nestor.idx 包含资源包文件列表的索引信息
nestor.tga 注入桌面进程的更新、控制程序32位版
nestor.tgi 注入桌面进程的更新、控制程序64位版
nshper.tga 监控360安全防护产品
nsupp.tgg 负责拷贝资源包文件
nsuser.tga 注入阅读器进程的挟制程序
surice.eda 更新的营业驱动32位版
surice.edi 更新的营业驱动64位版

更新完资源后,根据程序的设定将会有一段潜在期,若感染的时间不超过3天则不会运行阅读器挟制的流程。那时间超过3天,控制程序将读取挟制设置文件fpld.spc,根据其中的信息生成挟制列表加添到shellcode肇始地位(如上文所述)。fpld.spc文件解密后的阅读器挟制列表以下。

Clipboard Image.png

图17

然后驱动层模块surice.*就会启动阅读器注入功能,进而启动nsuser.tga模块进行挟制。

2、nsuser.tga模块

本模块注入阅读器时,安全软件的维护模块也被卸载掉了,在此基础上对阅读器进行挟制就显得相对于轻松。挟制阅读器主页的方式是行使阅读器的通勤恳能修改其命令行参数,使阅读器解析参数里附带一个url,完成在启动时关上的第一个页面(主页)为该url。

对于IE阅读器,本模块直接修改进程空间里的命令行。获取GetCo妹妹andLineA/ GetCo妹妹andLineW(这两个API的内部完成只是简单地返归一个保存命令行参数字符串及其长度的全局对象)的返归对象,将其中的命令行字符串指针指向新的命令行参数,并更新其字符串长度。IE阅读器启动时获取到的命令行参数就会包含威胁制的主页地址,从而阅读器的主页信息就被修改,并且不会留下痕迹。

而对于第三方的阅读器,考虑到其启动时获取命令行参数的方式可能不同,采取使用新命令行参数重新创建子进程的方式来进行主页挟制。

Clipboard Image.png

图18

感染分布

下面是此类木马4月份在天下各区域的传播情形分布图,传播的量级在10万以上,可以看出首要在沿海区域传播,其中广东省为重灾区:

Clipboard Image.png

图19

总结与查杀

Kuzzle木马团伙擅长使用木马的伎俩来做流氓推行营业红利,盗用知名公司的数字署名,感染VBR,钓鱼网站传播,RootKit维护手艺,甚至还采用引诱用户退出安全软件的社工套路,不断的更新其木马的自我隐躲、自我维护的手艺,终极在安全软件严防死守的夹缝中得以生计。从本例木马的执行框架来看,木马经过量层的伪装以及隐躲,环环相扣,从传播到装置,经3环进入0环,又从0环渗透排泄到3环,每步都是精心谋划,怯弱如鼠的绕过安全检测,还试图逃离安全人员的审查,绝可能的长期潜躲在用户电脑中图利。

目前360已针对此类样本周全查杀,为用户电脑保驾护航,同时也提醒泛博用户装置软件时使用正轨的下载渠道,避免上当受骗。

Clipboard Image.png图20

Hashs

Clipboard Image.png图21

*

您可能还会对下面的文章感兴趣: