-
-
[翻译]分析有趣的恶意HTA文件
-
发表于:
2019-6-28 10:59
8652
-
## 分析有趣的恶意HTA文件
原文链接:https://inquest.net/Interesting-Analysis-of-a-Malicious-HTA-File
在本文中,我们剖析了一个我们在野外发现的[HTA文件](https://en.wikipedia.org/wiki/HTML_Application)。几天前我们在4月12日的VirusTotal上发现了这个实例。这个恶意软件实例使用了一些技术,特别是动态加载序列化的.NET库和sideload方式加载DLL,以逃避检测机制。
我们将研本最初于4月12日在我们的RADAR上探测到的样本。初始样本和一些相关报告如下:
- SHA256:7a2dd16bb0f74ebf7268b784d74dc494ee817a01c5ace5bbc12e21f943caf189
- Multi-AV:[VirusTotal](https://www.virustotal.com/#/file/7a2dd16bb0f74ebf7268b784d74dc494ee817a01c5ace5bbc12e21f943caf189/detection)
- [可下载的样本](https://github.com/InQuest/malware-samples/tree/master/2019-04-Malicious-HTA-file)
截至本博文发布时,VirusTotal上58个AV中有4个检测到此样本。接下来,我们将揭示有助于将恶意软件使用的技术,以便我们及早发现。
## 分析
此HTA文件包含三个脚本块:第一个和第三个脚本块包含JavaScript,第二个脚本块包含VBScript代码。两个JavaScript代码块都实例化了COM可见的各种.NET类,并调用它们的方法来执行不同的操作,例如base64编码字符串。例如,在第一个块中,定义了以下函数,它使用*System.Text.ASCIIEncoding*,*System.Security.Cryptography.FromBase64Transform*和*System.IO.MemoryStream* .NET类来解码base-64编码的字符串。
在第三个脚本块中,有几个.NET类用于动态加载序列化的.NET dll并使用它的类,这个类显然由[@tiraniddo](https://twitter.com/tiraniddo)的[DotNetToJScript](https://github.com/tyranid/DotNetToJScript)工具生成,[如](https://twitter.com/tiraniddo)[@bartblaze](https://github.com/tyranid/DotNetToJScript)所指出的[那样](https://twitter.com/bartblaze/status/1117097230031360000)。
在上面的代码块中,so变量首先通过调用*base64ToStream*函数来解码,该函数在第一个块中定义。然后通过调用*System.Runtime.Serialization.Formatters.Binary.BinaryFormatter*实例的*Deserialize_2*方法对 解码后的字符串进行反序列*化*。接下来,在第51行实例化类HTA,然后通过在第56行传递包括da变量的几个参数来调用其pink方法。
到目前为止,我们了解到字符串包含a.NET dll。要提取此二进制文件,我们首先需要使用base-64解码器解码so字符串并将其保存在文件中。我们知道a.NET dll文件是PE格式,因此以MZ标记开头,并且很可能以一长串空字符结束。通过了解这一点,我们可以使用诸如Hexinator之类的十六进制编辑器轻松地了解嵌入在序列化对象中的.NET二进制文件。
如图3和图4所示,PE二进制文件从0x04C7开始,到0x1CE3结束。通过转储此部分,我们可以获得嵌入式.NET库。
接下来,我们使用ILSpy对.NET二进制文件进行反编译,并查看其代码。正如前面提到的,JavaScript代码创建了一个*HTA*类的实例,然后调用它的*pink*方法。因此,让我们开始研究这种方法,看看它背后的逻辑是什么。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-6-28 11:04
被dodohit编辑
,原因: