WSH RAT分析报告
0x00 概述
基本信息
样本名称 | 4gdrwceq60b7dbl.sct |
---|---|
样本类型 | 蠕虫、远控木马 |
样本大小 | 394KB (403,845字节) |
MD5 | 69B7D326575C5616D82645960B3D081A |
简介
经过分析,该恶意样本是一个js脚本(伪装成.sct文件),当该样本执行起来,会再释放出两个js文件,并添加开机自启动,感染可移动设备(也通过可移动设备进行传播),并与两个C&C服务器进行交互,从C&C服务器上接收指令,执行不同的操作。其远控功能完事,能释放多种模块,执行不同的指令等。
流程图
0x01 样本细节详细分析
提取JS代码
该样本是一个Script Component格式的文件,属于文本文件,这里直接用记事本打开该文件,发现文件中存在大 量的JS代码,初步判断这是一个由JavaScript编写的恶意代码,通过伪装成.sct文件进行传播的。将其中JS全部拷贝至一个js文件中,本文将其命名为1.js,继续进行下一步分析。文件内容如下:
样本行为分析
1.文件写入行为分析
运行提取出来的JS代码,然后对所有子进程的写入行为进行过滤,发现共写入了4个文件,分别在下表的两个路径中,各释放了taskmgr.js和aFCnKVCdfY.js两个JS文件。
1 | C:\User\<UserName>\AppData\Roaming |
Monitor抓取到的行为如图1:
然后对进程taskmgr.js的文件写入行为进行过滤,发现在taskmgr.js在C:\User<UserName>\AppData\Roaming路径下释放了aFCnKVCdfY.js,并且将自身复制到开机自启动目录下,如图1.2:
图1.2 然后对进程aFCnKVCdfY.js的文件写入行为进行过滤,发现aFCnKVCdfY.js将自身复制到开机自启目录下,如图1.3:
图1.3
2.进程分析
- 查看进程树,运行提取出来的JS代码程序后,迅速结束自身。然后运行释放在AppData中的taskmgr.js。如图2:
执行起来的两个脚本文件,进行了大量的网络请求。并且从中不难看出,每个脚本都在不断的与一个固定的域名进行通信,且两个脚本所通信的域名也并不相同。如图4:
运行起来的两个脚本文件,分别添加了两个自启动项,分别为:
1 | HKCU\Software\Microsoft\Windows\CurrentVersion\Run\taskmgr.js |
Monitor抓取的修改注册表行为,如图5:
释放文件taskmgr.js
打开提取出来的1.js文件,发现该文件中存在大量经过特殊处理的数据。然后经过分析,1.js这个脚本文件主要是将这些经过加工的数据还原,然后再将还原后的数据写入C:\Users\john\AppData\Roaming\taskmgr.js文件中。也就释放出了Appdata目录下的taskmgr.js文件了,行为可见行为分析图1.1所示。1.js代码执行代码如图:
分析taskmgr.js:解密并执行
查看taskmgr.js的代码,能发现该代码中又有大量加密过的数据。经过分析,taskmgr.js脚本主要就是将经过替换加密的数据还原,并调用eval()函数,执行解密后的数据。由于该脚本的执行逻辑比较复杂,为了读者能更好的理解,这里将调主要的执行步骤加以说明。
替换过程:首先通过正则表达式选中文中所有的!- %,然后通过函数replace将正则选中的(!- %)全部替换为A,如下图:
解密过程:先初始化一个元素tmp,将tmp.datatype设置为base64,再将tmp.text设置为上一步替换后的数据,然后通过nodeTypeValue属性,将替换后的数据解密出来,然后再转换为字符串赋值到.oneFam1ly[1].item。此时的.oneFam1ly[1].item就是最终要执行的代码。如图:
执行过程:先通过meatSTEW执行,执行完返回eval(),然后再通过eval执行上一步解密出来的数据。,如图:
分析taskmgr.js所执行的解密代码
这里以同样的方式进行解密,先将加密数据中的!-%替换为A,再通过notepad++进行解密,就能获取到taskmgr所执行的代码,将解密后的代码保存下来并命名为taskmgr_new_1,代码如下图:
释放文件aFCnKVCdfY.js
执行的task_new_1,首先释放了文件aFCnKVCdfY.js,先获取Appdata的环境变量,再进行拼接路径,然后将加密的数据写入该文件中,行为可见行为分析图1.2,执行代码如图:
然后下面的部分就先不详细分析了,因为下面的部分与后面将要分析aFCnKVCdfY.js所执行的解密数据的内容基本都是相同的,所以会在后面分析aFCnKVCdfY.js所执行的解密数据中进行详细分析。而taskmgr.js所执行的解密数据中与aFCnKVCdfY.js所执行的解密数据,唯一的不同在于:C&C服务器不同,如图:
taskmgr_new_1.js所访问的C&C服务器 globalization.duckdns.org:50071
分析aFCnKVcdfY.js:解密并执行
经过对比发现释放出来的文件aFCnKVcdfY.js,与之前分析的taskmgr.js,除了要执行的代码不同外其他都是一样的。因此也就如同taskmgr.js一样,是解密数据并执行,只不过执行的代码不同罢了。这里就不在做过多的分析。两个文件的对比图如下:
分析aFCnKVcdfY.js所执行的解密代码
初始化信息
初始化后面要用到的数据,如:C&C服务器,和文件下载路径installdir,以及开机自启动路径等信息。如图:
样本主要行为函数分析
初始化完数据后,代码进入主要执行部分,接下来将逐个分析该恶意样本能做什么做了什么。它的主要行为函数段如下图:
初始化实例,添加自启动,确保文件已运行
函数instance,修改注册表项,并调用函数upstart添加开机自启动项,并检查释放出来的文件是否已运行,若没运行便启用。如图:
其中添加自启动项函数upstart(),修改注册表
HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run<filename>
HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run<filename>并将自身文件拷贝到installdir目录下和开机自启动文件目录下,代码如下图:
感染可移动硬盘,实现传播
函数install,首先判断磁盘类型,当磁盘类型为可移动磁盘时,将自身复制到可移动磁盘中,并添加隐藏和系统属性,如图:
然后再遍历所有文件,将所有文件属性设置为隐藏,并创建同名文件的快捷方式,该快捷方式执行命令为:
1 | cmd.exe /c start <拷贝后的js文件(病毒文件本身)> & <可移动磁盘中的原文件> & exit |
并通过查询注册表,获取文件的图标,将快捷方式的图标替换为文件原本图标。这样做的目的就是迷惑使用者打开伪装成正常文件的快捷方式,而该快捷方式会执行恶意程序,最终达到传播感染的目的。代码如图:
然后还遍历了所有文件夹,并执行了跟文件一样的操作,目的依旧是迷惑使用者运行恶意程序,最终实现通过可移动设备传播感染的目的。代码如图:
向C&C发送信息,并接受指令
函数post,将获取到的主机信息,发送到C&C服务器,并返回接收到的指令。如图:
函数post发送的数据的域名会根据函数的第一个参数,进行改变,如下图中post的 第一个参数为“is-ready”,那么该post发送数据的域名就为:unknownsoft.duckdns.org:7744/is-ready,也就是在行为分析中抓到的大量请求包的域名,可见行为分析图4。
其中函数information,会获取主机信息。获取的信息如下表:
获取的主机信息有: 获取逻辑磁盘卷序列号信息 获取主机名信息 获取用户名信息 获取所含有的杀软信息 获取操作系统版本信息
information函数如下图:
根据接收的指令,执行相应操作
该样本不仅传播扩散自身,样本本身也是一个强大的远控木马。根据从C&C服务器接收到的指令,执行相应的操作,如图:
其中所有的指令及功能都汇聚在下表中:
接收到的指令 执行相应的操作 disconnect 断开连接,关闭程序 reboot 重启操作系统 shutdown 关闭计算机 excecute 执行接收到的指令2 install-sdk 下载SDK文件,并解压 get-pass 获取浏览器密码,并解密后的密码发送到C&C服务器 get-pass-offline 离线模式获取浏览器密码,大体与get-pass一样 update 更新<installdir目录>下的文件 uninstall 删除自身,清除所有远控木马程序的痕迹 up-n-exec 从C&C服务器,下载文件,并执行 bring-log 将<wshlogs\cmd[1]>文件中保存的日志内容,发送到C&C服务器 down-n-exec 从指定URL,下载文件,并执行 filemanager 从指定URL下载fm-plugin.exe,并运行 rdp 从指定URL下载rd-plugin.exe,并运行 keylogger 从指定URL下载kl-plugin.exe,并以参数为0运行 offline-keylogger 从指定URL下载kl-plugin.exe,并以参数为1运行 browse-logs 将<installdir\wshlogs>文件夹下的所有文件和文件夹信息发送到C&C服务器 cmd-shell 执行接受到的DOS命令,并将执行结果发送到C&C服务器 get-processes 将获取当前进程信息,发送到C&C服务器 disable-uac 关闭UAC,并向C&C服务器更新状态 check-eligible 检测指定文件是否存在,并向C&C服务器更新状态 force-eligible 检测当前执行权限,可执行DOS命令,并向C&C服务器更新状态 elevate 以管理员权限运行 if-elevate 判断执行参数中有无“elevated”,并将判断结果发往C&C服务器 kill-process 根据接收到的PID,结束指定进程 sleep 根据接收到的值,进行睡眠
0x02 样本溯源
C&C服务器 |
---|
unknownsoft.duckdns.org:7744 |
globalization.duckdns.org:50071 |
根据下图中的skype的信息,可以查找到该样本的相关信息,搜索结果与该样本大致一致。可知该样本是名为H-worm的蠕虫病毒变种。
继续查H-Worm,就能查到其他厂商相关的分析报告,可从中知该样本是基于VBS(Visual Basic Script)的Houdini蠕虫(H-Worm)的最新变种,其中Houdini蠕虫最初是在2013年开发和传播的。
链接为:http://www.mottoin.com/detail/4066.html
0x03 查杀方案
利用自身脚本进行查杀
由于该远控软件中有删除自身的功能,且删除自身还是比较干净,因此可以利用该代码进行查杀,代码如下:
1 | function uninstall() //函数:卸载远控木马,清除所有远控木马程序的痕迹 |
直接复制出来,保存到一个js文件,然后运行就可以进行查杀。
0x04 总结
该恶意样本是H-worm病毒的变种,是蠕虫病毒与远控木马的结合,伪装成.sct文件,进行传播。当该样本执行起来,会自动添加自启动项,感染可移动设备(可通过移动设备进行传播),并会从C&C服务器上接收指令,执行不同的操作。该样本的远控功能完事,能够盗取受害者的网络浏览器和电子邮件客户端的密码、远程控制目标计算机、上传、下载执行文件以及执行远程脚本和命令等,同时它还具有键盘记录,对抗安全软件等多种功能。