Downloader病毒样本分析
前言
Downloader是一类计算机病毒程序,按照国际上的病毒命名惯例为“Trojan-Downloader”一类,这类木马程序的主要内容为:指引中毒用户的计算机到攻击者指定的url地址去下载更多的病毒文件并运行,使得攻击者获得更大操作权限

拿到样本,可以从这几个角度入手:
字符串:有几率可以获得程序功能相关的提示
查壳:查看程序是否有进行加密加壳压缩等
PE文件格式:从PE头中可以获取程序的一些信息,例如编译信息、空间要求等
链接库和函数:从程序的链接库中可以初步推断程序的功能,查看DLL,导入表
样本分析
基础分析
分析PE格式与查壳,发现无壳,编译时间是2002-05-09,算是比较老的一个病毒样本,是个GUI程序

分析字符串,除了调用的函数名和动态链接库之外,字符串里包含了以下关键信息:
一个网址:dload.ipbill.com,还有个URI:http://dload.ipbill.com/del/cmb_211826.exe
还有HTTP请求头的字符串
文件相关:c:\dialler.exe
可以认为结合这些内容可以初步猜测,该程序会从网站上下载一个文件cmb_211826.exe,保存到C:\dialler.exe

分析相关函数,发现了有文件操作相关API:WriteFile和CreateFile,应该是写入文件的,还有个CreateThread,应该用来创建功能线程使用,ShellExecuteA,用来执行下载的程序,到这里已经可以摸清一个大概行为了,这个程序的功能就是从网上下载一个exe执行

逆向分析
定位关键函数
首先是程序OEP:程序首先是通过xor eax,eax的操作将eax赋值为0,然后四个push分别将0入栈,最后通过call sub_401499这里。从反汇编代码中,可以看到并没有将返回地址入栈的操作,程序其实是通过call执行此操作的,call指令我们可以理解为函数调用,call指令后面会跟一个地址,这里是sub_401499表示call会跳转到401499这个地址,这里调用了主函数,然后执行完之后退出进程,参数是4个0


进入主程序sub_401499:功能还是很简单的,是常见的注册窗口类,创建窗口,创建成功就进入消息循环,否则就退出程序,这一层没啥恶意行为出现,但是调用了两个自写函数

第一个自写函数sub_401437功能就是注册窗口类,然后接着就返回

第二个自写函数sub_4013A3:这个函数首先是查询了一个系统参数,然后调用CreateWindowExA去创建窗口,如果创建失败就返回,创建成功后接着往下跑

窗口创建成功之后,调用ShowWindow显示窗口,然后调用CreateThread创建了一个线程,线程函数是这个StartAddress,嗯..就觉得这个线程怪怪的

下载行为分析
持续追踪这个线程函数,可以发现它首先调用了一个自写函数sub_401068,功能是从指定URI下载内容,保存到缓冲区

随后分析这个子函数发现,只是一些循环操作,不明白是什么意思,估计可能应该是延时的目的

往下分析发现开始初始化Windows的Socket,并初始化socket连接用的参数,端口地址,网络地址,随后去判断这个网络地址是否存活,成功了就向下跳转

后面就是发送数据了,不难发现,发送一个GET的HTTP请求,请求的地址应该就是那个exe的URL

看到最后可以发现,接收服务器返回的数据时,会将数据保存参数里,并且接收的长度也保存了进来

创建文件行为分析
再往下定位就是这里,这里的功能是定位接收缓冲区里需要写入到文件的位置

定位完要写入的位置之后,紧接着就是创建文件和写入文件了,写入位置是C:\dialler.exe

执行文件行为分析
最后调用的是ShellExecuteA,并打开这个文件,参数是REFID,工作目录是C:\
