Hmily 发表于 2016-7-4 14:45

浅谈易语言“蓝屏”暗桩查找和处理方法

现在听说一些易语言写的程序动不动就蓝屏,外挂木马检测到调试器或者虚拟机就蓝屏,一直没有机会遇到没能尝试,恰巧今天有幸遇到一个病毒使用了这个方式,和大家分享一下分析方法,帖子:

恶意木马加密文件又来了,希望管理员密切关注!
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-4 15:17

本帖最后由 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

勇者为王 发表于 2016-7-4 15:12

学习了,感谢H大授业!

Hmily 发表于 2016-7-4 14:47

【公告】关于最近多位会员被恶意木马加密文件
http://www.52pojie.cn/thread-502278-1-1.html
(出处: 吾爱破解论坛)
自从上一次管理发布这种勒索病毒的分析后,病毒作者再次变种,木马作者一直在其他地方(非吾爱破解论坛)作案,并且加密名称加上我们论坛域名来误导用户,假骗是论坛所为,其实都是木马作者的阴谋。

Hmily 发表于 2016-7-4 14:53

这个蓝屏的分析还挺多:
http://blog.sina.com.cn/s/blog_59acc8e20100b286.html
http://www.alex-ionescu.com/?p=61

520_ai_in@sina. 发表于 2016-7-4 14:55

学习一下- -

onmiuncai 发表于 2016-7-4 15:06

感谢H大,学习之。

Cmilyci 发表于 2016-7-4 15:10

涨知识!!学习到了! 0 0感谢H大

zt185 发表于 2016-7-4 15:13

学习了,H大牛牛!

学霸 发表于 2016-7-4 15:16

H大分析的要好好看
页: [1] 2 3 4 5 6
查看完整版本: 浅谈易语言“蓝屏”暗桩查找和处理方法