qutmipc
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
“暗云”BootKit木马详细技术分析 腾讯电脑管家认证厂商2015-01-30共1301562人围观 ,发现 47 个不明物体 漏洞系统安全
“暗云”木马简介:
“暗云”是一个迄今为止最复杂的木马之一,感染了数以百万的计算机,暗云木马使用了很多复杂的、新颖的技术来实现长期地潜伏在用户的计算机系统中。其使用了BootKit技术,直接感染磁盘的引导区,感染后即使重装格式化硬盘也无法清除。
该木马使用了很多创新的技术,有以下特点:
第一、隐蔽性非常高,通过Hook磁盘驱动实现对已感染的MBR进行保护,防止被安全软件检测和清除,并且使用对象劫持技术躲避安全人员的手工检测。隐蔽性极高,截至目前为止,几乎所有的安全软件都无法检测和查杀该木马。
第二、云思想在暗云木马中的使用:木马以轻量级的身躯隐藏于磁盘最前端的30个扇区中,这些常驻与系统中代码并没有传统木马的功能,这些代码的功能仅仅是到执行的服务器(云端)下载其他功能代码到内存中直接执行,这些功能模块每次开机都由隐藏的模块从云端下载。因此木马体积小巧,且云端控制性强。
第三,Ring 3与Ring 0的通信方式:微软正统的通信方式是Ring 0代码创建驱动设备,Ring 3代码通过打开Ring 0创建的设备开实现相互之间的通信。常见的木马使用的通信方式则是在Ring0对指定的API函数进行Hook,而暗云木马是通过注册回调的方式来实现。
第四,操作系统全量兼容:一份BootKit同时兼容x86、x64两种版本的操作系统,且能够兼容xp、win7等当前主流的操作系统版本,因此影响范围十分广泛。在推广获利方面,该木马也是涵盖当前主流的推广获利渠道——推广小网站、推广手机应用、推广游戏、大网站加推广ID。
第五,有效对抗杀软:有于木马的主体在内核中运行,且启动时间比所有的安全软件都早,因此大部分的安全软件无法拦截和检测该木马的恶意行为。木马能够在内核中直接结束部分安全软件进程,同时可以向任意安全软件进程插入APC执行。插入的APC代码会关闭安全软件的文件监控设备句柄,会导致安全软件文件监控失效,大大减少了被检测的机率。
暗云木马启动流程图
图1. 暗云木马启动流程图(图中按红紫绿黑分四个模块)
暗云木马模块功能分工示意图
图2 . 暗云木马模块功能分工示意图
一、常驻计算机模块(MBR)行为
概述:
电脑开机后,受感染的磁盘MBR第一时间获得CPU的控制权,其功能是将磁盘3-63扇区的木马主体加载到内存中解密执行,木马主体获得执行后通过挂钩int 15中断来获取第二次执行的机会,随后读取第二扇区中的备份MBR正常地引导系统启动。
系统引导启动时会通过int 15中断查询内存信息,此时挂钩15号中断的木马便得以第二次获得CPU控制权,获得控制权后木马挂钩BILoadImageEx函数,调用原始15号中断并将控制权交回给系统继续引导。
当系统引导代码调用BILoadImageEx加载ntoskrnl.exe时,木马便第三次获得控制权,获得控制权后木马再一次执行挂钩操作,此次挂钩的位置是ntoskrnl.exe的入口点,随后将控制权交给系统继续引导。
当引导完毕进入windows内核时,挂钩ntoskrnl入口点的木马代码第四次获得CPU控制权,此时木马已真正进入windows内核中,获得控制权后,分配一块内存空间,将木马内核的主功能代码拷贝到分配的空间中,并通过创建PsSetCreateThreadNotifyRoutine回调的方式使主功能代码得以执行。至此完成木马由MBR到windows内核的加载过程。
木马主功能代码的主要实现以下三个功能:
1、劫持磁盘驱动实现隐藏和保护被感染的MBR;
2、向ring3的一个svchost进程插入APC;
3、通过设置注册表回调来接收ring3返回。
插入到svchost代码只实现一个简单的功能:判断操作系统类型,从云端下载相应的Addata.dat模块到本地,解密执行,云端模块的URL硬编码在Shellcode中。
BootKit 启动过程示意图
图3. BootKit 启动过程示意图
代码细节:
感染后的MBR(黑)与原始MBR(红)对比图
感染后的MBR(黑)与原始MBR(红)对比图
二、云端模块一(Addata.dat)行为
概述:
此模块为木马云端配置的第一个模块,其格式固定,以简单的循环移位的方式进行加密,解密后的模块数据结构如下:
云端模块1解密后的数据结构
云端模块1解密后的数据结构
该模块的前4字节为标志“CODE”,仅作为数据合法性校验,校验成功后直接执行其后的Shellcode,而Shellcode的功能则是负责将Addata.dll在内存中加载,最终从其入口点处开始执行之。
Addata.dll的主要功能是下载者,其具体的行为仍然依赖于云端配置,其运行后首先会从云端下载配置文件,配置文件所在的URL为:http://ad.sqc3.com/update/config.db,该URL硬编码在文件中。下载后解析配置文件,由配置文件来决定代码中的功能是否执行,以及具体的参数信息,能够实现的功能以及实际配置文件信息如下表所示:
能够实现的功能以及实际配置文件信息
代码细节:
1、Addata.dll中硬编码的配置文件URL信息
Addata.dll中硬编码的配置文件URL信息
2、设置浏览器主页的相关代码
设置浏览器主页的相关代码
3、对下载的文件可进行不同的处理(LoadLibrary、CreateProcess、加载到内核执行),这里还有一个很有意思的代码:DeleFileA(“我真的凌乱了…….”),作者都凌乱了,真的很复杂!
对下载的文件可进行不同的处理
4、Shellcode是通过NtSetInformationKey代入内核的(内核注册了cmpCallBack)
Shellcode是通过NtSetInformationKey代入内核的
三、云端模块二(jmdm.db)行为
概述:
此模块为木马云端配置的第二个模块,由云端模块一下载后传递到内核执行,已相对较为复杂的加密算法进行加密,其中文件的前0×32字节为解密key,解密后的模块数据结构如下:
云端模块2解密后的数据结构
云端模块2解密后的数据结构
由于此木马同时兼容32位操作系统和64位操作系统,因此这个此模块包含两个版本,内核模块会根据操作系统的类型执行相应的Shellcode,因为两套代码功能完全一致,以下仅分析x86部分。
该模块首先被NtSetInformationKey传入内核,由内核模块从内核Shellcode开始执行,内核Shellcode的功能有如下两个:
1)结束指定杀软进程,包括kxetray.exe、kxescore.exe、QQPcTray.exe,由于管家的进程有object钩子防护,因此不会被干掉。
2)遍历进程,如果进程名为以下之一,则将尾部的应用层Shellcode 以apc的方式插入到该进程中,插入一个进程后便退出遍历,不再插其他进程。具体进程列表如下:360tray.exe、360safe.exe、360sd.exe、360rp.exe、zhudongfangyu.exe、QQPcRtp.exe、KSafeSvc.exe、KSafeTray.exe、BaiduSdTray.exe、BaiduAnTray.exe、BadduAnSvc.exe、BaiduHips.exe、BaiduProtect.exe、wscntfy.exe、spoolsv.exe、alg.exe,以上进程名均硬编码于Shellcode中。
应用层Shellcode被插入指定进程后开始执行,其功能是在内存中动态加载jmdm.dll文件并跳到其入口点执行。
jmdm.dll的主要功能依然是下载者,其代码与Addata.dll有60%以上的相似性,可以确定为同一份源码修改而来,其具体的行为仍然依赖于云端配置,其运行后首先会从云端下载配置文件,配置文件所在的URL为:http://jm.sqc3.com/cn/jmdmpz.db,该URL硬编码在文件中。下载后解析配置文件,由配置文件来决定代码中的功能是否执行,以及具体的参数信息,能够实现的功能以及实际配置文件信息如下表所示:
能够实现的功能以及实际配置文件信息
以上行为执行完毕后,木马会等待下载的inst.exe、update.exe运行完毕后重新创建一个新的宿主进程,随后调用ExitProcess退出原始宿主进程。
代码细节:
1、调用ZwTerminateProcess结束安全软件进程kxetray.exe、kxescore.exe、QQPcTray.exe,由于管家的进程有object钩子防护,因此不会被干掉。
调用ZwTerminateProcess结束安全软件进程kxetray.exe、kxescore.exe、QQPcTray.exe
调用ZwTerminateProcess结束安全软件进程kxetray.exe、kxescore.exe、QQPcTray.exe
2、遍历进程,看进程是否在硬编码的进程列表中,如果是,则插入apc,找到一个进程之后跳出循环,即只向一个进程插入apc
遍历进程
3、插apc的具体代码
插apc的具体代码
4、关闭名为\\Device\\qutmipc等的设备句柄,名称字符串硬编码于文件中
关闭名为\\Device\\qutmipc等的设备句柄
5、配置文件http://jm.sqc3.com/cn/jmdmpz.db 的URL硬编码在文件中
配置文件http://jm.sqc3.com/cn/jmdmpz.db 的URL硬编码在文件中
6、下载指定URL的文件到本地,加载或者运行
下载指定URL的文件到本地,加载或者运行
四、木马的盈利推广部分(inst.exe、update.exe)行为
概述:
木马的最终目的只有一个——盈利,而inst.exe和update.exe,这连个落地的PE文件,则是真正能够使作者获得丰厚收益的模块,也是木马开始执行真正恶意的行为。
Inst.exe运行后首先在桌面上释放一个名为“美女视频聊天”的快捷方式,该快捷方式指向一个http://haomm.com,并带了一个推广id,实现推广网站盈利。Inst.exe还会释放XnfBase.dll、thpro32.dll两个dll到%appdata%目录下,并通过注册服务的方式加载这两个dll。
XnfBase.dll实现的功能是LSP劫持,当用户使用浏览器浏览www.hao123.com、www.baidu.com等网站的时候在其网址尾部添加推广ID,从而实现获利。thpro32.dll实现的功能是:不断地删除系统中指定提供者的LSP,防止其他木马或安全软件通过LSP再次修改推广ID。
Update.exe运行后会创建两个svchost.exe傀儡进程,并将解密出的功能模块分别注入到两个进程中,一个负责向安卓手机安装推广app、另一个实现向含有“私服”等关键词的QQ群上传共享文件,用来推广私服游戏获利。
木马通过各种推广来实现盈利
木马通过各种推广来实现盈利
代码细节:
1、当用户用浏览器访问www.baidu.com等网站时,为其添加推广id,实现推广获利
添加推广id,实现推广获利
2、在桌面上创建的美女视频聊天快捷方式,推广haomm.com这个网站
推广haomm.com这个网站
3、不断检测是否有LSP模块,有则删除,保护自己的推广ID不被修改
不断检测是否有LSP模块,有则删除
4、向指定名称的QQ群上传私服游戏,进行私服游戏的推广
向指定名称的QQ群上传私服游戏
[文/腾讯电脑管家(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]
腾讯电脑管家
腾讯电脑管家
142 篇文章
等级: 8级
||
上一篇:漏洞追踪:如何检查并修复GHOST(幽灵)漏洞下一篇:漏洞追踪:Flash严重漏洞(CVE-2015-0311)详细技术分析
这些评论亮了
Rasiel (4级)回复
我大天朝人才济济
)50(亮了
Push丶EAX (4级)回复
卧槽,这么屌的RAT,你TM用来加载广告,卖给我也行啊~
)48(亮了
echodebug (1级)回复
360可完美防御
)27(亮了
Sandman☭ (3级)回复
又见INT 15H,估计是泄漏的Carberp的源码改的吧。但是挂BILoadImageEx这个又不像是Carberp,没见样本不下结论。
加载DLL还是古老的ShellCode做内存重定位的方式,根本不对稳定性做任何考虑。
)23(亮了
2333 回复
那时候确实没心情写,写着写着就在代码里抒发一下感情
....
)17(亮了
发表评论已有 47 条评论
Rasiel (4级) 2015-01-30回复 1楼
我大天朝人才济济
亮了(50)
大总统 (1级) 2015-01-30回复 2楼
我屮艸芔茻,这个好牛逼,管家这么吊,360你咋没发现呢,是睡着了吗?
亮了(1)
张不San (1级) 2015-01-30回复
@ 大总统 mbr病毒出来这么久,管家现在才大惊小怪,是刚睡醒吗?
亮了(4)
mubiaofr (1级) 2015-02-13回复
@ 张不San 亲爱的
亮了(0)
/kuk宇 (1级) 2015-01-30回复 3楼
:oops:
亮了(0)
mubiaofr (1级) 2015-01-30回复 4楼
我kao,分析得这么细;作者尿了。
亮了(3)
Sandman☭ (3级) 2015-01-30回复 5楼
又见INT 15H,估计是泄漏的Carberp的源码改的吧。但是挂BILoadImageEx这个又不像是Carberp,没见样本不下结论。
加载DLL还是古老的ShellCode做内存重定位的方式,根本不对稳定性做任何考虑。
亮了(23)
echodebug (1级) 2015-01-30回复 6楼
360可完美防御
亮了(27)
IceRainow (2级) 2015-01-30回复
@ echodebug b21
亮了(0)
XTbus 2015-01-30回复 7楼
很明显是个下载者
亮了(1)
Ftc 2015-01-30回复 8楼
首先你得加载起这个驱动!
亮了(0)
david3234 (1级) 13岁骚年一枚 2015-01-30回复 9楼
Bootkit 这类驱动木马貌似跳到ring0实现自己不被杀掉,貌似是这样,嗯没错差不多就是这样
亮了(0)
Push丶EAX 专栏作者(4级) 2015-01-30回复 10楼
卧槽,这么屌的RAT,你TM用来加载广告,卖给我也行啊~
亮了(48)
zer0 (1级) 2015-01-30回复 11楼
系统在有安全软件存在的情况下,驱动是如何加载上的呢?
亮了(1)
六丁目 (2级) 移动安全工作者... 2015-01-30回复
@ zer0 你说的是第一次加载吧,我也搞不明白
亮了(0)
虾米 2015-01-30回复 12楼
不怕不怕,我用的卡巴斯基。。。
亮了(4)
stonedeyy (1级) 2015-01-30回复 13楼
大牛,可否分享样本,跪求
亮了(1)
looker_finder 2015-01-30回复
@ stonedeyy 你没看到分析里的链接吗。。。。。可以直接下到inst.exe
亮了(0)
奥巴马 2015-01-30回复 14楼
腾讯电脑管家 也来了
亮了(0)
112 2015-01-30回复 15楼
看最后行为,我觉得自己已经中马了。
亮了(3)
小菜鱼 2015-01-30回复 16楼
我大数字安全卫士表示去年就能查杀,你个企鹅渣渣
亮了(3)
儿童 2015-01-30回复
@ 小菜鱼 你就睁眼说瞎话吧,数字当真还没有预感、
亮了(0)
虾米 2015-01-30回复 17楼
这个事你自己产自销的吧?
亮了(1)
enunnet@163.com 2015-01-30回复 18楼
在对抗内存取证方面有什么优势没?
亮了(1)
长江 (1级) 2015-01-30回复 19楼
竟然有木马能想到利用MBR !!
亮了(2)
ssdf 2015-01-30回复 20楼
确实搞这么复杂最后拿来推广获利,我真的有点醉了的感觉
亮了(6)
shfu 2015-01-30回复 21楼
Ring0了连QQ杀毒的进程都干不掉???这作者真逗
亮了(3)
夜尽天明 (6级) 千秋邈矣独留我,百战归来再读书 2015-01-30回复 22楼
暗云=乌云?
亮了(1)
xjump 2015-01-30回复 23楼
转发微博
亮了(0)
纱布1 2015-01-30回复 24楼
爱你爱你爱你有个师兄博士论文研究的是病毒,奇怪的是,他居然是做硬件的思考
FreeBuf黑客与极客:【“暗云”BootKit木马详细技术分析】
亮了(2)
站着输出不腰疼 2015-01-30回复 25楼
好厉害
亮了(0)
VCl7 2015-01-30回复 26楼
有一次帮隔壁物流公司的电脑,杀类似的木马还赚了一顿晚饭汗
。是不是可以写进bios或者显卡固件,不过差异太大不好搞哦。或者把主机的用户信息上传至云端,做大数据分析,然后劫持主机推送广告。唉?咋感觉像某数字安全卫士和南极肥鸟已经玩过的。
亮了(2)
乡儒以墨 2015-01-30回复 27楼
在MBR里面放代码在今天还能不被察觉吗?另外,tb怎么把我拉黑了似的。
亮了(0)
手机用户2380820603 2015-01-30回复 28楼
病毒对mbr肯定有保护的,不处理一下搞不定的
亮了(2)
Anny-颜 2015-01-30回复 29楼
有管家,不怕迄今为止最复杂的木马之一“暗云”木马,管哥再次提醒大家注意安全!
亮了(0)
带脚镣跳舞 2015-01-30回复 30楼
→_→
亮了(0)
2333 2015-01-31回复 31楼
那时候确实没心情写,写着写着就在代码里抒发一下感情
….
亮了(17)
yellow (1级) 2015-01-31回复 32楼
看到最后百度页面 、 我觉得我系统已经中毒了 …
亮了(1)
支付产业热点 2015-01-31回复 33楼
不错的内容,感谢分享 !
亮了(0)
scuhurricane (1级) 2015-02-01回复 34楼
@ Push丶EAX 卖给你才多少钱?做广告赚钱才是王道。
亮了(0)
云和谐 2015-02-04回复 35楼
@ Sandman☭ 牟利模式决定研发时间……
亮了(0)
师傅留一手 2015-03-31回复 36楼
吃惊
表吓我
亮了(0)
做广告? 2016-08-27回复 37楼
我想知道能不能通过推id找到作者呢?
亮了(6)
1 2017-10-16回复
@ 做广告? 可以
亮了(0)
7a7 2017-02-01回复 38楼
.dat和.db模块是怎么开发出来的,和.dll模块的开发是否一样,还有这两个模块是PE结构吗,它们是怎么执行的
亮了(0)
PassP 2017-06-23回复 39楼
系统引导启动时会通过int 15中断查询内存信息,此时挂钩15号中断的木马便得以第二次获得CPU控制权,获得控制权后木马挂钩BILoadImageEx函数,调用原始15号中断并将控制权交回给系统继续引导。
当系统引导代码调用BILoadImageEx加载ntoskrnl.exe时,木马便第三次获得控制权,获得控制权后木马再一次执行挂钩操作,此次挂钩的位置是ntoskrnl.exe的入口点,随后将控制权交给系统继续引导。
当引导完毕进入windows内核时,挂钩ntoskrnl入口点的木马代码第四次获得CPU控制权,此时木马已真正进入windows内核中,获得控制权后,分配一块内存空间,将木马内核的主功能代码拷贝到分配的空间中,并通过创建PsSetCreateThreadNotifyRoutine回调的方式使主功能代码得以执行。至此完成木马由MBR到windows内核的加载过程。
细节分析的太笼统了吧,你挂钩Int15h拿第二次控制权的位置,挂钩BILoadImageEx(你确定有这个函数),正确的函数应该是BlImgLoadPEImageEx吧,你挂钩的这个函数在BootMgr.exe 和 Winload.exe中同时存在,既然你说会挂钩ntoskrnl.exe那肯定是Winload.exe了,BootMgr.exe不做任何动作你挂Winload.exe给我看看,还有一个问题PG为什么不报警?
亮了(1)
dark_01 (1级) 2017-07-18回复 40楼
有样本或源码的发分给我 1169337694@qq.com
亮了(0)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
腾讯电脑管家
腾讯电脑管家认证厂商
腾讯电脑管家官方账号
142
文章数
1
评论数
最近文章
KoiMiner挖矿木马变种入侵,超5000台SQL Server服务器被控制
2018.11.18
暗网非法数据交易是隐私信息安全的重大威胁
2018.11.15
流氓软件Playbox安装目录一式两份 刻意欺负非一线城市网民
2018.11.14
浏览更多
相关阅读
“隐魂”木马篡改主页分析:史上反侦察力最强木马的犯罪素描新Njrat木马(Bladabindi)的新功能源码分析探索基于.NET下实现一句话木马之SVC篇一不留神就被别人当枪使的年代网银大盗:Carberp木马又出新变种
特别推荐
关注我们 分享每日精选文章
活动预告
11月
FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气
已结束
10月
【16课时-连载中】挖掘CVE不是梦(系列课程2)
已结束
10月
【首节课仅需1元】挖掘CVE不是梦
已结束
9月
【已结束】自炼神兵之自动化批量刷SRC
已结束
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php 正在加载中...0daybank
文章评论