由于图片过多无法完全上传,所以直接上传原文件
一次恶意软件静态分析
简述:只是对两个软件通过使用几个静态分析工具进行简要分析,了解它的基础信息。
分析对象:Lab-1.exe、Lab-1.dll
使用工具:windows提供的系统分析包中的PEid, strings,PWview,dependency,resource hacker,WinMD5
开始分析1:La:01-01.dll
使用工具1:PEid
得出现象:如图1:
初步结果:说明这是一个用C++6.0编译出来的.dll文件,但是并没有识别出被加壳过,至于入口点,文件偏移,连接器版本,PE段,首字节,子系统类的值就不一一介绍了。
使用工具2:strings(这一微软提供的一个系统分析工具包的一个工具,只要是负责字符串搜寻)这工具需要自cmd上运行检查
得出现象:首先在cmd上运行strings.exe,运行步骤如图3:
接着输入strings Lab-1.dll(上面的路径是strings路径,最好将分析文件也放在同一位置,方便操作)得到结果如图4:
以上是挑选后的结果,发现有两个重要的结果1.点用到内核函数库Kernel32.dll函数库中的几个重要的函数,CreateProcessA,Sleep;2.调用网络链接库,外加上一个IP地址,这更坚信其实用到http服务
初步结果:有以上的现象初步判断这是一个需要使用到网络的.dll文件,而且结合Kernel32.dll文件中的sleep函数,或许是可以通过网络控制目标系统进入睡眠。还有一点,.dll必须有一个工具进行辅助(调用它里面的函数,达到目的,这就是Lab-1.exe文件)。
使用工具3:dependency
得出现象:首先查看她对Kernel32.dll文件的调用,如图7:
然后再查看它对WS2_32.DLL,如图8:
首先可以看出这一个通过序号引索调用函数的方法,需要进行人工的匹配,匹配出重要的结果是调用几个可以函数,如图9:
调用到send函数,初步判断是需要往外发处数据。
如图10:
调用大shutdown函数,初步判断是通过后门进行系统重启
如图11:
调用到WSACleanup,初步判断是事后进行缓存数据清除,清除痕迹。
如图12:
调用到inet_addr函数,初步判断是获取网络IP地址,与后门主机连接。
如图13:
调用connect函数,出判断是连接网络。
初步结果:综合上述调用的函数及初步判断,可以进一步判断,该.dll文件,是根据设定的IP地址,连接网络中的目标IP,然后发送数据,通过后门进行远程重启,然后清除缓存数据。
使用工具4:PEview(这是一个比较细的对PE致查找工具)
得出现象:首先是分析出它的文件头数据如图16:
分析出它的文件可扩展头的数据如图17:
再重点查看他需要调用到的数据(主要是导入导出表)如图18:
这吻合上面其他工具的分析结果,调用到了Kernel32.dll文件 和 WS2_32.dll及MSVCRT.dll文件及他们里面的一些函数。
上面的数据是.rdata区段的数据,接下来还有.data(可读写,存储的是可修改的数据,例如指令之类的)区段,如图19:
这些都是精华数据啊,这是WS2_32.dll文件需要到的数据,这里有exec,sleep,hello,127.26. 52.13 SADFHUHF。exec字符串可能是通过网络接收IP为127.26.52.13给后门程序传送指令,执行睡眠sleep指令
初步结果:进一步确认前面工具分析得到的结果,Lab-1.dll文件主要是实现一个程序后门的功能,通过网络进行传送执行睡眠指令。使用工具5:resource hacker(这是一个文件资源分析工具,主要是分析某个.dll文件或者.exe文件的资源目录)
得出现象:很多时候用resource hacker分析.dll文件,都是空白的,所以有些病毒分析师并不会怎么将.dll文件放到resource hacker中进行分析。但是有些病毒攻击者正是;利用了这点。将病毒嵌入到.dll文件的资源文件中。该文件在resource hacker中的分析结果如图24:
这说明这个.dll文件的资源段并没有被嵌入病毒。
初步结果:该文件的资源段属于正常,没有被查出人和资源信息。
使用工具6:WinMD5(用于查询文件的哈希值)
得到结果:290934c61de9176ad682ffdd65f0a669 Lab01-01.dll
分析对象的分析结果:该文件并没有加壳,其次这是一个需要通过联通网络,然后接受目标IP:127.26.52.13传过来的指令,通过该文件后门向系统发出休眠指令使得系统进入休眠状态。
开始分析1:Lab01-01.dll
使用工具1:PEid
得出现象:如图2
初步结果:说明这是一个用C++6.0编译出来的.exe文件,但是并没有识别出被加壳过,至于入口点,文件偏移,连接器版本,PE段,首字节,子系统类的值就不一一介绍了。
使用工具2:strings(这一微软提供的一个系统分析工具包的一个工具,只要是负责字符串搜寻)
得出现象:得出的现象如图5,6:
上面上面显示的很明显,首先有调用Kernel32.dll里的图5这么几个函数,很明显是实现创建、查找,退出文件功能,然后还有一个就是图6 的两个文件,Kernel32.dll与kerne132.dll,者是一个很明显的文件混淆,着可以判断它是不是它进行创建一个kerne132.dll文件 与Kernel32.dll文件混淆在一起呢?
初步结果:创建一个kerne132.dll文件,和kerne32.dll文件混淆在一起,起到一个隐藏作用。
使用工具3:dependency
得出现象:首先是分析调用的Kernel32.dll里面的函数。如图14:
在kernel32.dll文件中调用了CopyFileA,CreateFileA,FindClose,FineFirstA,FindNextA函数实现文件创建,查找,复制功能,这也进一步确认了strings上搜索到的数据和推断。
再对MSVCRT.DLL查询分析,这是一个多线程调用函数动态链接库(如果对这个文件不是很熟悉的话可以到微软官网上去查询,http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx),里面还可以查询细致到某个函数的作用)如图15:
可能是本人功力尚浅,并没有觉得什么可以的地方值得怀疑。
初步结果:进一步判定它是执行文件创建,查找,复制,关闭功能。
使用工具4:PEview
得出现象:首先查看的是该程序的文件头数据,如图20:
该程序的可扩展头信息,如图21:
然后再重点查看他的数据段.rdata和.data,.rdata数据如图22:
看到了它调用的Kernel32.dll里面的CopyFileA,CreateFileA,FindClose,FineFirstA,FindNextA函数。也调用MSVCRT.dll多线程库里面的函数执行线程调用。再看.data区段里面的数据,如图23:
这里面的数据就精华丰富了,首先是两个近似函数Kernel32.dll 与Kerne132.dll,初步判断是进行文件混淆目的。
然后是一个系统目录路径,一个函数Kerne132.dll,初步判断是这个路径和Kerne132.dll存在某种关联。
然后再来两个Kernel32.dll 和Lab01-01.dll,Lab01-01.dll这很明显就是上面分析的.dll文件,所以初步判定是这个程序需要调用到Kernel32.dll 和Lab01-01.dll。
然后是系统路径和Kernel32.dll文件,和一个函数。这就是说调用到系统路径里的Kernel32.dll文件的某个函数
初步结果:众多联系起来可以进一步判断,这个程序实现的功能是在系统路径中寻找,创建,复制一个Kerne132.dll文件,然后还调用了Lab01-01.dll文件实现它里面的功能。
使用工具5:resource hacker
得出现象:同样也没分析出结果,这有点异常,刚才还能分析出两个数据,一个是界面代码,一个书二进制数据。现在得到的却是空白如图25:
初步结果:没有出现异常。
使用工具6:WinMD5
得到结果:bb7425b82141a1c0f7d60e5106676bb1 Lab01-01.exe
分析对象的分析结果:该文件并没有加壳,她住要实现的功能是,调用Kernel32.dll文件的相关函数,实现在系统目录里面遍历查找是否存在Kerne132.dll文件,如果不存在就进行创建Kerne132.dll文件,进行混淆Kernel32.dll文件,然后再调用Lab01-01.dll文件,实现它的功能结合两个分析对象得出的结论:该文件并没有加壳,她住要实现的功能是,调用Kernel32.dll文件的相关函数,实现在系统目录里面遍历查找是否存在Kerne132.dll文件,如果不存在就进行创建Kerne132.dll文件,进行混淆Kernel32.dll文件,然后再调用Lab01-01.dll文件,实现通过联通网络,然后接受目标IP:127.26.52.13传过来的指令,通过该文件后门向系统发出休眠指令使得系统进入休眠状态。
接下来将两个文件放到杀毒软件上去查杀,得到的结果结果:
Lab01-01.dll在360的查杀结果如图26:
Lab01-01.exe文件在360的查杀结果如图27:
360对这两个文件的查杀描述正好复合自行分子得出的结论!
精灵(^_^)/淘气鬼 (著)