首页
社区
课程
招聘
[原创][原创]恶意样本分析——特洛伊木马化二进制文件、进程注入
2021-9-2 17:28 16812

[原创][原创]恶意样本分析——特洛伊木马化二进制文件、进程注入

2021-9-2 17:28
16812

这是一篇关于《恶意代码分析实战》书中样本Lab12-04的分析报告。

 

此样本分析起来较为复杂,尤其是反汇编代码分析。如有分析不当的地方,还请各位大佬指教。

 

分析环境:Windows XP操作系统

 

分析工具:
VMware虚拟机
PEID
IDA pro
PEview
火绒剑

 

一、静态分析:
1、查壳:
图片描述
无壳
2、提串:
图片描述
图片描述
dll文件:ADUAPI32.dll、MSVCRT.dll、sfc_os.dll、psapi.dll、urlmon.dll
exe文件:winlogon.exe \system32\wupdmgr.exe \winup.exe
链接:http://www.practicalmalwareanalysis.com/updater.exe
字符串:%s%s BIN 101 %D @

 

这些字符串和后面的分析一定有关联,尤其是dll和exe名称字符串。

 

3、查看PE文件:
图片描述
可以看出PE文件中隐藏有一个资源节,位置在BIN 0065 0409,推测运行之后运行可能释放出来。

 

4、查看导入表:
图片描述
从导入表的导入函数特征得到如下信息:

 

FindResource、LoadResource、SizeofResource:资源节加密或压缩

 

CreateRemoteThread、OpenProcess:dll注入

 

OpenProcessToken、LookupPrivilegeValueA、AdjustTokenPrivileges:提权

 

到这里可以看出,这个样本的恶意行为可能较为复杂,所以先动态运行,直观的感受一下。

 

二、动态运行:
在虚拟机中双击运行样本
图片描述
在火绒剑中监视进程,发现有恶意进程wupdmgr.exe、winup.exe的创建,并且发起了网络连接。

 

记得之前提取字符串时还有一个进程 winlogon.exe ,但是目前并没有看出明显的异常,先继续分析。

 

三、反汇编分析:
先从_main函数入手:
图片描述
注意到字符串”psapi.dll”反复出现,这个dll文件用于获取windows进程状态。猜测后面可能和进程操作有关。

 

往下走,不断跳转之后到达loc_401474。
图片描述
这一部分中,loc_401474、loc_4014CF、loc 401465构成一个循环结构,很明显,其最终目的是获取到进程ID,并存放到dwProcessId变量中。根据经验,后面很有可能就开始进程注入或是进程替换。
图片描述
注意到loc_401474中有一个跳转地址loc_4014D1,跳转过去看看
图片描述
这里以dwProcessId为参数,调用函数sub_401174,一定和进程操作有关,跳转进入该函数中。
图片描述
发现在函数sub_401174中又调用函数sub_4010FC,并且以字符串SeDebugPrivilege为参数,根据经验,很有可能要进行提权操作。

 

猜测恶意样本将要改变之前获取到ID的进程的权限,我暂时还不知道这个倒霉的进程是什么,所以后文中我称这个受害进程为进程A。

 

进入函数 sub_4010FC 中。
图片描述
果然,正如我之前的猜测,函数中进行了获取进程句柄、提权等操作。
图片描述
这里又跳转到地址loc_401153,进入看看。
图片描述
这里调用函数AdjustTokenPrivileges,对进程A进行了权限修改,从而方便后续对这个进程的恶意操作,往下看看这个恶意样本想如何操作这个进程。

 

到此,函数sub_4010FC结束,我们返回到函数sub_401174中继续分析。
图片描述
继续向下,恶意代码跳转到loc_4011A1
图片描述
注意到一个字符串sfc_os.dll,这是一个Windows系统文件的名称,用其作为参数调用函数LoadLibraryA,显然是要将这个dll文件加载到指定进程的地址空间中。

 

推测这个进程就是进程A。如果这个推论成立,那么恶意代码一定是要在进程A中注入 sfc_os.dll,那么这个恶意样本到此为止的真正目的就是进程注入。
图片描述
果然,后面就进行了打开进程操作,被操作的进程就是进程A(使用了存放进程A的ID的变量dwProcessId作为参数)。

 

所以,综上,我们可以证实了前面的推论。

 

但是这个恶意样本并没有到此为止,我们继续往下分析。
图片描述
后面跳转到地址loc_4011D8处,恶意代码调用函数CreateRemoteThread创建了一个远程线程,参数有进程A的句柄,还有一个变量lpStartAddress。这个变量向前回溯,发现它是 sfc_os.dll的序号2函数的指针。

 

sfc_os.dll是一个用于保护 Windows 系统文件的文件。通过查阅资料发现,恶意样本可以通过运行这个序号2函数禁用Windows文件保护机制。

 

所以,我发现,这个远程线程的真正目的就是为了禁用Windows的文件保护机制,至于为什么要禁用 Windows的文件保护机制还不知道,所以接着往下看。

 

