第一次恶意代码分析 —— 恶意代码分析实战 Lab 3-1

一些废话

折腾了几天的OS,终于搭建完成了一个win10的分析环境,本来兴冲冲的开始分析时,运行程序发现没有点反应

想想也是,恶意程序运行后能有什么明显反应一样的 XD

搞了半天以为我环境出现了问题,结果在查看进程分析的时候发现其引发了Windows的一个报错机制,但是没有回显,Wireshark等分析软件也没有捕获到任何有效信息,此时我开始觉得我环境是不是真的运行不起来 …

在找到一个 17 年的博客发现,好像还真跑不起来,作者在win10等各个环境下运行点动静都没,我也尝试在微步云的win10win7的沙箱运行,发现也都运行不起来。

由于那位作者成功于32位XP上成功运行,因此我也准备来搭建一个 04 年的32位XP古董OS,只能说太折磨了…各种软件适配,小到输入法,各个软件找到能用的版本太难了…又花了将近一天时间才搭建完成…

初步分析

拿到一个恶意程序后,第一步便是将其上传到一个沙箱进行测试,我们此处使用VirusTotal

可以很明显的看到有67个杀软报毒,说明该样本已经能够被大部分杀软识别进行消灭了

1.png

信息整理

导入导出表

导入导出表也是我们需要关注的地方,通过观察其导入的函数我们可以进行猜测程序的功能,进一步的判断恶意程序的类型以及功能

2.png

可以看到程序就只导入了一个Kernel32.dll,同时也就只存在一个函数,我们此时可以怀疑程序是否加了壳,导致无法进行直接的分析

行为

通过VirusTotal的行为分析我们可以看到有互联网的链接操作,因此怀疑程序会从互联网上下载东西,我们可以看到对应的一个域名www.practicalmalwareanalysis.com,我们可以进行合理猜测从其中下载了对应恶意程序

字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
!This program cannot be run in DOS mode.   //这个是编译器自动生成的,编译器的类型应该是vs的编译器
Rich //这个很有可能是作者的名字(猜测)
.text //这个有点像PE头的text字段
`.data //这个和上面一样,但是多了一个符号,很有可能和上面的一起,是注释
ExitProcess //有可能是注释
kernel32.dll // 可能注释
CONNECT %s:%i HTTP/1.0 //这个有可能是程序的printf类的函数的参数,%s可能是域名,%i作用和%d差不多(其实差别很大,但是为了方便理解,这里可以把%i看出%d),应该是端口号
advapi32 //这是提供基本函数的链接库
ntdll //底层API实现库
user32 //这个是windows用户界面相关应用程序接口
advpack //用来帮助硬件和软件读取和验证.INF文件,INF是硬件设备制造商发布起驱动程序的一种文件格式(说明这个病毒很有可能要去感染某个驱动)
StubPath //不明的某个路径
SOFTWARE\Classes\http\shell\open\commandV //打开一个http的shell command
Software\Microsoft\Active Setup\Installed Components\ //安装程序
test //可能是注释
www.practicalmalwareanalysis.com //恶意域名
admin //有可能是下载网站或者恶意代码的用户名
VideoDriver //显卡驱动(很有可能会感染显卡驱动)
WinVMX32- //那个互斥变量的名字,后面多了一个字符,有可能是注释
vmx32to64.exe //一个程序的名字
SOFTWARE\Microsoft\Windows\CurrentVersion\Run //运行其他程序
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
AppData

逆向分析

原先计划时采用逆向的方式来进行分析,结合前面我们只观察到一个导入函数,我们可以猜测有壳的存在,使用PEid进行查看

4.png

可以很清楚的看到使用了PEncrypt填充了大量垃圾代码,不便于我们的逆向工作。因此我们采用执行恶意程序,通过其他软件来检测其行为的方式来动态进行获取恶意程序的功能。

同时逆向可能需要花许多时间在判断以及处理垃圾代码上,比较花费时间,而直接执行可以帮助我们快速发现程序干了些什么

动态分析

我们需要准备好虚拟的服务器,以及进程监视,注册表监视等等,我们需要提前打开进行配置,然后设置断网环境,使用虚拟机间的虚假网络构造一个服务器通信,此处使用Kaliinetsim,以及Win xp版本的ApateDNS

随后我们运行恶意程序,观察各个监视器获取到的信息

DNS Log

5.png

我们通过DNS可以发现恶意程序访问了字符串中对应的网站,因此我们可以确定,该网站为对应的恶意网站,恶意程序通过网络进行链接,然后执行相关操作

Regshot

7.png

通过运行前后的注册表对比,我们可以看到程序设置了一个启动项,内容为后面的16进制,我们进行转换一下

6.png

至此我们可以看到程序字符串中的vm32to64被创建在了系统目录下,同时设置其为启动项,我们可以在对应目录下找到对应程序

10.png

Process Explore

我们可以观察其创建的互斥量、以及相关装载库

相关信息

12.png

相关DLL

11.png

Process Monitor

我们添加对应的过滤器,观察程序的一些行为特征,我们可以看到程序创建了vm32to64,同时也设置了一些注册表的Seed

此处不太清楚这些Seed有什么用处,参考网上其他相关分析的博客,大致可以的推断出来是随机数发生器的种子,应该忽略

9.png

同时我们也可以通过观察可以发现其装载的一些dll

8.png

ws2_32.dllwshtcpip.dll,可以帮我们推测恶意程序具有联网功能

相关整理

程序逻辑

我们观察上述各个软件的记录信息后,可以整理出程序的大致逻辑:

程序创建了一个网络链接,连接到www.practicalmalwareanalysis.com网站上,然后创建vm32to64的启动项,我们合理猜测程序是创建了一个后门程序,通过网站发出对应的指令,客户端便会做出相应操作

判断是否被感染

我们可以通过网络通信是否访问过www.practicalmalwareanalysis.com,以及检查在C:\WINDOWS\system32\下是否存在有vm32to64

处理措施

可能直接删除vm32to64即可 ?

总结

开始分析前的环境搭建挺折磨人的,不过搭建好了就是一劳永逸。

此次分析也是第一次研究分析一个恶意程序,学习到了分析一个恶意程序的大致流程以及相关工具的简单使用。

分析过程中可能有许多不足或者是不够的地方,也还请多多包涵,也欢迎师傅们提出自己的看法,给一些相关的建议等等。

参考链接

恶意代码分析实战 Lab 3-1 习题笔记: https://blog.csdn.net/isinstance/article/details/77679894


第一次恶意代码分析 —— 恶意代码分析实战 Lab 3-1
https://equinox-shame.github.io/2022/10/04/第一次恶意代码分析 — 恶意代码分析实战 Lab 3-1/
作者
梓曰
发布于
2022年10月4日
许可协议