**
恶意代码分析实战——Lab03-02.dll分析篇
一、分析对象
Lab03-02.dll
二、实验环境(本次一切实验环境均在vmware虚拟机下进行)
1、kall虚拟机
2、winxp虚拟机(经过不断的踩坑,不断的尝试最后发现在winxp系统中进行实验最容易成功,虽然由于系统版本比较低,需要下载一些其它插件,但是正是因为系统较简单的原因,可以省去较多的麻烦,所以在今后的实验中建议使用winxp系统)
3、本次实验在由kall与win10虚拟机组成的虚拟网络环境中,vmware虚拟网络环境的搭建方法见《恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境》一文。
三、实验工具
1、静态分析工具:MD5Deep,peid,PEview,strings64
2、动态分析工具:Procmon,Process Explorer,Regshot
3、网络工具:INetSim,ApateDNS,Netcate,Wireshark
四、实验开始
(一)静态分析
1、查看Lab03-02.dll的MD5值
2、PEID分析
从中我们看到并未加壳处理,再观看它的导出列表
从中我们看到共5个导出函数,其中ServiceMain是和服务相关的函数,所以猜测Lab03-02.dll目的是下载某个服务。
3、peview分析
首先它的导出函数和在peid中查看的相同
然后我们再来看一下它的导出表,发现了一些依赖导入函数动态链接库
-
KERNEL32.dll:
内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
-
ADVAPI32.dll:
一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。xp系统一般位于C:\WINDOWS\system32\目录下,大小659KB。
-
WS2_32.dll:
Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。
-
WININET.dll:
Windows应用程序网络相关模块。通常情况下是在安装操作系统过程中自动创建的,对于系统正常运行来说至关重要。它的存在对维护计算机系统的稳定具有重要作用。
-
MSVCRT.dll:
微软在windows操作系统中提供的C语言运行库执行文件(Microsoft Visual C Runtime Library),其中提供了printf, malloc, strcpy等C语言库函数的具体运行实现,并且为使用C/C++(Vc)编译的程序提供了初始化(如获取命令行参数)以及退出等功能。
其中,通过观察ADVAPI32.dll依赖的导入函数,发现该恶意代码的功能实现中涉及了开启服务;开启注册表、注册表查询、创建注册表键、设置注册表键值、注册服务控制处理、设置服务状态等。这显然是为了实现ServiceMain的正常运行。
并且在它的导入表中发现了一些涉及网络访问功能的函数。
4、strings查看可打印字符串
通过观察可打印字符串中发现,除了同上发现的一下导入导出函数外,还发现了practicalmalwareanalysis.com等一些域名信息以及一些注册表信息,此外还发现了svchost.exe的可执行程序。
通过以上信息可以得出总结,该程序可能通过访问 practicalmalwareanalysis.com网址,来下载某些程序,将自己下载为某个服务,而dll文件在Windows系统中一般不可以直接执行,所以必然存在某个可执行程序来运行Lab03-02.dll文件,而在可打印字符串中发现的svchost很有可能便是运行dll文件的exe文件。
(二)动态分析
1、Regshot注册表分析(分析比较运行Lab3-02.dll前后注册表变化)
(1)运行Lab03-02.dll前利用regshot记录一下注册表信息,之后2nd shot会亮起:
(2)使用rundll32运行Lab03-02.dll
由于lab03-02.dll通过把自己安装成一个服务来正常运行,故在CMD模式下,执行下述命令:
rundll32 Lab03-02.dll,installA
(3)利用regshot记录运行Lab03-02.dll后的注册表信息,之后compare亮起
(4)点击compare对比运行Lab03-02.dll前后的变化
在key adds中发现增加了一个IPRIP的服务,说明Lab03-02.dll将自己安装成一个IPRIP服务,印证了上述的猜测,并且dll需要一个可执行程序来执行它,在注册表中发现了svchost.exe执行程序,加重了是它运行的嫌疑。该恶意代码执行时显示的名字为“Intranet Network Awareness(NIA+)”
2、ApateDNS虚拟网络分析
配置好kali和winxp的虚拟网络,开启ApateDNS,并在kali中用nc监听80端口,然后可以使用net start 开启IPRIP服务
启动IPRIP服务后发现Lab03-02.dll访问了practicalmalwareanalysis.com网址
发现它会请求获取serve.html网页文件
3、process explorer分析
开启IPRIP服务后ctrl+F搜索Lab03-02.dll后,发现Lab03-02.dll确实附着在svchost.exe上运行,其pid为1028(不同电脑可能会不同),因此在这里就可以确定Lab03-02.dll就是通过svchost.exe执行的
之后找到1028程序,确实在它的里面找到了Lab03-02.dll
五、实验总结
Lab03-02.dll通过svchost.exe运行把自己安装成一个IPRIP服务,该服务的作用是向practicalmalwareanalysis.com发送了一个HTTP GET请求,获取serve.html页面。