您的位置:首页 > 编程语言

恶意代码分析实战 课后题 Lab11-02

2017-08-09 13:40 645 查看
这个里面inline挂钩汇编代码操作没看明白,记一下,过两天重新写一个关于inline挂钩的。
1.样本概况
病毒名称为Lab11-02.dll,编写语言为Microsoft Visual C++ 6.0。
1.1样本信息
md5:BE4F4B9E88F2E1B1C38E0A0858EB3DD9
sha1:79787427773DCCE211E8E65E1156BD60535494EC
病毒行为:
从Lab11-02.ini中解密邮件地址,给所有发出的邮件添加了一个收件人。
1.2测试环境及工具
环境:winxp32位
工具:OD IDA
2.具体行为分析
2.1主要行为
创建一个新的注册表项AppInit_DLLs,来永久安装恶意代码自身。
从Lab11-02.ini中解密邮件地址billy@malwareanalysisbook.com。
安装send函数的inline挂钩,给所有发出的邮件添加一个收件人,
RCPT TO :<billy@malwareanalysisbook.com>。
2.2恶意代
4000
码分析

Lab11-02.dll有一个导出函数installer,分析installer。
创建一个新的注册表项AppInit_DLLs,值为spoolvxx32.dll。并将某个文件中的内容复制到spoolvxx32.dll中。



分析DLLMain。
获得了一个邮件地址。billy@malwareanalysisbook.com



以下是对如何获得一个邮件地址的动态分析。
打开Lab11-02.ini文件失败,返回了-1。没办法读取文件。



将Lab11-02.ini复制到C:\WINDOWS\system32\,打开文件成功,返回了文件句柄。



开始读取文件,在缓冲区中看到了读取到的文件。



sub_001B03对文件内容进行了解密操作。解出了一个邮箱地址。



分析sub_100014B6函数。



THEBAT.EXE、OUTLOOK.EXE以及MSIMN.EXE都是邮件客户端,只有Lab11-02.dll在邮件客户端中运行时才会调用函数sub_100013BD、sub_100012A3以及sub_10001499。
接下来分析这三个函数。
分析sub_100013BD函数。
sub_100013BD函数首先获取了当前进程ID,然后调用了sub_100012FE函数。
挂起了当前进程的所有运行线程。



分析sub_10001499函数。
此函数与sub_100013BD相反,将之前挂起的线程恢复执行。



分析sub_100012A3函数。
将send函数地址以及sub_1000113D、dword10003484传送给sub_10001203



安装send函数的inline挂钩,执行完恶意代码后调回send函数。



跳到了1000113D函数。向所有的发出邮件中添加了一个收件人。



3.总结
此总结摘自《恶意代码分析实战》538页。
Lab11-2是一个导出installer函数的恶意DLL,它使用AppInit_DLLs键值来永久安装恶意代码,这导致大多数进程丢回加载这个恶意代码。恶意代码通过一个预设的目标进程列表,来查看它是否运行在一个邮件客户端程序中。如果恶意代码确定它是运行在这些预设进程之一时,通过在send函数安装一个inline挂钩,来扮演用户态Rootkit。此挂钩的实现方式,是在send函数的开始放置一个jmp指令。挂钩运行一个函数,它扫描由send函数发送的每个数据缓冲区,来搜索字符串RCPT
TO。如果恶意代码发现了RCPT TO字符串,它会插入一个额外的RCPT TO,它包含从解密的Lab11-02.ini中提取的邮件地址,其目的是从目标邮件程序中复制所有邮件发送给恶意代码编写者。
4.附录
RCPT是一个SMTP命令,用来创建一个电子邮件收件人。
Inline Hook是通过覆盖导入DLL中API函数的代码来实现的。
strrchr函数举例:
strrchr( '123456789.xls' , '.' ); //程序从后面开始查找 '.' 的位置,并返回从 '.' 开始到字符串结尾的所有字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: