|
本文涉及的问题:
1. 它是如何感染一个.EXE或.SCR文件的
2. 被感染文件被加入的代码内容及其行为
3. 基于1和2,简要说明被感染文件的修复问题
本文没有涉及的问题:
1. 该病毒如何修改注册表
2. 该病毒生成哪些病毒体文件(包括是否在磁盘根目录生成病毒副本)
3. 该病毒如何下载其他病毒
4. 该病毒感染哪些文件夹下的文件
以上这些内容,就待各位同仁去挖掘了。
样本来源:剑盟样本
http://bbs.janmeng.com/thread-675071-1-1.html
加壳情况:加UPX壳,直接用脱壳机脱壳(太懒了-_-)
脱壳后:基址13140000,入口点偏移00015570
分析方法:脱壳后OD载入看反汇编结果
病毒定性:(改节表)感染型下载者
前奏(准备工作):
创建名为wokaon的互斥对象,EnumWindows似乎是在找卡巴的窗口,找到后则先将系统年份改为1984年(7C0H),Sleep了20秒等卡巴挂掉后,再把时间改回来。这部分反汇编结果:
13155581 68 68561513 push 13155668 ; ASCII "wokaon" 13155586 6A 00 push 0 13155588 6A 00 push 0 1315558A E8 C508FFFF call <CreateMutex> ;Delphi封装函数 1315558F 8BD8 mov ebx, eax 13155591 E8 8609FFFF call <jmp.&KERNEL32.GetLastError> 13155596 3D B7000000 cmp eax, 0B7 1315559B 0F84 BA000000 je 1315565B 131555A1 C605 A8791513 0>mov byte ptr [131579A8], 0 131555A8 6A 00 push 0 131555AA 68 A4531513 push 131553A4 131555AF E8 800AFFFF call <jmp.&user32.EnumWindows> 131555B4 803D A8791513 0>cmp byte ptr [131579A8], 0 131555BB 75 07 jnz short 131555C4 131555BD E8 F2EAFFFF call 131540B4 131555C2 EB 44 jmp short 13155608 131555C4 68 98791513 push 13157998 131555C9 E8 5609FFFF call <jmp.&KERNEL32.GetLocalTime> 131555CE 66:8B1D 9879151>mov bx, word ptr [13157998] 131555D5 66:C705 9879151>mov word ptr [13157998], 7C0 131555DE 68 98791513 push 13157998 131555E3 E8 DC09FFFF call <jmp.&KERNEL32.SetLocalTime> 131555E8 68 204E0000 push 4E20 131555ED E8 CA64FFFF call <jmp.&KERNEL32.Sleep> 131555F2 E8 BDEAFFFF call 131540B4 131555F7 66:891D 9879151>mov word ptr [13157998], bx 131555FE 68 98791513 push 13157998 13155603 E8 BC09FFFF call <jmp.&KERNEL32.SetLocalTime> 13155608 68 10270000 push 2710 1315560D E8 AA64FFFF call <jmp.&KERNEL32.Sleep> ************************************************************************************** 创建两个线程,一个用于植入病毒和感染文件,另一个应该是用于下载的。 ************************************************************************************** 1315561C 68 90791513 push 13157990 13155621 6A 00 push 0 13155623 6A 00 push 0 13155625 68 88481513 push offset <ThreadFun1> 1315562A 6A 00 push 0 1315562C 6A 00 push 0 1315562E E8 4908FFFF call <jmp.&KERNEL32.CreateThread> 13155633 68 94791513 push 13157994 13155638 6A 00 push 0 1315563A 6A 00 push 0 1315563C 68 14501513 push offset <ThreadFun2> 13155641 6A 00 push 0 13155643 6A 00 push 0 13155645 E8 3208FFFF call <jmp.&KERNEL32.CreateThread>
*************************************************************************************
我比较关心感染文件的内容。感染前有判断驱动器属性,不过Delphi对此封装得太多,我看call看得眼花。所以它是哪些文件夹下的文件不感染,哪些文件夹下的文件被感染,这个我没有仔细看。
最后进入N多个call后找到对.EXE和.SCR文件进行感染的部分代码
[1] [2] 下一页 |