高级病毒分析(中)
教程参考自《恶意代码分析实战》
程序来自:http://www.nostarch.com/malware.htm
Lab 11-2
本节实验使用样本Lab11-02.dll和Lab11-02.ini。
这个恶意DLL导出了什么?
查看导出函数视窗,发现除了DllEntryPoint函数外还有要给installer函数。
使用rundll32.exe安装这个恶意代码后,发生了什么?
直接查看install导出函数的代码,功能很清晰,先是将注册表键AppInit_DLL的值篡改为spoolvxx32.dll,然后将自身复制到%SystemRoot%\System32\spoolvxx32.dll。
为了使这个恶意代码正确安装,Lab11-02.ini必须放置在何处?
查看DllEntryPoint,在代码的入口处,会尝试去读取系统路径下的Lab11-02.ini文件,若读取失败则直接退出,所以,为了恶意代码能正确安装,Lab11-02.ini必须放置在%SystemRoot%\System32路径下。
这个安装的恶意代码如何驻留?
恶意代码将自身安装到AppInit_DLLs的注册表键值中,这样恶意DLL就能加载到所有装载User32.dll的进程中。
这个恶意代码采用的用户态Rootkit技术是什么?
采用的就是Inline Hook,代码如下,首先修改send函数所处的内存属性为RWX,备份send函数的前5字节,然后将前5字节修改为jmp [hook func],最后还原内存属性。
如下,是send函数被修改前的前5字节。
这是修改后的,已经变成了jmp 0x1000113D,这个地址就是挂钩函数。
挂钩代码做了什么?
代码很简单,若数据包中有“RCPT TO:”字段(邮件格式),就添加多一个收件人邮箱[email protected],目的就是窃取受害人的邮件。
哪个或者哪些进程执行这个恶意攻击,为什么?
恶意代码在执行上述恶意操作前,会先检查自己是否被加载于如下3个邮件进程中:THEBAT.EXE、OUTLOOK.EXE、MSIMN.EXE,若不是,则不进行恶意操作。
.ini文件的意义是什么?
恶意代码一开始读取出.ini文件的数据是一堆乱码,很明显加过密了。
经过0x100010B3函数的解密,我们可以看到刚刚那个字符串变成了[email protected],这个应该是黑客的邮箱。到这里,我们就可以得出结论.ini文件的作用是存储被加密后的黑客邮箱。
你怎么用Wireshark动态抓获这个恶意代码的行为?
筛选Follow TCP Stream