浅谈易语言“蓝屏”暗桩查找和处理方法
现在听说一些易语言写的程序动不动就蓝屏,外挂木马检测到调试器或者虚拟机就蓝屏,一直没有机会遇到没能尝试,恰巧今天有幸遇到一个病毒使用了这个方式,和大家分享一下分析方法,帖子:恶意木马加密文件又来了,希望管理员密切关注!
http://www.52pojie.cn/thread-511674-1-1.html
(出处: 吾爱破解论坛)
楼下有位同学找到木马的出处,给出了木马解密工具地址:http://disk.680.com/3uUnaa (会检测虚拟机、调试器等,发现就蓝屏)
开始我在虚拟机里打开样本,发现蓝屏了,Godfather.Cr说有检测虚拟机,我就把虚拟机的特征去掉了,继续打开后点击还被蓝屏了,看来还是先去掉蓝屏代码吧,没研究过,怎么找了?
我的思路先去找找蓝屏实现的易语言代码,就搜索到这个:
原来蓝屏实现原理就是先调用CreateWindowStation,然后SetHandleInformation,最后通过CloseWindowStation引发蓝屏。
知道原理后简单多了,直接对CreateWindowStationA下断点,中断后
来自程序的调用,我们回朔到代码段看看(程序加了压缩壳并使用了易语言花指令,自行脱壳去花指令):
00402130 55 push ebp
00402131 8BEC mov ebp,esp
00402133 81EC 28000000 sub esp,0x28
00402139 C745 FC 00000000 mov dword ptr ss:,0x0
00402140 68 0C000000 push 0xC
00402145 E8 20020100 call dumped_.0041236A
0040214A 83C4 04 add esp,0x4
0040214D 8945 F8 mov dword ptr ss:,eax
00402150 8BD8 mov ebx,eax
00402152 C703 00000000 mov dword ptr ds:,0x0
00402158 C743 04 00000000 mov dword ptr ds:,0x0
0040215F C743 08 00000000 mov dword ptr ds:,0x0
00402166 68 18000000 push 0x18
0040216B E8 FA010100 call dumped_.0041236A
00402170 83C4 04 add esp,0x4
00402173 8945 F4 mov dword ptr ss:,eax
00402176 8BF8 mov edi,eax
00402178 BE 161C4A00 mov esi,dumped_.004A1C16
0040217D AD lods dword ptr ds:
0040217E AB stos dword ptr es:
0040217F AD lods dword ptr ds:
00402180 AB stos dword ptr es:
00402181 33C0 xor eax,eax
00402183 B9 04000000 mov ecx,0x4
00402188 F3:AB rep stos dword ptr es:
0040218A 8965 F0 mov dword ptr ss:,esp
0040218D 90 nop
0040218E 90 nop
0040218F 90 nop
00402190 68 00000000 push 0x0
00402195 68 37000000 push 0x37
0040219A 68 00000000 push 0x0
0040219F 68 A81B4A00 push dumped_.004A1BA8
004021A4 B8 05000000 mov eax,0x5
004021A9 E8 D4010100 call dumped_.00412382 ; CreateWindowStationA
004021AE 3965 F0 cmp dword ptr ss:,esp
004021B1 74 0D je short dumped_.004021C0
004021B3 68 06000000 push 0x6
004021B8 E8 BF010100 call dumped_.0041237C
004021BD 83C4 04 add esp,0x4
004021C0 8945 EC mov dword ptr ss:,eax
004021C3 90 nop
004021C4 90 nop
004021C5 90 nop
004021C6 8B45 EC mov eax,dword ptr ss:
004021C9 8945 FC mov dword ptr ss:,eax
004021CC 8965 F0 mov dword ptr ss:,esp
004021CF 90 nop
004021D0 90 nop
004021D1 90 nop
004021D2 68 02000000 push 0x2
004021D7 68 02000000 push 0x2
004021DC FF75 FC push dword ptr ss:
004021DF B8 06000000 mov eax,0x6
004021E4 E8 99010100 call dumped_.00412382 ; SetHandleInformation
004021E9 3965 F0 cmp dword ptr ss:,esp
004021EC 74 0D je short dumped_.004021FB
004021EE 68 06000000 push 0x6
004021F3 E8 84010100 call dumped_.0041237C
004021F8 83C4 04 add esp,0x4
004021FB 8965 F0 mov dword ptr ss:,esp
004021FE 90 nop
004021FF 90 nop
00402200 90 nop
00402201 FF75 FC push dword ptr ss:
00402204 B8 07000000 mov eax,0x7
00402209 E8 74010100 call dumped_.00412382 ; CloseWindowStation
0040220E 3965 F0 cmp dword ptr ss:,esp
00402211 74 0D je short dumped_.00402220
00402213 68 06000000 push 0x6
00402218 E8 5F010100 call dumped_.0041237C
看到了吧,代码实现流程和上面源码提供的原理相同,那知道代码如果弄了处理方式也简单,提供一些解决蓝屏的方法:
1、我一般喜欢在蓝屏代码的开始直接retn,这里就是00402130 这里retn就好了。
2、3个API随便哪个失败,应该都不会蓝屏,所以下3个断点,中断下来直接到断尾新建EIP返回即可,这个我没验证,你们验证下吧。
3、知道会蓝屏,最好还要把为啥会蓝屏的原因处理下,比如这里有检测虚拟机还有检测调试器等,一并处理掉,这样也不会触发到蓝屏的代码。
最后过了蓝屏后他还会关机,这个比较简单,直接下关机ExitWindowsEx断点就好了。
好了,分享到这里结束,大家也可以探讨一下自己的经验。
本帖最后由 nkssrez 于 2016-7-5 18:26 编辑
我提供几个Ring3可以蓝屏的APIZwRaiseHardError RtlSetProcessIsCriticalRtlSetThreadIsCritical ZwSetInformationProcess ZwSetInformationThread , ZwRaiseHardError 需要Shutdown权限 其他API需要DEBUG权限 只要拿到权限必蓝无疑而且是从XP到WIN10都能用 详情可以看我帖子有源码和成品 http://www.52pojie.cn/forum.php?mod=viewthread&tid=512249&page=1#pid12953323 学习了,感谢H大授业! 【公告】关于最近多位会员被恶意木马加密文件
http://www.52pojie.cn/thread-502278-1-1.html
(出处: 吾爱破解论坛)
自从上一次管理发布这种勒索病毒的分析后,病毒作者再次变种,木马作者一直在其他地方(非吾爱破解论坛)作案,并且加密名称加上我们论坛域名来误导用户,假骗是论坛所为,其实都是木马作者的阴谋。 这个蓝屏的分析还挺多:
http://blog.sina.com.cn/s/blog_59acc8e20100b286.html
http://www.alex-ionescu.com/?p=61 学习一下- - 感谢H大,学习之。 涨知识!!学习到了! 0 0感谢H大 学习了,H大牛牛! H大分析的要好好看