Malware Dynamic Analysis Part-3
Malware Dynamic Analysis Part-3
Part 3
Veronica Kovah
vkovah.ost at gmail
http://opensecuritytraining.info/MalwareDynamicAnalysis.html
• hModule [in]
– A handle to the DLL module that contains the function or variable…
• lpProcName [in]
– The function or variable name, or the function's ordinal value...
• Return value
– If the function succeeds, the return value is the address of the
exported function or variable...
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
myInjectDll()
{ buf = “evil.dll”
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
myInjectDll()
{ buf = “evil.dll”
h=OpenProcess(,,proc_id)
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
myInjectDll()
{ buf = “evil.dll”
h=OpenProcess(,,proc_id)
addr = VirtualAllocEx(h,, size,,)
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
myInjectDll() 0x4000
{ buf = “evil.dll”
h=OpenProcess(,,proc_id)
addr = VirtualAllocEx(h,, size,,)
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
myInjectDll() 0x4000
{ buf = “evil.dll”
h=OpenProcess(,,proc_id)
addr = VirtualAllocEx(h,, size,,)
WriteProcessMem(h,addr,buf,size,…)
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
kernel32.dll
LoadLibrary(filename) LoadLibrary(filename)
Current
Stack Stack for Thread1
Pointer
Heap
WickedSweetApp.exe
Current
Instruction
Pointer
Ntdll.dll
MyLib1.dll
MyLib2.dll
Heap
WickedSweetApp.exe
Current
Instruction
Pointer
Ntdll.dll
MyLib1.dll
MyLib2.dll
Heap
WickedSweetApp.exe
Current
Instruction
Pointer
Ntdll.dll
MyLib1.dll
MyLib2.dll
Current
Stack Stack for Thread2
Pointer
Heap
WickedSweetApp.exe
Current
Instruction
Pointer
Ntdll.dll
MyLib1.dll
MyLib2.dll
… …
SomeFunc:
push 1234 1
mov edi, edi
call [0x40112C] push ebp
add esp, 4 mov ebp, esp
… sub esp, 0x20
Import Address Table …
2
0x40112C:SomeFunc ret
0x401130:SomeJunk
0x401134:ScumDunk
…
…
… SomeFunc:
push 1234 2 mov edi, edi
call [0x40112C] 1 MySomeFunc: push ebp
add esp, 4 … mov ebp, esp
… call SomeFunc() sub esp, 0x20
4
Import Address Table … …
0x40112C:MySomeFunc ret 3 ret
0x401130:SomeJunk
0x401134:ScumDunk
…
…
push 1234
call SomeFunc()
add esp, 4
1 …
SomeFunc:
mov edi, edi
push ebp
mov ebp, esp 2
sub esp, 0x20
…
ret
…
push 1234 MySomeFunc:
call SomeFunc() <stuff>
add esp, 4 …
… 2 mov edi, edi
1
… push ebp
SomeFunc: mov ebp, esp
jmp MySomeFunc 4 jmp SomeFunc+5
sub esp, 0x20
3
…
ret
(“System
process”)
MyLib1.dll
User32.dll EvilDead.dll User32.dll
MyLib2.dll
Kernel32.dll Kernel32.dll Kernel32.dll
WickedEvil.dll