恶意代码分析实战笔记(二)

LAB03-01.exe

1、找出这个恶意代码的导入函数与字符串列表?

使用strings查看字符串,发现一下内容

image-20191206215235177.png

发现了一个网址,然后导入的函数库使用了VideoDriverws2_32.dll,还有个vmx32to64.exe听名字是视频32位转64位,又发现了两个注册表项SOFTWARE\Microsoft\Windows\CurrentVersion\Run还有SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,是开机启动项。然后在Process Explorer里面跑一下,查看DLL,发现dnsapi.dll是查询DNS

2、这个恶意代码在主机上的感染迹象特征是什么?

修改注册表,在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\VideoDriver写一个值C:\WINDOWS\system32\vmx32to64.exe,然后开机自启,在C:\Windows\system32\vmx32to64.exe写入该文件。

image-20191206223926717.png

通过检查HASH值,发现vmx32to64就是这个LAB03-01.exe

image-20191206225749132.png

发现在请求DNS,打开apateDNS检测发现Framework挂掉了,重新下载之后无果,查询资料发现这个软件没法在xp上面运行,好在我们还有wireshark

在发送一个DNS请求www.practicalsmalwareanalysis.com的IP,wireshark抓包分析得比较清楚

image-20191206225336241.png

创建SSL,然后查询DNS,然后得到IP之后就开始和这个IP进行SSL的发包通信

3、这个恶意代码是否存在一些有用的网络特征码?如果存在,他们是什么?

string中发现的

image-20191206230330151.png

HTTP/1.0,以及503,200都是HTTP中的网络特征码

然后就是其他软件进行分析PEID分析走起,发现是有junkcode加壳的

image-20191206230517385.png

使用万能脱壳机来脱壳

image-20191208171245768.png

失败,看到还能使用OD手动脱壳,就去试一试

image-20191208172532449.png

函数的运行入口点很奇怪,F8几次之后就直接结束了,我们用F7跟进这个call

image-20191208172626746.png

很正常的一个函数入口,甚至还看到了push ascii “ws2_32”,然而在这个ws2_32这一处下F4,直接结束,手动脱壳失败。这个函数就这么分析到这里了

Lab03-02.dll

1.你怎样才能让这个恶意代码自行安装?

使用系统自带的rundll32.exe,运行命令rundll32.exe Lab03-02.dll,installA,但是运行之前我们要知道为什么是InstallA,使用PEView查看文件的导出列表

image-20191208194318193.png

发现导出函数有Install,ServiceMain,UninstallService,installA,UninstallA,其中观察上面的install和一个服务有关,剩下的installA比较重要的分析对象。使用strings查看字符串

image-20191208194553684.png

发现里面有一堆关于注册表键值注册的操作,将其导入一个叫做SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost里面

然后使用IDA查看导入函数,用Dependency Walker有点慢

image-20191208195135808.png

发现了GetCurrentDirectoryA是获取当前目录

CreateServiceADeleteServiceA,创建和删除服务

RegCloseKey,RegCreateKeyA,RegOpenKeyExA,RegQueryValueExA,RegSetValueExa等等,是对注册表的值进行增删改查的操作

然后在IDA里面查看字符串,发现了一些有趣的东西

image-20191208195653848.png

怀疑是base64加密的字符串,以及一个base64的字母表,说明这个程序里面还有base64,把这些base64字符串解出来是connect|unsupport|sleep|cmd|quit,说明这个程序还能够去调用cmd进行操作。当然,我们也发现了一个网站

2.在安装之后,你如何让这个恶意代码运行起来?

运行命令rundll32.exe Lab03-02.dll,installA,但是在运行之前要对注册表加一个快照,因为这个程序会修改注册表,然后使用net start IPRIP就可以运行了

image-20191208201043909.png

其实运行Install和运行InstallA效果都一样

然后运行完了之后查看注册表快照看看有什么变化

image-20191208201251439.png

3、你怎么能找到这个恶意代码是在哪个进程下运行的?

服务中多了个IPRIP的服务

image-20191208201558618.png

