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

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

Lab 11-1

详细分析

使用火绒剑监控行为,可以看到其向当前的目录下释放了一个Dll文件。

IDA查看,可以看到很明显的从资源节中释放文件

之后会进行注册表的相关操作。

可以看到在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下创建了一个键值GinaDLL,值是释放的DLL的路径。

打开DLL文件,查看其导出表,可以看到大量的Wlx开头的函数,由此可以判断出这是一个GINA拦截,窃取用户登录凭证。

通过查看字符串可以看到一个msutil32.sys,仔细查看发现,是创建此文件,然后向其中写一些数据,写入的数据是什么需要继续往外分析,查看传入的参数。

可以看到写入的数据,是一个结构体的相关信息。而这就是登录账户的信息。

1
2
3
4
5
6
typedef struct _WLX_MPR_NOTIFY_INFO {
PWSTR pszUserName;//登录账户名称
PWSTR pszDomain;//登录域名称
PWSTR pszPassword;//密码
PWSTR pszOldPassword;//旧密码
} WLX_MPR_NOTIFY_INFO, *PWLX_MPR_NOTIFY_INFO;

1.这个恶意代码向磁盘释放了什么?

释放了一个msgina32.dll文件。

2.这个恶意代码如何进行驻留?

设置注册表,成为winlogon的一员。

3.这个恶意代码如何窃取用户登录凭证?

GINA拦截用户登录信息

4.这个恶意代码对窃取的证书做了什么处理?

将其保存到msutil32.sys文件中。

5.如何在你的测试环境下让这个恶意代码获得用户凭证?

需要先重启,启动拦截,然后注销系统,再次登录时,信息就会被记录。

Lab 11-2

详细分析

使用IDA打开DLL,看到DLL main函数。

首先会尝试打开C:\Windows\system32\Lab11-02.ini这个文件,可以看到模式是打开存在的文件

然后会读取文件中的数据,这是读取到的数据。

解密算法,解密出数据billy@malwareanalysisbook.com,是一个邮箱地址。

然后会进行比较当前运行的是否是THEBAT.EXE、OUTLOOK.EXE、MSIMN.EXE这三个程序,如果是的话会执行下面的三个函数

之后会获取send函数的地址,来进行inline hook

HOOK函数,关于inline hook的相关知识可以查看这里,inline hook

inline hook前

inline hook后

查看HOOK后的jmp地址,这个函数检测send中发送的数据如果含有RCPT TO:,会加入一个新的RCPT TO: billy@malwareanalysisbook.com,RCPT TO是收件人的意思,也就是发送的所有邮件都会被发送到恶意的邮箱去。

DLL还有一个导出函数install,可以看到是设置了一个键值。分析是在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows下的AppInit_DLLs中设置了spoolvxx32.dll,这个键值的作用是当前所有加载user32.dll的程序都会再次加载此键值中的dll。之后会将自身复制到system32目录下。

但是实际测试中发现并没有实现,原因是在XP中这样可以实现,而在win7中不行。

win7需要按照如图中设置,即可实现DLL的注入。

1.这个恶意DLL导出了什么?

导出了一个install函数

2.使用rundll32.exe安装这个恶意代码后,发生了什么?

会将自身复制到system32目录下,还会设置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows下的AppInit_DLLs,这会实现DLL的注入。

3.为了使这个恶意代码正确安装,Lab11-02.ini必须放置在何处?

根据上面分析可知必须放在system32目录下。

4.这个安装的恶意代码如何驻留?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows下的AppInit_DLLs在这个键值中写入DLL的路径,可以实现持久化驻留。

5.这个恶意代码采用的用户态Rootkit技术是什么?

inline hook

6.挂钩代码做了什么?

修改了send函数,所有向外发送包含RCPT TO:几个字符的邮件会被额外添加一行,发送给恶意账户。

7.哪个或者哪些进程执行了这个恶意攻击,为什么?

THEBAT.EXE、OUTLOOK.EXE、MSIMN.EXE,查询发现,它们都是邮件进程

8..ini文件的意义是什么?

存储机密过后的恶意电子邮件地址,用来读取解密。

9.你怎样用wireshark动态抓取这个恶意代码的行为?

可以查看与邮件相关的数据包来进行分析。

Lab 11-3

此实验最好在XP中进行,win7运行没有cisvc.exe。

详细分析

分析程序,可以看到首先复制了文件,之后调用了sub401070

然后经过分析是将一段shellcode注入到cisvc.exe中。

之后就是执行了CMD命令,net start cisvc

可以通过工具看到注入前后的入口点明显发生了变化

分析shellcode发现主要是调用了恶意DLL中的函数zzz69806582

分析DLL,查看这个导出函数看到它创建了一个新的线程。

继续分析新线程,打开发现其创建了一个互斥量防止重复运行,然后创建一个C:\WINDOWS\System32\kernel64x.dll文件,然后是键盘记录功能。记录在创建的文件之中。

记录的一些信息

1.使用基础的静态分析过程,你可以发现什么有趣的线索?

可以看到其中的字符串和一些API,字符串有cmd.exe猜测其启用了cmd,DLL中的导入表有GetAsyncKeyState,猜测可能有键盘记录。

2.当运行这个恶意代码时,发生了什么?

会进行键盘的记录

3.Lab11-03.exe如何安装Lab11-03.dll使其长期驻留?

将其复制在了system32目录下,然后还向cisvc.exe注入了shellcode,使其加载恶意DLL的导出函数实现键盘记录。

4.这个恶意代码感染windows系统的哪个文件?

cisvc.exe

5.Lab11-03.dll做了什么?

创建了dll文件,在其中进行键盘记录

6.这个恶意代码将收集的数据存放在何处?

C:\WINDOWS\System32\kernel64x.dll之中