首页 > 技术文章 > 计算机病毒实践汇总三:动态分析基础(分析程序)

hyq20135317 2016-05-13 23:18 原文

在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索。敬请批评指正!

1. 实践内容

  • 搜索、下载并执行Process Monitor,观察随着时间的推移,软件所记录信息;设置监控条件对恶意代码敏感的功能进行监控。
  • 搜索、下载并执行Process Explorer,查看进程列表,选择相应进程进行签名验证,对比其硬盘上的文件和内存中的镜像,结合Dependency Walker对其所载入的dll文件进行比对。
  • 搜索、下载并执行Regshot,观察注册表的变化情况。

2. 实践一:lab03-01.exe

(1)简单静态分析

  • 使用常用工具查看:

  • 本程序被加壳,只能看到一个导入函数。

  • 虽然是加过壳的,但是可以看到比较多的信息:

    • 有一些路径、一个网址:可能有联网下载的操作
    • 一个exe程序名:可能是写入的恶意程序
    • 注册表自启动项键值:可能程序要把自己写入自启动项
  • 在之后的分析中应该关注网络连接和下载、注册表更改、新程序的写入的操作。

  • 然后就可以开启监视工具并运行Lab01-03.exe进行简单的动态分析了。

(2)使用Process Monitor分析

  • 由于这个工具监视的项目过多,进行过滤操作:对Lab03-01.exe程序对注册表键值的更改操作、写文件的操作过滤显示。

  • 可以看到:

  • 恶意代码在系统盘下写入了一个新程序vmx32to64.exe(就是之前看到的那个exe字符串),这个新的可执行程序的长度为7168。实际上,它与Lab03-01.exe程序本身长度是一致的:

  • 可以推测它将自己复制到了system32文件夹下。

  • 再看过滤出的写入注册表值:

  • 显示对注册表键值的更改成功。双击查看详情:

  • 可以看到写入的注册表自启动项键值的数据,路径就是刚创建的那个可执行程序。

(3)使用Process Explorer分析

  • 开启Process Explorer:

  • 可以看到Lab03-01.exe是一个已经运行的进程。查看这个进程连接的dll:

  • 这个程序应该是有联网的操作。对dll进行签名验证:

  • 查看内存镜像和硬盘镜像中可执行文件的字符串列表(之前验证的是磁盘上的镜像而不是内存中的,通过这样的比较可以分析代码是否有做手脚):

(4)Regshot注册表的变化情况

  • 在运行Lab03-01.exe之前进行一次注册表快照,运行之后在进行一次,并进行比较:

  • 可以看到显示注册表有一个值有改变:

  • 键值名为VideoDriver,键值为C盘下system32中的vmx32to64.exe。

(5)网络行为

  • 由于分析它有网络行为,所以用wireshark进行抓包:

  • 可以看到这个程序有一个向www.practicalmalwareanalysis.com连接的包,之后与这个ip(192.0.78.25)有数据传递的包。

(6)从主机上观察现象

  • 新增加了一个文件:

  • 修改的注册表键值:

3. 实践二:lab03-02.dll

(1)简单静态分析

  • 从PEiD中我们可以知道,这个dll文件是没有加壳的,并且很可能开启了一个服务:

  • 导入函数显示它很有可能是网络相关的:

  • 查看这个dll的导出函数有五个,而导出名部分看起来应该是installA。

(2)运行这个dll程序

  • 借助rundll32.exe工具运行起来这个dll:

  • 查看注册表的变化:

  • 可以看到这个恶意代码将自身安装为一个IPRIP的服务,很有可能是通过svchost.exe程序来运行自身的。使用命令行来启动这个服务:

(3)Process Explorer分析

  • 查找是哪一个进程调用了Lab03-02.dll:

  • 双击关注这个进程:

  • 发现svchost.exe进程调用了Lab03-02.dll,可以看到这个进程具有恶意代码的特征字符串。
    在ProcessMonitor中按进程PID号过滤:

  • 可以看到有多项更改:

(4)使用Wireshark分析

  • Wireshark抓包一开始没有反应,过了一会儿才开始有包出现:

  • 可以看到第一个是一个DNS解析,网址仍是practicalmalwareanalysis.com,ping一下找到ip进行过滤:

4. 实践三:lab03-03.exe

(1)简单静态分析

  • 没有加壳,编译器是VC6.0:

  • 在PEview中我们发现数据段有一串exe文件名,是svchost.exe

(2)注册表快照

  • 是干扰项,注册表并没有被修改:

(3)使用Process Explorer查看

  • 刚一运行Lab03-03.exe时:

  • Lab03-03.exe瞬间变绿变红:

  • 说明Lab03-03.exe执行后自行结束,遗留下孤儿进程:

  • 比较svchost.exe的磁盘镜像字符串列表和内存镜像字符串列表:

  • 两者很明显是更改过的。观察内存中的字符串列表,还可以看到一些信息:

  • 可以通过这个进程的PID过滤ProcessMonitor的选项

(4)使用Process Monitor

  • 可以看到进行了写文件操作:

  • 而点开写文件的操作,会发现会有连续的几次都写入长度为1的数据。

  • 这些写文件的操作都是在一个名为practicalmalwareanalysis.log的文件中,这个文件是程序新创建的,写进了Lab03-03.exe所在文件夹下:

  • 查看这个文件:

  • 显示的信息时我之前在ProcessMonitor中输入过滤信息时的字符,还有一个误输入的“a”也被记录了下来。判断这个恶意代码用于键盘活动记录。

推荐阅读