恶意代码分析实战笔记(二)
LAB03-01.exe
1、找出这个恶意代码的导入函数与字符串列表?
使用strings查看字符串,发现一下内容
发现了一个网址,然后导入的函数库使用了VideoDriver
,ws2_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
写入该文件。
通过检查HASH值,发现vmx32to64就是这个LAB03-01.exe
发现在请求DNS,打开apateDNS
检测发现Framework挂掉了,重新下载之后无果,查询资料发现这个软件没法在xp上面运行,好在我们还有wireshark
在发送一个DNS请求www.practicalsmalwareanalysis.com
的IP,wireshark抓包分析得比较清楚
创建SSL,然后查询DNS,然后得到IP之后就开始和这个IP进行SSL的发包通信
3、这个恶意代码是否存在一些有用的网络特征码?如果存在,他们是什么?
string中发现的
HTTP/1.0
,以及503
,200
都是HTTP中的网络特征码
然后就是其他软件进行分析PEID分析走起,发现是有junkcode
加壳的
使用万能脱壳机来脱壳
失败,看到还能使用OD手动脱壳,就去试一试
函数的运行入口点很奇怪,F8几次之后就直接结束了,我们用F7跟进这个call
很正常的一个函数入口,甚至还看到了push ascii “ws2_32”,然而在这个ws2_32
这一处下F4,直接结束,手动脱壳失败。这个函数就这么分析到这里了
Lab03-02.dll
1.你怎样才能让这个恶意代码自行安装?
使用系统自带的rundll32.exe
,运行命令rundll32.exe Lab03-02.dll,installA
,但是运行之前我们要知道为什么是InstallA,使用PEView
查看文件的导出列表
发现导出函数有Install
,ServiceMain
,UninstallService
,installA
,UninstallA
,其中观察上面的install和一个服务有关,剩下的installA比较重要的分析对象。使用strings查看字符串
发现里面有一堆关于注册表键值注册的操作,将其导入一个叫做SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
里面
然后使用IDA查看导入函数,用Dependency Walker有点慢
发现了GetCurrentDirectoryA
是获取当前目录
CreateServiceA
,DeleteServiceA
,创建和删除服务
RegCloseKey
,RegCreateKeyA
,RegOpenKeyExA
,RegQueryValueExA
,RegSetValueExa
等等,是对注册表的值进行增删改查的操作
然后在IDA里面查看字符串,发现了一些有趣的东西
怀疑是base64
加密的字符串,以及一个base64
的字母表,说明这个程序里面还有base64,把这些base64字符串解出来是connect
|unsupport
|sleep
|cmd
|quit
,说明这个程序还能够去调用cmd进行操作。当然,我们也发现了一个网站
2.在安装之后,你如何让这个恶意代码运行起来?
运行命令rundll32.exe Lab03-02.dll,installA
,但是在运行之前要对注册表加一个快照,因为这个程序会修改注册表,然后使用net start IPRIP
就可以运行了
其实运行Install
和运行InstallA
效果都一样
然后运行完了之后查看注册表快照看看有什么变化
3、你怎么能找到这个恶意代码是在哪个进程下运行的?
服务中多了个IPRIP的服务
然后发现是附加在svchost.exe上面运行的,名字就是Intranet Network Awareness (INA+)
,听起来还很正经
然后我们使用net start IPRIP
运行这个服务,并在Procmon里面找找这个服务还有文件名
4、你可以在procmon工具中设置什么样的过滤器,才能收集这个恶意代码的信息?
成功找到附加在系统服务上的病毒程序
5、这个恶意代码在主机上的感染迹象特征是什么?
多了一个IPRIP
的服务驻留在后台,然后通过wireshark抓包分析(ApateDNS无法在XP上面运行,安装了NET.framework一样的)
6、这个恶意代码是否存在一些有用的网络特征码?
刚才看见的connect
,以及HTTP GET/1.1
等等
LAB03-03.exe
1、当你使用Process explorer工具进行监视时,你注意到了什么?
首先我们先用IDA进行静态分析
查看字符串,发现是一些简单的报错信息还有下面的乱码,然后查看导入函数表
发现能够对内存,文件进行增删改查,然后使用ProcessExplorer进行监视
发现运行的时候出现一个Lab03-03.exe
,然后创建一个svchost.exe
,然后这个Lab03-03.exe
一瞬虚无,多来两次找到这个新的svchost.exe
这个伪装就非常的拙劣了,单独出来一个孤儿进程
2、你可以找出任何的内存修改行为吗?
源映像和内存中的影响还不一样,多了一些按键,估计是个键盘记录器
3、这个恶意代码在主机上的感染迹象特征是什么?
然后多了一个practicalmalwareanalysys.log
,估计就是记录的日志文件了,打开看看
还真是一个记录键盘的文件
4、这个恶意代码的目的是什么?
记录键盘,生成日志文件,发送到一个目录中,但是没找到网络模块,不会上传出去,有点类似于灰鸽子木马
Lab03-04.exe
1、当你运行这个文件时,会发生什么呢?
首先我们还是先查壳然后IDA静态分析一下
很幸运没加壳
然后拖进IDA分析
导入函数来看,有很明显的套接字的网络发送和接收操作。还能看到执行Shell
命令的操作
以及对文件,注册表进行增删改查。
然后就是找字符串
是一些很常见的报错信息,然后又一个网址command.com
,还有星期,月份。另外还有唤起cmd
,然后还有一个\c del
的删除命令,我们转到调用这个cmd.exe
的地方
2、是什么原因造成动态分析无法有效实施?
因为这个程序会把自己给删掉
3、是否有其它方式来运行这个程序?
由于这个文件室友一个删除自己的操作,因此我们转到含有cmd.exe
这个的调用函数处
原来是执行一个shell
命令filename+\c del + >> NUL
我们跳进这个函数的引用里面,发现就是main()
引用的这个函数
通过阅读程序逻辑,可以看到,是要运行时给好几个参数,然后还有一个参数校验程序,我们跳进这个最后一个参数的校验程序sub_402510()
(为了逆向方便我会改名字)
可以看到第一个校验程序是校验如果参数为3个时,最后一个要是abcd
然后是根据输入的第一个参数来执行操作,去逆向其他函数
发现是打开然后查找HKEY_LOCAL_MACHIME\SOFTWARE\Microsoft\XPS
的Configuration
的值
至此其中的一个运行方式就被我们摸出来了,在命令行里面执行这个程序,参数设置成一个-cc
之类的,然后还要注册表中有这个值,就能够根据这个值来运行,大概运行的命令如下
Lab03-04.exe -cc abcd
我们做个实验看看
疯狂运行,文件没少,既然能跑我们就可以通过OD结合IDA进行详细分析了,在此不表