到此,函数sub_401174结束,我们返回到地址loc_4014D1处继续分析。
图片描述
接下来,恶意代码调用函数GetWindowsDirectoryA,以获取Windows目录”C:\windows\”,并且这里出现了字符串”\system32\wupdmgr.exe”,%s%s看起来是两个字符串输出的标准格式,后面还有_snprintf输出函数。因此这里一定是将这两个字符串拼接在一起,形成字符串“C:\windows\system32\wupdmgr.exe”,再标准输出到变量 ExistingFileName。

 

这里的wupdmgr.exe二进制文件是Windows的系统升级程序,用于Windows系统的更新升级。

 

调用函数GetTempPathA,获取为临时文件指定的路径,同样,与字符串”\winup.exe”拼接,存放在变量NewFileName中。

 

所以这一段代码主要目的是获取二进制文件 wupdmgr.exe 的路径,并且为winup.exe分配临时路径。
图片描述
这里,函数MoveFileA将二进制文件 wupdmgr.exe 移动到临时文件目录中。

 

后面又调用函数sub_4011FC
图片描述
图片描述
这里函数 FindResource、LoadResource、SizeofResource 从资源节BIN的位置中提取出文件,证实了我之前猜测的资源节提取操作。提取出的文件取代wupdmgr.exe文件放入目录”C:\windows\system32\”中。

 

在这一部分,恶意代码完成了备份并取代二进制文件 wupdmgr.exe 的操作。

 

到此,我终于明白禁用文件保护机制的原因。正是由于禁用了windows文件保护机制,恶意样本才能完成这些关于二进制文件替换和备份的操作。

 

到此,我总结恶意样本行为如下:

 

恶意样本获取进程A的句柄,并且修改该进程的权限;
恶意样本创建远程线程,在进程A中注入sfc_os.dll(的序号2的函数),从而禁用了Windows的文件保护机制;
恶意样本在临时文件夹中备份了二进制文件wupdmgr.exe,并且在其源目录中用释放的资源节文件替换了该文件。

 

由于反汇编分析地址跳转的非常乱,所以这里整理了一下分析流程,仅供参考:
_main——>loc_401474——>loc_4014D1——>loc_4014E4——>函数sub_401174——>函数sub_4010FC——>loc_401153

 

函数sub_401174——>loc_4011A1——>loc_4011D8

 

loc_4014E4——>sub_4011FC

 

我发现了一个问题,就是之前提串中的exe文件名称只有winlogon.exe没出现过,联想到我们称受害进程为进程A,我猜测这个进程A就是进程 winlogon.exe,我想通过再次动态运行确定。

 

其次,为了知道提取出的资源节的内容(新的二进制文件wupdmgr.exe有哪些行为),我也需要再次动态运行恶意样本。

 

四、再次动态运行:
图片描述
果然,在进程winlogon.exe中发现了sfc_os.dll,证明了进程A就是进程winlogon.exe。

 

将运行后新产生的二进制文件 wupdmgr.exe 拖入IDA中分析
图片描述
很明显这个二进制文件是恶意的。

 

这个恶意二进制文件访问网址 “http://www.practicalmalwareanalysis.com/updater.exe” ,并下载文件updater.exe,这一定是恶意样本自己的更新文件,并通过调用WinExec函数运行,从而实现了特洛伊木马化二进制。

 

五、总结:
这个恶意样本的行为较为复杂。

 

首先, 恶意样本通过PID辨识出进程 winlogon.exe ,并获取该进程的句柄,修改该进程的权限。

 

然后,恶意样本通过创建远程线程,在进程 winlogon.exe 中注入sfc_os.dll文件,导入这个dll文件中序号为2的函数,从而禁用了Windows的文件保护机制,为后面恶意样本特洛伊木马化二进制文件 wupdmgr.exe 做准备(让Windows的文件保护机制不能够察觉)。

 

恶意样本在临时文件夹中备份了二进制文件wupdmgr.exe,从而在表面上看起来并不影响Windows的更新,并且在其源目录 C:\windows\system32\ 中用释放的资源节文件替换了该二进制文件。从而实现了最终目的——特洛伊木马化二进制文件 wupdmgr.exe 。

 

最后,通过运行恶意的 wupdmgr.exe 新文件连接网络,下载该恶意样本的更新程序。

 

该恶意样本包含了进程注入、提权、资源节的压缩和释放、特洛伊木马化二进制文件、网络连接这些技术,环环相扣,十分缜密的实现了自己的恶意行为。

 

由于是实验样本,所以最终连接网络之后下载的是恶意样本的更新文件,而如果下载的是一个恶意的勒索、窃取隐私、能够使系统崩溃等等的文件,后果将十分严重。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-9-3 10:51 被fickle编辑 ,原因: 上传附件
上传的附件:
收藏
点赞2
打赏
分享
最新回复 (2)
雪    币: 49
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
FlyingFire2 2021-9-23 10:04
2
0
分析得比较详细,小白也能看懂。
游客
登录 | 注册 方可回帖
返回