恶意代码分析实战 — Lab 12-01

Lab12-01

导入函数,kernel32.dll中有CreateRemoteThread,WriteProcessMemory,VirtualAllocEx等函数调用,很可能是与进程注入操作相关

Strings exe发现几个dll和exe

程序运行后返回一个对话框

并且隔一段时间出现新的对话框,数字表示出现的次数

Idapro载入exe程序,分别获取psapi.dll中

EnumProcessModules,GetModuleBaseNameA,EnumProcesses进程枚举相关函数

结果保存在dword_408714,dword_40870C,dword_408710中,可以将这些dword修改为可读性更好的函数名

之后GetCurrentDirectoryA获取当前路径并拼接上\Lab12-01.dll,保存在Buffer中,然后call EnumProcesses获取每一个进程pid

根据pid进行分析 call sub_401000

进入此call,查找explorer.exe程序,如果找到返回eax = 1,否则eax = 0

如果eax = 1,则OpenProcess获取explorer.exe句柄

然后VirtualAllocEx对explorer.exe进程中分配内存空间,并将结果赋值到IpParameter中

如果空间分配成功,WriteProcessMemory向explorer.exe中写入数据,数据内容保存在Buffer中,也就是之前分析的Lab12-01.dll路径

目的是Lab12-01.dll实现向explorer.exe中进程注入

然后GetModuleHandleA和GetProcAddress获取kernel32.LoadLibraryA函数地址,返回给IpStartAddress

CreateRemoteThread创建远程线程,用explorer.exe进程调用kernel32.LoadLibraryA,通过IpParameter参数传递,即Lab12-01.dll,从而实现Lab12-01.dll注入到explorer.exe

在栈中可以看到CreateRemoteThread的参数

在process explorer中查找调用Lab12-01.dll的进程和句柄,找到explorer.exe进程

Lab12-01.dll已经注入到explorer.exe中了

如果想要终止程序,可以将explorer.exe进程kill就好

Idapro载入dll文件分析,只是调用了一个CreateThread创建线程,进入IpStartAddress查看

打印字符是对话框的标题,CreateThread创建对话框,然后sleep(60s)进行下一轮,%d作为一个参数在sleep()执行后自增1,实现类似计数功能

进入StartAddress查看,这是创建MessageBoxA的窗体,打印字符Press OK to reboot

您可能还喜欢...