概述

17年就出现的一个老样本,最近发现此类样本有一定活跃度,做个简单的分析记录下。

样本分析

原始样本由MFC编写,程序会在框架中通过call eax的方式,调用0040118f函数
image.png

程序首先加载名为103的资源项
image.png
该数据读取出来之后会将其分为两部分不并分别解密,前面0x40解密出来得到expo.exe,后面0x40解密出来为空
image.png

加载102项的资源
image.png

调用刚才的解密函数,将102项的资源解密为压缩包,压缩包内容如下
image.png

接着程序生成一个不定长度的随机字符串:
image.png

根据随机数,尝试获取系统文件夹并和刚才随机生成的字符串进行拼接形成特有的文件夹并切换目录
image.png

循环调用000405F9C函数,将压缩包的文件循环写入到指定目录下
image.png

开始向文件夹内写入压缩包中的文件
image.png

写入dat
image.png

写入ini文件
image.png

向s.dat写入大量的请求域名
image.png

ah.dat
image.png

写入Mini.exe
image.png

v.dll
image.png
I6.dll
image.png

expo.exe
image.png

I.dll
image.png

所有文件释放之后,生成随机字符串给expo.exe重命名
image.png

生成随机数作为参数,启动重命名之后的expo.exe
image.png

进程启动之后,执行bat指令删除文件以清除痕迹
image.png

至此,原始程序功能执行完毕。

后续样本分析

虽然原程序释放了很多文件,但是经过调试可知最后只调用了expo.exe,其他的文件应该都由expo.exe 进行调用,expo.exe由aspack加壳,直接调试脱壳即可:
image.png

脱壳之后的程序依旧由MFC编写
image.png

该程序主要是通过4197f0函数执行恶意功能:
image.png

虚拟环境检测

程序首先会通过421280函数进行一个虚拟环境检测。
对当前进程环境进行判断:
image.png

通过读取SYSTEM\CurrentControlSet\Services\disk\Enum 注册表键值获取当前磁盘信息
image.png

然后查询获取到的信息中是否包含了virtual、vmware、vbox等子串,若包含则说明运行在虚拟环境中,程序停止运行:
image.png

虚拟机检测之后,程序将会通过__indword(0x5658u) 执行尝试反调试
image.png

再次通过cpu进行虚拟环境检测:
image.png

通过com组件获取当前计算机信息,宽字符比较再次检测虚拟环境,包括vmware相关字符串、Virtualbox相关字符串、HVM相关字符串
image.png

其他功能

在通过虚拟机环境检测之后,程序会创建互斥体
image.png

尝试获取各类浏览器存储的隐私信息
image.png

尝试连接baidu
image.png

查找网吧特有进程判断是否在网吧环境中:
image.png

检测计算机是否安装了VPort2
image.png

创建多个线程执行后面的代码,包括获取信息,与指定的地址建立连接等,有其他工作,这里就不详细分析了,该有的一些技术点都已经总结到了,样本分析就到这里吧
image.png