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