勒索软件 -- js邮件恶意脚本分析
前一阵,勒索软件呈爆发趋势,并出现了针对中国的中文版本,有领导收到了带有恶意js附件的邮件,让我给分析下。js只是个下载器,实际会下载真正有恶意功能的pe文件实体。
经过一天的折腾,脱壳调试。单步跟踪运行,搞定给领导。特记录一下。
本次分析基于JS病毒样本(MD5:D00BE69072CF8A4549C692C7 88F58360)进行,JS调试环境为Visual Studio2012,相应的二进制PE文件(MD5:C4046F76C9518C5A45A8C555A87372F5)调试环境为 WinXP+IDA+Ollydbg。
分析方法为动态分析和静态分析。分别为:1,通过VS2012单步调试JS代码执行流程;2,静态分析+动态分析PE病毒文件。
1. JS代码分析
在CMD命令行窗口执行WScript.exe /x 34328_34328.js,可调出VS2012实时调试器进行动态调试跟踪。
图2-1 VS2012调试模式打开js样本
2 JS代码动态跟踪过程
2.1 通过CreateObject获取shell
如下图2-2所示,js代码通过CreateObject.WScript.shell获取shell,从而可以执行系统命令,进行相关的操作。
图2-2 CreateObject获取shell
如图2-3所示,所获取的shell对象具备执行命令的功能,如Exec()、run()等
图2-3 shell对象所具备的功能方法
2.2 判断当前系统环境,拼接参数
如下图2-4所示,代码判断当前系统环境是否为Windows,利用JS代码注释对相关变量参数进行拼接。得到局部变量如图2-5所示。
图2-4 判断当前环境,拼接参数
图2-5 局部变量显示已拼接好的参数
2.3 构造XMLHTTP请求下载PE恶意文件
通过构造XMLHTTP请求到固定地址(http://caston.com.sg/b7rtye)下载PE恶意文件,下载文件内容在请求对象的responseBody中。如图2-6和2-7所示
图2-6 指定地址下载PE文件
图2-7 所下载内容在responseBody中
2.4 保存所下载PE恶意文件
XMLHTTP请求结束后,通过readystate判断该请求结果状态是否完成,如果完成,则调用ADODB.Stream对象写入所下载的文件。如图2-8所示。
图2-8 判断请求状态,并写入文件
如下图2-9所示,程序将所下载文件存入用户文档目录下的C:\Documents and Settings\a\Local Settings\Temp\***.exe文件。
图2-9 存储文件当前路径
2.5 执行所下载的PE恶意文件
如下图2-10、2-11、2-12所示,JS代码调用shell对象中的run方法,来将所下载的PE恶意文件运行起来。
图2-10 调用run方法执行所下载文件
图2-11 调用run方法执行所下载文件
图2-12 调用run方法执行所下载文件
图2-13 所执行的PE文件
3 PE恶意代码分析
该PE文件为恶意程序,并采用了加密壳,执行后,会搜索受害终端所有文档文件,并采用RSA结合AES算法进行加密,另存为*.locky文件,以html页面和桌面图片的方式提示受害者访问指定网站进行敲诈活动。
3.1 修改注册表开机自启动运行
该样本首先修改注册表,以便下次开机启动运行。
图2-14 所执行的PE文件
3.2 判断当前操作系统环境
随后判断操作系统环境,根据操作系统环境和语言版本,设置不同的参数。
图2-15 检查操作系统环境
3.3 读取磁盘,并进行文件遍历
程序读取当前磁盘,并对磁盘文件进行遍历。
图2-16 获取磁盘
图2-17 获取磁盘空余空间大小
图2-18 遍历磁盘文件
图2-19 遍历磁盘文件
3.4 联网获取密钥
伪造Mozilla浏览器访问指定服务器,获取密钥文件。
图2-20 构造HTTP请求获取密钥
图2-21 构造HTTP请求获取密钥
图2-22 导入密钥
3.5 调用加密程序对文件加密
调用ADVAPI32接口进行文件加密操作,并将原文件加密后重命名为.locky结尾的密文文件。
图2-23 生产哈希值
图2-24 准备加密上下文
图2-25 执行加密操作
图2-26 写入加密后的文件内容
图2-27 将加密后的文件重命名,以.locky结尾
3.6生成HTML和bmp文件,修改桌面背景提示受害者
图2-28 修改桌面背景注册表
图2-29 声称html文件和bmp文件
图2-30 html文件和bmp文件内容
4.分析总结
经分析,JS样本功能是下载具有恶意功能的PE文件(文件名:qZkHEEIoa7m.exe)并执行;
所下载的PE文件(qZkHEEIoa7m.exe) 会搜索受害终端所有文档文件,并采用RSA-2048结合AES-128算法进行加密,另存为*.locky文件,以html页面和桌面图片的方式提示受害者访问指定网站进行敲诈活动;
不同的JS样本只是其下载PE恶意文件的URL地址不同,其他内容完全一样。