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

Lab 12-04

PEID查看,有个resource,编码为101

使用Resource hacker提取资源,判断出是一个exe文件

将exe文件放入PEID中,可以看到kernel32.dll有WinExec运行和GetTempPathA获取临时文件,GetWindowsDirectoryA获取系统目录等操作

Urlmon.dll中有URLDownloadToFileA下载链接到文件操作

打开PM,设置Filter

运行lab12-04.exe,实验环境不能访问外网,所以显示网络连接错误,意味着进行了远程网络访问

在PM中监控到CreteFile一个wupdmgr.exe程序

Md5值相同,也就是说将提取的文件复制到system32\wupdmgr.exe中

Ida载入lab12-04.exe程序,刚开始枚举psapi.dll中的进程模块,将dword重命名为比较适合分析的名称

不断枚举当前进程,获取Pid值,放在dwProcessId中

然后进入循环,dwProcessId值作为参数调用sub_401000函数

进入此call,首先有两个字符str1 str2,值分别在dword中

查看,str2 = winlogon.exe       str1 = <not real>

或者直接F5查看伪代码

之后将dwProcessId作为参数提交给OpenProcess函数,获取进程句柄

EnumProcessModules获取进程名称,返回给Str1

然后stricmp(str1,str2),也就是获取的进程与winlogon.exe比较,并以此确定返回的eax值是1还是0,所以此函数作用就是查找winlogon.exe进程pid

若找到winlogon.exe,则将pid值传入sub_401174

此函数首先调用sub_4010FC

这个函数主要用于Privilege提权操作

然后LoadLibraryA装载sfc_os.dll库,GetProcessAddress获取sfc_os.dll中编号为2的函数地址,保存为lpStartAddress,OpenProcess打开winlogon.exe获取句柄保存为hProcess

Sfc_os.dll用来实现windows文件保护

在winlogon.exe中会加载sfc_os.dll库

以上一系列参数入栈,调用CreateRemoteThread,实现sfc_os.dll序号为2的函数向winlogon.exe中进程注入

此序号为2的函数是一个导出函数,可以禁用windows的文件保护机制

以上操作完成了进程注入,之后GetWindowsDirectoryA获取路径,拼接上system32\wupdmgr.exe,此程序用于系统更新操作,返回保存为ExistingFileName,

GetTempPathA获取临时路径,拼接上winup.exe,保存为NewFileName,MoveFileA将wupdmgr.exe复制到临时文件夹中并改名为winup.exe,然后call sub_4011FC

进入此call,GetModuleHandlA获取句柄,然后Bin #101对Resource进行操作,提取其中的exe程序

这个提取的文件写入到system32\wupdmgr.exe,由于之前文件保护机制已经关闭,所以此处文件读写操作不会告警

WinExec执行wupdmgr.exe程序,uCmdShow = 0 运行界面不会显示,静默执行

Ida载入提取后的恶意程序1.exe,GetTempPathA获取临时路径,拼接winup.exe,然后WinExec执行,此处winup.exe是提取的恶意文件复制且改名后的

GetWindowsDirecroryA获取目录,拼接system32\wupdmgrd.exe,注意多出一个字母d,这个路径保存为Dest

URLDOwnloadToFileA下载链接保存到Dest路径中

其中这个链接地址包含一个updater.exe更新程序,用于后续恶意代码更新等操作

如果恶意代码更新完成,WinExec执行新下载的恶意程序

您可能还喜欢...