恶意代码分析实战-实验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目录下,在持久化驻留的同时,也不影响原程序的运行。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!