DBG] Trojan Malware AV issue (DLL Injection) MS] Windows

최근에 Malware Issue 있어서 Posting 봅니다.

 

증상은 다음과 같습니다.

1.       특정 머신에서( 1% 정도) 해당 증상이 재현됩니다.

2.       실행과 동시에 종료됩니다. (TaskMgr 확인 , 실행과 동시에 사라집니다.)

3.       다른 계정으로 실행 실행됩니다.

 

Crash Dump 수집해 보니, 아래와 같이 AV 발생했습니다.

0:000> .lastevent

Last event: e38.dc: Access violation - code c0000005 (first/second chance not available)

debugger time: Wed Mar 23 11:34:23.702 2011 (UTC + 9:00)

 

0:000> r

eax=42ba0e10 ebx=000000ae ecx=7c93f641 edx=cc55ff40 esi=00c31116 edi=00004840

eip=00c3595e esp=0011bbac ebp=0012f474 iopl=0         nv up ei pl nz na po nc

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202

fcv+0x595e:

00c3595e 8c6fd1          mov     word ptr [edi-2Fh],gs ds:0023:00004811=????????

 

0:000> u 00c3595e - 0x20 00c3595e +0x20

fcv+0x593e:

00c3593e ab              stos    dword ptr es:[edi]

00c3593f ebe4            jmp     fcv+0x5925 (00c35925)

00c35941 5a              pop     edx

00c35942 ffd2            call    edx

00c35944 59              pop     ecx

00c35945 e30b            jecxz   fcv+0x5952 (00c35952)

00c35947 61              popad

00c35948 83c410          add     esp,10h

00c3594b 5d              pop     ebp

00c3594c 6a01            push    1

00c3594e 58              pop     eax

00c3594f c20c00          ret     0Ch

00c35952 ff5320          call    dword ptr [ebx+20h]

00c35955 40              inc     eax

00c35956 ff55cc          call    dword ptr [ebp-34h]

00c35959 1560abf641      adc     eax,41F6AB60h

00c3595e 8c6fd1          mov     word ptr [edi-2Fh],gs   << AV 발생한 부분

00c35961 6d              ins     dword ptr es:[edi],dx

00c35962 b8034e99e4      mov     eax,0E4994E03h

00c35967 fd              std

00c35968 89c5            mov     ebp,eax

00c3596a 105ba6          adc     byte ptr [ebx-5Ah],bl

00c3596d f1              ???

00c3596e 3cec            cmp     al,0ECh

00c35970 b76f            mov     bh,6Fh

00c35972 06              push    es

00c35973 d6              ???

00c35974 92              xchg    eax,edx

00c35975 7aa6            jp      fcv+0x591d (00c3591d)

00c35977 f1              ???

00c35978 4e              dec     esi

00c35979 19ac0b56a1ec70  sbb     dword ptr [ebx+ecx+70ECA156h],ebp

fcv 어떤 Module 인지 확인하여 보면 다음과 같습니다. (tmp 확장자를 가지는 module 이네요. Malware 라는 생각이 들지요?)

 

0:000> lm vm fcv

start    end        module name

00c30000 00c3d000   fcv      C (export symbols)       fcv.tmp

    Loaded symbol image file: fcv.tmp

    Image path: C:\Documents and Settings\MyUser\Local Settings\Temp\fcv.tmp

    Image name: fcv.tmp

    Timestamp:        Sat Jun 20 07:22:17 1992 (2A425E19)

    CheckSum:         00000000

    ImageSize:        0000D000

    File version:     0.0.0.0

    Product version:  0.0.0.0

    File flags:       0 (Mask 0)

    File OS:          0 Unknown Base

    File type:        0.0 Unknown

    File date:        00000000.00000000

    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

 

이제 확인해야 내용은 아래 Call Stack 모두 있습니다.

0:000> kbL

ChildEBP RetAddr  Args to Child             

WARNING: Stack unwind information not available. Following frames may be wrong.

0012f474 7c93118a 00c30000 00000000 00000000 fcv+0x595e

0012f494 7c94e024 00c36218 00c30000 00000000 ntdll!LdrpCallInitRoutine+0x14

0012f58c 7c80ac87 00c30000 76b10160 7c80ff12 ntdll!LdrUnloadDll+0x41c

0012f5a0 76af6082 00c30000 00000009 0012f990 kernel32!FreeLibrary+0x3f

0012f5c0 76af2e87 0012f990 00c30000 0012f5f0 winmm!InternalLoadDriver+0x17e

0012f6f4 76af2e4c 0012f990 00000000 00000000 winmm!InternalOpenDriver+0x32

0012f70c 76af3886 0012f990 00000000 00000000 winmm!DrvOpen+0x15

0012f980 76af419d 0012f990 76b109bc 0069006d winmm!mmDrvOpen+0x46

0012f9a0 76af4121 00000001 00000000 76af2b61 winmm!MidiInit+0x30

0012f9b0 76af403e 00000001 0012fa04 76af2b61 winmm!InitDevices+0xb8

0012f9e4 76af2b94 76af0000 0012fa10 7c93118a winmm!DllProcessAttach+0xe4

0012f9f0 7c93118a 76af0000 00000001 0012fd30 winmm!_DllInstanceInit+0xb3

0012fa10 7c94c4da 76af2b61 76af0000 00000001 ntdll!LdrpCallInitRoutine+0x14

0012fb18 7c951194 0012fd30 7ffde000 7ffdf000 ntdll!LdrpRunInitializeRoutines+0x344

0012fc94 7c95108f 0012fd30 7c930000 0012fce0 ntdll!LdrpInitializeProcess+0x1131

0012fd1c 7c93e437 0012fd30 7c930000 00000000 ntdll!_LdrpInitialize+0x183

