恶意代码分析实战1-1

Posted Neil-Yale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恶意代码分析实战1-1相关的知识,希望对你有一定的参考价值。

本次实验分析Lab01-01.exe和Lab01-01.dll文件,以及Lab01-02.exe。关于Lab01-01.exe和Lab01-01.dll文件的问题如下:
1.将文件上传至http://www. VirusTotal. com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?
2.这些文件是什么时候编译的?
3.这两个文件中是否存在迹象说明它们是否被加壳或混淆了?如果是,这些迹象在哪里?
4.是否有导入函数显示出了这个恶意代码是做什么的?如果是,是哪些导入函数?
5.是否有任何其他文件或基于主机的迹象,让你可以在受感染系统上查找?
6.是否有基于网络的迹象,可以用来发现受感染机器.上的这个恶意代码?
7.你猜这些文件的目的是什么?
我们逐个解答

1.将文件上传至http://www. VirusTotal. com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?
我们将exe上传到virustotal,如图所示
在这里插入图片描述

可以看到之前就已经被其他人上传到这里过了
在这里插入图片描述

这些反病毒引擎都会将其标记为恶意代码。上传dll文件也是类似的结果

2.这些文件是什么时候编译的?
将exe文件载入studype+
切换到pe头窗口,点击时间计算器
在这里插入图片描述

可以看到编译时间是在2010年12-20
载入Lab01-01.dll
在这里插入图片描述

这两个文件编译的时间很接近,因为dll动态链接库文件无法运行自己,我们可以大胆假设这个exe文件是用于使用或安装该dll文件的

3.这两个文件中是否存在迹象说明它们是否被加壳或混淆了?如果是,这些迹象在哪里?
将文件载入peid
在这里插入图片描述

可以看到没有加壳的迹象(如果加壳则一般会显示壳的名称或者不会显示是用什么编译的),而且知道这是由vc++ 6.0编译的

4.是否有导入函数显示出了这个恶意代码是做什么的?如果是,是哪些导入函数?
接下来查看exe的导入表,如下所示打开
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

msvcrt.dll导入的函数基本每一个可执行文件都有
而在kernel.dll中
在这里插入图片描述

可以看到一些关于打开、操作文件相关的函数
在这里插入图片描述

这两个函数表明恶意代码会对文件系统进行搜索
所以Lab0l-0l.exe 中有值得的导入函数有FindFirstFile、FindNextFile 和CopyFile。这些导入函数告诉我们,这个程序在搜索文件系统和复制文件
将dll文件载入peid
(PEiD查壳工具这个软件可以探测大多数的PE文件封包器、加密器和编译器。当前可以探测六百多个不同的签名)
在这里插入图片描述

Lab0l-0I.dll 值得关注的导入函数是CreateProcess和Sleep。我们还看到导入了WS2_ _32.dll 中的函数,这些函数可以用于联网。
5.是否有任何其他文件或基于主机的迹象,让你可以在受感染系统上查找?
将exe载入peview,查看字符串
在这里插入图片描述

看到了exe,那么我们结合导入函数可以猜测是在文件系统中搜索exe文件,然后会有打开、修改等操作。
另外我们看到了两个kernel32.dll。真的是两个吗?仔细看第一个是kerne132.dll,它将kernel的l替换成了1,第二个才是真正的kernel32.dll
我们猜测假的kernel32.dll是想将自己混淆冒充为windows的系统文件kernel32.dll

那么这个文件可以基于主机的迹象,让我们可以在受感染系统上查找。

6.是否有基于网络的迹象,可以用来发现受感染机器.上的这个恶意代码?
将dll文件载入peview,查看字符串
在这里插入图片描述

看到私有子网IP地址127.26.152.13,如果是真正的恶意代码的话,这应该是一个可以访问的公网ip,是一个很好的基于网络的恶意代码感染迹象,可以用来识别这个恶意代码

7.你猜这些文件的目的是什么?
前面在dll的导入函数中我们看到了CreateProcess和Slepp,这在后门程序中被普遍使用,这些函数会与exec,sleep结合使用,这与我们在peview查看dll文件的字符串时看到的是一致的。Exec可能是通过网络来给后门程序发送传送命令,从而通过CreateProcessA运行程序,sleep可能是用于让后门程序进入休眠模式。
综上分析,我们认为dll文件可能是一个后门,而exe文件是用于安装和运行dll文件的。

接下来分析Lab01-02.exe
Q1.将Lab01-02.exe文件上传至http://www. VirusTotal. com/进行分析并查看报告。
Q2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。
Q3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?
Q4.哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?
依次解答

Q1.将Lab01-02.exe文件上传至http://www. VirusTotal. com/进行分析并查看报告。
将本次实验文件上传至virustotal
在这里插入图片描述

可以看到反病毒引擎的报警率为50/71,不过有将其识别恶意下载器的,也有将其识别为恶意代码的。
A1:匹配到了71个杀毒引擎中的50个

Q2.是否有这个文件被加壳或混淆的任何迹象?如果是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。
使用peid
在这里插入图片描述

没有检查出什么壳
再将实验文件载入peview
在这里插入图片描述

可以看到名为upx0,upx1,upx2的节,这是由upx加壳后恶意代码程序的节名称。
那么可以使用upx进行脱壳
命令如下 upx.exe –o 新文件名 –d 加壳文件名
-d表示对文件脱壳,-o指定输出名
在这里插入图片描述

A2:这个程序是通过使用UPX工具加壳的。可以通过UPX工具,并运行upx-d命令来进行脱壳。
Q3.有没有任何导入函数能够暗示出这个程序的功能?如果是,是哪些导入函数,它们会告诉你什么?
再次peid载入脱壳后的文件
在这里插入图片描述

此时是脱壳成功了(由上图可见,此时peid可以看到识别出由vc++6.0编写)
查看导入函数
在这里插入图片描述

从wininet.dll导入的函数说明,这些恶意代码会进行联网操作
在这里插入图片描述

从advapi32.dll的导入函数说明这个代码或创建一个服务
而从kernel32.dll,msvcrt.dll导入的函数几乎每个程序都会导入,一般不需要特别关注
A3:在对文件进行脱壳之后,看到一些功能指向性很强的导入函数,如CreateService(是一个创建一个服务对象,并将其添加到指定的服务控制管理器数据库的函数。 )、InternetOpen(初始化一个应用程序,以使用 WinINet 函数)、InternetOpenURL(通过一个完整的FTP,Gopher或HTTP网址打开一个资源)

Q4.哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?
将其载入peview查看其字符串(peview.exe工具是一款可以进行PE文件解析的强大PE文件解析工具)
在这里插入图片描述

A4:看到了malService,这可能是所创建的服务名称;看到www.practivcalanalysisbook.com,这可能是InternetOpenURL函数所打开的url

参考:
1.《恶意代码分析实战》

以上是关于恶意代码分析实战1-1的主要内容,如果未能解决你的问题,请参考以下文章

恶意代码分析实战3-2

恶意代码分析实战11-1

恶意代码分析实战9-1

恶意代码分析实战14-02

恶意代码分析实战11-2

恶意代码分析实战15-3