样本介绍
行为介绍
1.创建spo0lsv.exe并运行
2.创建Desktop_.ini
3.感染文件
4.修改注册表
5.在磁盘根目录创建自启动脚本
6.关闭杀毒程序,关闭杀毒服务,并取消杀毒软件的开机启动
7.禁用任务管理器、注册表管理器等系统软件
8.局域网密码爆破,尝试传播
整体介绍
整个程序的执行流程是先执行两次判断,判断通过后执行三个功能函数
用思维导图的形式进行提炼
逆向分析
拿到程序后应该先进行查壳,发现使用了FSG2.0的壳
由于脱壳后涉及到IAT表的修复,这里采用脱壳工具进行脱壳,脱壳后可以看到程序是使用Delphi编写的
程序初始化
在这个部分中,程序主要进行了两次的字符串解密,并对解密后的字符串进行比对,如果比对通过,则往后继续执行,先介绍第一次解密,可以看到密钥为xboy,密文位于数据窗口中
解密的方式是简单的异或
解密后进行字符串比对,如果不一致则退出程序
对于第二个字符串解密也是类似的操作,不过密钥变成了whboy
功能模块一
当两次解密验证都通过后,首先进入功能模块一,而功能模块一的主要功能是释放恶意文件到系统目录,整体流程图如下
首先会获得当前文件的一个绝对路径,再拼接得到Desktop_.ini的路径
接着判断Desktop_.ini是否存在,根据文件的时间信息判断文件状态是否正常
如果不正常则将文件删除
接着会将当前的恶意文件读入内存(具体作用后面会说)
然后判断当前的文件是否为C:\WINDOWS\system32\drivers\spo0lsv.exe
如果是的话,程序继续往下运行功能模块二;如果不是,则会在C:\WINDOWS\system32\drivers\目录下创建一个spo0lsv.exe 并运行
功能模块二
对于功能模块二,它又有三个小功能
感染文件
对于感染文件,大致流程如下
首先它采用的方式是递归遍历,会先获得由所有磁盘名组成的字符串
对于每一个磁盘,拼接上通配符,进行递归遍历
对于文件夹,它有一个白名单,下面的这些文件夹以及文件夹里面的文件不会被感染,应该是作者并不想影响系统正常的运行
而对于白名单外的文件夹,恶意程序首先会判断文件夹中是否含有Desktop_.ini,如果存在则根据时间信息判断文件状态是否正常,如果不正常则删除。
恶意程序会创建Desktop_.ini,其中存放的内容为被感染的年月日,如2023-11-12,并将文件属性设置为隐藏
而对于文件,主要分为两种类型:可执行文件和脚本文件,不过还会删除GHO(系统备份文件),对setup.exe(程序安装文件)和NTDETECT.COM(系统引导文件)不进行感染
对于可执行文件的感染,大致流程如下图
首先会判断当前文件是否在运行
具体的做法是先拍摄进程快照
获取第一个进程的信息,判断是否为当前遍历的文件
如果不是,则获取下一个进程的信息
如果当前文件不在运行,则先将文件的内容读入内存
判断目标文件中是否含有感染标识WhBoy,如果有则不感染
如果没有,则先将内存中的恶意文件的内容覆盖目标文件
然后拼接得到感染标识字符串,然后将内存中目标文件的内容写到复制后的恶意文件内容末尾,最后在关闭前再将感染标识字符串写入目标文件内容末尾
即被感染后的可执行文件如下图所示,类似加了个壳
而对于脚本文件,感染流程大致如下图
首先会将文件的内容读入内存,然后解密得到恶意的iframe标签,也是简单的异或解密
然后判断当前是否含有恶意的iframe标签,如果有则不感染,如果没有,先会判断当前的脚本文件是否存在,以及检查时间信息是否正常
如果不存在,会创建文件,将内存中当前文件的内容写入文件
然后再将恶意iframe标签写入到文件末尾
感染后的脚本文件内容如下
创建脚本
创建脚本的大概流程如下
首先会判断是否存在A盘或B盘,如果存在则跳到函数末尾,可能是因为A、B盘属于软盘,大小只有1.44M,没有太大的感染价值
然后拼接得到路径,首先判断setup.exe是否存在
如果不存在则将内存中当前恶意文件的内容复制到setup.exe
如果存在setup.exe则判断他的内容是否是正确的,如果不正确则删除,再将内存中当前恶意文件的内容复制到setup.exe
接着判断autorun.inf是否存在,如果不存在则直接创建文件
如果存在则先将文件的内容读入内存
再判断内容是否正确,不正确则删除
删除后再创建新的autorun.inf
并将文件的属性设置为隐藏
尝试局域网传播
局域网传播的大致流程如下
首先会测试当前的网络状态
然后会先获得当前的ip地址
根据ip地址生成当前局域网的ip地址
生成ip地址后测试139端口和445端口
如果能够连接,则尝试传播
会先建立一个连接
将恶意文件复制为GameSetup.exe
获取远程主机的时间信息
为远程主机添加计划任务
尝试通过密码爆破登陆
功能模块三
功能模块三开启了六个定时器
定时器1
定时器1的流程图大致如下
首先他会进行提权,提升当前进程的访问权限,为的是能够修改注册表
然后它会关闭杀毒软件
具体是根据窗口的标题信息
退出一些系统软件,其中就包括任务管理器,注册表管理器
具体是根据进程信息
还对冰刃(杀毒软件)进行了退出,采用模拟按键的方式(可能是比较难退)
接着是对注册表的修改
首先会创建注册表项,将spolsv.exe添加到开启启动
接着会关闭隐藏文件的显示
定时器2
定时器2的流程图大致如下
首先是解密得到网址
读取网站的内容
对文件的格式进行处理
网站的内容应该是另一个网址,再远程下载文件
定时器3
定时器3的大致流程如下
首先是重复定时器2的功能,然后会关闭网络共享(为什么要关闭网络共享,我个人的理解是当前的机器可能已经被感染了,就不需要作为被感染的目标了)
定时器4
定时器4的大致流程如下
首先会暂停杀软相关服务
接着会删除杀软相关服务
最后会修改注册表,关闭杀软的开机启动
定时器5
定时器5的大致流程如下
解密得到网址,然后访问网址内容,应该是用来判断当前的网络状态
定时器6
定时器6的大致流程如下
同样是先解密得到网址,然后访问网址
远程下载文件并执行