恶意代码分析实战-实验12

本文最后更新于:2021-09-24 下午

Lab 12-1

详细分析

打开程序后,每隔一段时间都会弹出一个窗口

使用火绒剑监控行为,发现其有注入的行为。可以看到注入的进程是Explorer.exe

可以看出来它获取了explorer的PID然后进行了DLL注入,注入的DLL为Lab12-01.dll。它获得进程PID的方式是通过EnumProcesses、EnumProcessModules、GetModuleBaseNameA这三个函数实现的。首先通过EnumProcesses获得所有进程的PID,然后打开每个进程,再通过EnumProcessModules、GetModuleBaseNameA获取进程名字,再和explorer.exe进行比较判断。

现在来分析一下注入的DLL文件,DLLMAIN中创建了一个新的线程。

新的线程,会拼接一个字符串,也就是前面弹出窗口的标题的次数,会无限制的增长,那么创建的这个新线程应该就是弹窗函数了,进去看果然如此,最后调用sleep函数。

1.在你运行恶意代码可执行文件时,会发生什么?

会将Lab12-01.dll注入到explorer.exe中,然后每隔一分钟弹出一个窗口。

2.哪个进程会被注入

explorer.exe

3.你如何能够让恶意代码停止弹出窗口

重新启动explorer.exe

4.这个恶意代码样本是如何工作的?

它会进行远程线程注入将Lab12-01.dll注入到explorer.exe中,然后每分钟都会弹出一个窗口。

Lab 12-2

详细分析

看到Main函数流程较短

首先获得了svchost.exe的路径

然后是从资源节读取了数据,然后有判断,如果开头不是MZ的话,会调用401000函数。

进入查看,可以看到是一个异或解密,那么这个资源节中的数据是异或0x41进行加密。

之后就是一个傀儡进程的创建,将shellcode注入到svchost.exe中

把shellcodedump出来分析一下,发现是一个键盘记录的程序

查看挂钩函数fn

记录键盘输入内容

1.这个程序的目的是什么?

注入shellcode到svchost.exe,实现键盘钩子

2.启动器恶意代码是如何隐蔽执行的?

将shellcode注入到svchost.exe,实现了一个傀儡进程。

3.恶意代码的负载存储在哪里?

存储在资源节之中

4.恶意负载是如何被保护的?

与0x41异或加密了

5.字符串列表是如何被保护的?

这个问题我没看懂,看了书上的答案,书上说是401000处函数,进行XOR编码。那个函数实际上就是解密shellcode的函数。所以它的意思应该是,shellcode中的字符串是如何被保护的。

Lab 12-3

这就是Lab 12-2中的shellcode,刚才已经详细分析过了,就不再进行分析了。

1.这个恶意负载的目的是什么?

键盘记录

2.恶意负载是如何注入自身的?

这个我也没看懂,没明白什么叫注入自身,因为没看到注入行为,看了书上的答案,意思是

挂钩注入,来偷取击键记录

原来是这样,好吧…

3.这个恶意程序还创建了哪些其他文件?

创建了practicalmalwareanalysis.log文件,来记录。

Lab 12-4

详细分析

打开发现其前部分与Lab12-1是一致的,就不再进行分析饿了,只是在401000中是winlogon.exe,也就是前面这部分是获取winlogon.exe的PID

现在来分析一下后面的部分

首先是进行了提权,判断是否有SeDebugPrivilege权限,如果没有的话会进行提权。

然后会进行远程线程注入,注入函数是sfc_os.dll中的序号为2的函数,

然后会移动文件

最后是一个资源释放,释放到C:\Windows\system32\wupdmgr.exe,并且隐藏窗口启动它。

把资源节中的程序dump下来分析,首先看到启动了winup.exe也就是原始的wupdmgr.exe,然后会访问http://www.practicalmalwareanalysis.com/updater.exe ,进行下载更新恶意代码。

1.位置0x401000的代码完成了什么功能

判断当前进程的PID是否是winlogon.exe

2.代码注入了哪些进程?

winlogon.exe

3.使用LoadLibraryA装载了哪个DLL程序?

sfc_os.dll

4.传递给CreateRemoteThread调用的第四个参数是什么?

sfc_os.dll中的序号为2的函数,是一个名为SfcTerminateWatcherThread的函数,用来关闭windows的文件保护。

5.二进制主程序释放出了哪个恶意代码?

wupdmgr.exe,原始的wupdmgr.exe被放到了temp目录下,重命名为了winup.exe

6.释放出恶意代码的目的是什么?

会从指定的域名中下载一些资源,来进行更新,而windows本身的wupdmgr.exe被转移到temp目录下,在持久化驻留的同时,也不影响原程序的运行。