一个恶意样本的分析
阅读原文时间:2021年04月20日阅读:1

1.1 样本信息1样本概况

病毒名称:bea213f1c932455aee8ff6fde346b1d1960d57ff

MD5: 6E4B0A001C493F0FCF8C5E9020958F38

SHA1: BEA213F1C932455AEE8FF6FDE346B1D1960D57FF

CRC32: 1CD8074D

1.2 测试环境及工具

2.1.1 测试环境

Windows 7 32位操作系统

2.1.2 测试工具

查壳工具:PEID、ExeinfoPE

监测工具:火绒剑、PCHunter

调试工具:OD、IDApro

1.3 基础分析

1.3.1 病毒查壳

   使用ExeinfoPE进行查壳,如图1-1是个VS2015编写的程序

图1-1 病毒查壳

1.3.2 加密算法

将恶意程序手动脱壳,使用PEID的插件查看恶意程序的加密算法,发现程序含有大数运算

图1-2 加密算法

1.3.3 云沙箱分析

将恶意样本上传到微步云沙箱,发现恶意程序有如下行为。

图1-3 云沙箱分析

2.具体行为分析

2.1 主要行为

将病毒样本拖入火绒剑中,过滤到行为监控,可以看到病毒释放了一个压缩包和一个dll文件,并对资源管理器进行注入,最后自删除。

图2-1 病毒释放文件

找到释放的压缩包,打开发现是损坏的

图2-2 损坏的压缩包

过滤到执行监控,可以看到病毒创建并加装了comctl32.dll模块,查了一下,comctl32.dll是Windows应用程序公用GUI图形用户界面模块,虽然不知道在这里加装这个模块干什么,后续会在分析代码时注意。接着利用cmd ping了一下本机ip,可能是为了判断网络适配器是否加装成功。

图2-3 执行监控

过滤到文件监控,在cookies目录下生成了两个文件,在浏览器的缓冲目录下生成了一张图片,创建压缩包,创建dll文件,调用cmd ping本机ip并删除自身

图2-4 文件监控

在进程监控中,并没有什么太多可疑的行为。

图2-5 进程监控

过滤到网络监控,发现访问网址并看到是网站服务器的downloads目录下,应该是要下载一些文件。

图2-6 网络监控

最后使用注册表对比工具,将运行恶意程序前后对比,发现恶意程序对注册表的添加了以下注册表键

图2-7 注册表对比

3恶意代码分析**

3.1 病毒主程序分析**

开始分析主程序

将病毒拖入IDA中,F5直接看到病毒执行的流程,通过IDA静态分析和OD动态分析接下来的代码。

图3-1 ida主函数

main函数首先获取进程相关联的控制台窗口句柄,以隐藏方式运行,然后进入TraversalTerminateProcess函数,函数执行了三次,每次传入的数据都是检测工具的进程名,看到这个函数内部获取快照遍历进程,并出现TerminateProcess api函数,推测是检测是否存在检测工具并杀死检测工具进程,为了验证,打开wireshark。

图3-2 打开wireshark

运行过后,wireshark进程被结束掉,验证成功。

图3-3 打开wireshark

在图3-3部分动态跟踪,完成对路径C:\Users\VicZ\AppData\Local\Temp\x.zip的拼接,以备后面的使用。

图3-4 出现混乱字符串

在地址402B5E到402B90处出来一串混乱的字符串。

DecryptStr函数,通过this指针传入了一串字符串

图3-5 传入字符串

图3-6 解密出网址

走到函数末尾,解密出一个网址,用浏览器打开,没有找到那个要下载的文件

图3-7 浏览器打开网址

继续执行函数DownLoadFileAndIsSuccess

图3-8 DownLoadFileAndIsSuccess函数

由于网址下已经没有这个文件,所以下载失败,函数会走第一条流程。

接着又来到了下面

图3-9 解密下载

还是和之前差不多的操作,拼接路径,获取加密字符串解密出网址,在网址上访问下载图片,打开网址,看到一张图片

图3-10 访问网址

这部分执行过后,转到C:\Users\VicZ\AppData\Local\Temp目录下,这回知道g.zip是一张图片了,修改后缀,打开成功。

图3-11 成功打开图片

接着看,中间又做了一些无关紧要的操作,然后来到InfectExplorer函数

图3-12 创建文件

InfectExplorer函数首先创建文件C:\windows\system32\locale.dll,获取缓冲区首地址,解密缓冲区内容为一个PE文件,将缓冲区内容写入到locale.dll文件中。

图3-13 解密部分

这里是循环解密出PE文件

图3-14 InfectExplorer函数远程线程注入部分

如图3-14,先将notepad.exe进程创建的时间设置为C:\windows\system32\locale.dll创建的时间,然后远程线程注入explorer.exe

图3-15 获取进程id

图3-14位获取进程id

接下来先设置文件属性,又获取一串16进制数据

图3-16 解密

通过HexChangeAscii函数转化出ASCII码cmd.exe /C ping127.0.0.1 && del

图3-17 拼接字符串

图3-18 循环转化ASCII码

将16进制数转化为ASCII码

图3-19 拼接命令

图3-20 创建进程

通过图3-19和3-20创建cmd进程ping本机ip并删除自身

3.2 locale.dll

进入locale.dll入口函数

图3-21 locale.dll入口函数

进入sub_1000162A函数

图3-22 sub_1000162A函数

这里并没有过多的操作,只是有一个获取时间信息的函数,具体需要分析的函数是sub_10001362

进入sub_10001362函数内部。

图3-23 sub_10001362函数

这个函数在外面看起来函数并不多,不过他们的内部调用很复杂,首先进入InitSecurityCookie函数,这应该是一个类似于初始化安全cookie函数,里面还有一些异常设置。

图3-24 InitSecurityCookie函数

继续看线程函数

图3-25 线程函数

循环解密出网址http://d1picvugn75nio.cloudfront.net,然后进行访问

图3-26 打开网站

利用ShellExecuteA打开网址,自己加载dll运行后

图3-27 谷歌浏览器被启动

运行后,谷歌浏览器被打开。

进入JudgeValue函数,这个函数根据传入的值来判断返回哪一个结果。

图3-28 根据传入值判断

前传入的值等于1时

图3-29 传入值为1

当传入的值为2

图3-30 传入值为2

当传入的值不等于3时

图3-30 传入值不为3

当传入的值不等于3时和值为2时差不多,但这部分都没有观察到具体的行为。

至此,分析结束。

4手动查杀

1.删除cookies目录下生成了两个文件

2.删除生成的注册表

3.删除下载的文件

4.删除C:\windows\system32\locale.dll