image-20191208201638660.png

然后发现是附加在svchost.exe上面运行的,名字就是Intranet Network Awareness (INA+),听起来还很正经

然后我们使用net start IPRIP运行这个服务,并在Procmon里面找找这个服务还有文件名

4、你可以在procmon工具中设置什么样的过滤器,才能收集这个恶意代码的信息?

image-20191208202048425.png

成功找到附加在系统服务上的病毒程序

5、这个恶意代码在主机上的感染迹象特征是什么?

多了一个IPRIP的服务驻留在后台,然后通过wireshark抓包分析(ApateDNS无法在XP上面运行,安装了NET.framework一样的)

image-20191208202546910.png

6、这个恶意代码是否存在一些有用的网络特征码?

刚才看见的connect,以及HTTP GET/1.1等等

LAB03-03.exe

1、当你使用Process explorer工具进行监视时,你注意到了什么?

首先我们先用IDA进行静态分析

image-20191208203902743.png

查看字符串,发现是一些简单的报错信息还有下面的乱码,然后查看导入函数表

image-20191208204104073.png

发现能够对内存,文件进行增删改查,然后使用ProcessExplorer进行监视

发现运行的时候出现一个Lab03-03.exe,然后创建一个svchost.exe,然后这个Lab03-03.exe一瞬虚无,多来两次找到这个新的svchost.exe

image-20191208204753308.png

这个伪装就非常的拙劣了,单独出来一个孤儿进程

2、你可以找出任何的内存修改行为吗?

image-20191208204927957.png

源映像和内存中的影响还不一样,多了一些按键,估计是个键盘记录器

3、这个恶意代码在主机上的感染迹象特征是什么?

然后多了一个practicalmalwareanalysys.log,估计就是记录的日志文件了,打开看看

image-20191208205108968.png

还真是一个记录键盘的文件

4、这个恶意代码的目的是什么?

记录键盘,生成日志文件,发送到一个目录中,但是没找到网络模块,不会上传出去,有点类似于灰鸽子木马

Lab03-04.exe

1、当你运行这个文件时,会发生什么呢?

首先我们还是先查壳然后IDA静态分析一下

image-20191208210413285.png

很幸运没加壳

然后拖进IDA分析

image-20191208210608253.png

导入函数来看,有很明显的套接字的网络发送和接收操作。还能看到执行Shell命令的操作

以及对文件,注册表进行增删改查。

然后就是找字符串

image-20191208211538850.png

image-20191208211634262.png

是一些很常见的报错信息,然后又一个网址command.com,还有星期,月份。另外还有唤起cmd,然后还有一个\c del的删除命令,我们转到调用这个cmd.exe的地方

2、是什么原因造成动态分析无法有效实施?

因为这个程序会把自己给删掉

3、是否有其它方式来运行这个程序?

由于这个文件室友一个删除自己的操作,因此我们转到含有cmd.exe这个的调用函数处

image-20191208211811078.png

原来是执行一个shell命令filename+\c del + >> NUL

我们跳进这个函数的引用里面,发现就是main()引用的这个函数

image-20191208212319418.png

通过阅读程序逻辑,可以看到,是要运行时给好几个参数,然后还有一个参数校验程序,我们跳进这个最后一个参数的校验程序sub_402510()(为了逆向方便我会改名字)

可以看到第一个校验程序是校验如果参数为3个时,最后一个要是abcd

image-20191208213518610.png

然后是根据输入的第一个参数来执行操作,去逆向其他函数

image-20191208213949967.png

发现是打开然后查找HKEY_LOCAL_MACHIME\SOFTWARE\Microsoft\XPSConfiguration的值

image-20191208214833935.png

至此其中的一个运行方式就被我们摸出来了,在命令行里面执行这个程序,参数设置成一个-cc之类的,然后还要注册表中有这个值,就能够根据这个值来运行,大概运行的命令如下

Lab03-04.exe -cc abcd

我们做个实验看看

image-20191208215151854.png

疯狂运行,文件没少,既然能跑我们就可以通过OD结合IDA进行详细分析了,在此不表