这个照例还是先查壳,VC++6.0的
然后使用IDA静态分析Imports和Exports,对几个关键函数进行简单静态分析
问题1:使用工具Process Explorer监视
根据问题的提示,打开Process Explorer,双击运行程序,发现了这个
在程序运行时,调用了svchost.exe。这个二进制程序是个系统文件,结合IDA静态分析,很有可能对这个程序做了恶意修改
这里是main函数中对svchost.exe程序的寻找
这里是使用了GetSystemDirectory,这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。
那么我们在本地搜索一下,svchost.exe在哪里
在system32目录下,正常来说,这个目录下的文件都是用来支持系统运行的,一般都是用来调用而不可能去修改的
从IDA的这个函数分析,这个恶意代码很有可能修改了该函数的某些字段实现恶意功能
这里有好几个需要注意的点:首先,这里的0x5A4D和0x4550都是exe的magic,称为“魔术头”。也就是机器用来识别exe的标记字段。
然后,这里几个API函数都是不怎么”干好事“的
CreateProcess:用来创建一个新的进程和它的主进程,这个新进程运行指定可执行文件。
VitrualAlloc:简单来说就是申请内存空间。
GetThreadContext:读取当前进程的上下文,即获取当前进程所在环境。
ReadProcessMemory:根据进程句柄读入该进程的某个内存空间。
WriteProcesMemory:根据进程句柄写入该进程的某个内存空间。
所以,这里很可能是针对系统的svchost.exe。
这也是恶意代码的一种很常见的方式,因为在system32目录下,想新建一个文件,特别是恶意文件是很难的,很可能权限不够,但是以读取系统文件,以修改系统文件增加恶意功能的方式来提权,相对简单。
问题2:找到内存修改行为
有了猜测,那么我们去分析svchost.exe
首先,使用MD5值来分析,只要二进制文件有变化,那么MD5值一定有变化
上面是0303.exe运行后的,下面是0303.exe运行前的
这感觉不太对啊,为啥这个文件没有啥变化
注意到Process Explorer中有两个svchost.exe
然后再看下面这个呢
那这可能说明了:svchost.exe有多种使用方法吧。0303.exe这个恶意代码的姿势不一样,导致实现了某个恶意功能(yy的)
然后书中给的分析方法是:在Process Explorer中,找到这两个svchost.exe,在Memory中找不同
这就可以发现不同之处了,右边那个有个.log文件,很有可能是对用户操作进行的记录日志,而[SHIFT]、[ENTER]这种,在正常的系统程序中是不会存在的,可以确定这个svchost.exe是被感染了
问题3:感染迹象特征
在每个文本文件的创建,修改等操作时,在文本文件的当前目录下会新生成一个practicalmalwareanalysis.log文件(如果已经存在,就是追加写入模式)
问题4:恶意代码目的
键盘记录器
PLUS
http://blog.csdn.net/shirly_2006/article/details/1563035
在网上搜索了一些svchost.exe的相关病毒分析、杀毒教程之类的文章,上面的链接讲述了挺多svchost.exe的相关技术的
有个svchostviewer的工具,可以查看当前运行的svchost.exe开启的所有服务
还有几种svchost病毒的特征,使用工具Process Explorer(以下对比图,左边都是被病毒感染的,右边是正常系统使用的)
读写的文件数目、字节数目肯定是不同的
更关键的一条是:文件目录不一样!
恶意代码的文件目录会显示成本地的
找到一个工具IceSword(冰刃),功能还挺多的
用来分析这个恶意代码还是挺好的,功能有:进程、内核模块、服务、钩子等~~~
如果说之前的分析是靠猜测的话,那么这个对比图就是更加明显了,运行完恶意代码之后,机器正在运行的进程仅仅多了一个,从数量上很明显。而且通过进程ID344,发现是svchost.exe
对比上述两图,很明显关键的钩子是句柄0x000101e8的KEYBOARD。实现了键盘监听的功能。
其他的参考分析:
https://debug.fail/2015/10/practical-malware-analysis-lab-walkthrough-3-3/