00000000 00000000 00000000 00000000 00000000 ntdll!KiUserApcDispatcher+0x7

 

우선, winmm!_DllInstanceInit 번째 Parameter HINTANCE 또는 HMODULE 이겠지요.

winmm.dll Virtual Address 값이 76af0000 것입니다.

 

76af0000 76b1b000   winmm      (private pdb symbols)

 

번째 Parameter DllMain() DWORD fdwReason 같습니다.

BOOL __stdcall DllMain(HINSTANCE hInstDll, DWORD fdwReason, PVOID fImpLoad) {}

번쯤 확인해 보는 것이 좋습니다. (Loader Lock Issue 때문에…)

 

#define DLL_PROCESS_ATTACH   1   

#define DLL_THREAD_ATTACH    2   

#define DLL_THREAD_DETACH    3   

#define DLL_PROCESS_DETACH   0   

 

Parameter 값이 1로서, DLL_PROCESS_ATTACH 호출되는 것을 있습니다.

이후에 Call Stack 보면 DLL_PROCESS_ATTACH 에서 특정 Driver  Open 한다라는 것을 있습니다.

 

해당 Driver 보면, midi9 것을 있습니다.

0:000> du 0x0012f990

0012f990  "midi9"

 

문제는 이후인데, kernel32!FreeLibrary() 명시적으로 DLL Unload 하는 것을 있습니다. 해당 Module 0x00c30000 으로 앞서 확인한 fcv.tmp 입니다.

Unload Module 접근하면, 당연히 AV 발생할 합니다.

 

이상과 같이 전체적인 흐름을 확인했습니다만

midi9 fcv.tmp 내용만으로도 Malware 라는 것을 있습니다.

 

그렇다면, 어떻게 fcv.tmp Load 되었는지를 확인해 봐야 합니다.

DLL Injection 방법 가장 흔한 Registry 사용한 DLL Injection 아닐 의심해 있습니다.

하지만, Call Stack Registry 통한 DLL Injection Call Stack 아닙니다.

 

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\ 하위의

 

LoadAppInit_DLLs (REG_DWORD) 1

AppInit_DLLs (REG_SZ) “ 

 

설정으로 DLL Injection 쉽게 있습니다.

이와 같이 Registry 통한 DLL Injection User32.dll 사용하는 Process 대해서만 Injection 수행됩니다.

 

해당 Dump Call Stack User32.dll 보이지 않습니다.

만일, Registry 사용한 DLL Injection 사용했다면, 아래와 같은 Call Stack 가질 것입니다.

0:000> kbL

ChildEBP RetAddr  Args to Child             

WARNING: Frame IP not in any known module. Following frames may be wrong.

0023eba0 76dfaf58 68690000 00000001 00000000 0x72a0254e

0023ebc0 76dffd6f 72a0254e 68690000 00000001 ntdll!zzz_AsmCodeRange_End

0023ecb4 76e0021b 00000000 6fa27c2a 76de6f2a ntdll!LdrpRunInitializeRoutines+0x26f

0023ee20 76dff629 0023ee80 0023ee4c 00000000 ntdll!LdrpLoadDll+0x4d1

0023ee54 74f7b8a4 004367cc 0023ee94 0023ee80 ntdll!LdrLoadDll+0x92

0023ee8c 769e1af0 00000000 00000000 00000001 KERNELBASE!LoadLibraryExW+0x15a

0023efc4 769c9f2a 00000044 7ffdf6cc 00000001 kernel32!BasepLoadAppInitDlls+0x167

0023efe4 7665f1be 00000000 00000000 00000001 kernel32!LoadAppInitDlls+0x82

0023f11c 7665f1da 76de627e 0023f138 00000000 USER32!ClientThreadSetup+0x1c4

0023f120 76de627e 0023f138 00000000 0023f7e0 USER32!__ClientThreadSetup+0x5

0023f134 7654ecff 7654ea61 0023f280 0023f6dc ntdll!KiUserCallbackDispatcher+0x2e

0023f138 7654ea61 0023f280 0023f6dc 7665f5a0 GDI32!NtGdiInit+0xc

0023f144 7665f5a0 76640000 00000001 0023f7ac GDI32!GdiDllInitialize+0x1c

0023f6dc 76dfaf58 76640000 00000001 0023f9c4 USER32!_UserClientDllInitialize+0x34b

0023f6fc 76dffd6f 7665f7c9 76640000 00000001 ntdll!zzz_AsmCodeRange_End

0023f7f0 76e090c6 0023f9c4 7ffdf000 7ffd5000 ntdll!LdrpRunInitializeRoutines+0x26f

0023f950 76e08fc8 0023f9c4 76da0000 6fa26baa ntdll!LdrpInitializeProcess+0x137e

0023f9a0 76dfb2f9 0023f9c4 76da0000 00000000 ntdll!_LdrpInitialize+0x78

0023f9b0 00000000 0023f9c4 76da0000 00000000 ntdll!LdrInitializeThunk+0x10

Registry 의한 DLL Injection 아니라면… WindowsHook, API Hooking 여러 가지 방법 등이 있겠습니다만가장 의심되는 것은 Trojan DLL Injection 아닐 의심해 봅니다.

 

아쉽게도, 어떻게 DLL Injection 했는지는 없었습니다. (Anti-Virus Tool 해결되었기 때문이지요. J )

 

이와 관련한 Malware 정보는 아래와 같습니다. (이렇게 전달해 드렸지만, 아마 정황상 아닐 싶습니다…)

http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?Name=Trojan%3AWin32%2FDaonol.I

 

이상 2% 부족한 AV Dump 분석이었습니다. :’(


덧글

댓글 입력 영역