解码用于加载cobalt strike shellcode的简单.hta加载器过程 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

解码用于加载cobalt strike shellcode的简单.hta加载器过程

xiaohui 技术 2023-12-18 11:43:00
31950
收藏

导语:本文使用CyberChef解码.hta脚本,并使用SpeakEasy Emulator分析了Shellcode。

我们将在本文介绍解码用于加载cobalt strike shellcode的简单.hta加载器的过程,接下来用文本编辑器执行初始分析,并使用CyberChef提取嵌入的shellcode,将使用模拟器(SpeakEasy)验证shellcode,使用Ghidra执行一些基本分析。

哈希:2 c683d112d528b63dfaa7ee0140eebc4960fe4fad6292c9456f2fbb4d2364680。将zip文件下载到一个安全的虚拟机中,并在感染密码的情况下解压缩,将显示一个.hta文件。.hta文件本质上是一个带有嵌入式脚本的html文件,我们的目标是定位和分析嵌入的脚本。

1.png

由于.hta是一种基于文本的格式,我们可以直接在文本编辑器中打开该文件。

使用文本编辑器进行分析

在文本编辑器中打开该文件将显示一小段混淆的代码,后面跟着一个大的base64 blob。

2.png

出于分析目的,我们不需要解码初始部分,我们可以通过PowerShell命令的存在和分解的wscript.shell来判断这一点。它通常从javascript执行命令。

3.png

使用初始脚本只执行base64 blob的方法,我们可以直接解码base64。如果base64 blob不能解码,可以返回到初始片段进行分析。

解码Base64

可以继续突出显示整个base64 blob并将其复制到cyberchef,现在可以尝试解码它。

4.png

将base64内容复制到CyberChef中,可以看到字符之间带有空字节的明文,这通常表示utf-16编码,很容易通过“decode text”或“remove null bytes”删除。

5.png

通过在配方中添加“remove null bytes”,可以获得看起来像PowerShell脚本的解码内容。

6.png

使用“解码文本”和“utf-16”也可以很好地工作。

7.png

这两个选项都会产生一个解码的powershell脚本,可以将其复制到一个新的文本编辑器窗口中。

8.png

PowerShell脚本分析

现在将PowerShell脚本放入文本编辑器中,我们可以继续扫描关键字或任何可能指示下一步操作的内容。

在脚本中间的十六进制字节的大blob,以及大量的api的引用,可用于分配(VirtualAlloc),写入(memset)和执行(CreateThread)内存中的东西。

9.png

在脚本的底部有一些小的东西。该脚本休眠60秒,如果初始脚本失败,会尝试切换到64位版本的Powershell。

解码十六进制字节使用CyberChef

为了分析十六进制字节,我们可以复制它们并尝试使用CyberChef解码它们,通过复制以下字节并将它们移动到CyberChef来实现。

10.png

一旦复制,字节可以用一个简单的“from十六进制”操作解码。在本例中,逗号和0x被自动识别。

11.png

我们还可以看到,虽然内容被“解码”,但看起来仍然不太好。

12.png

用CyberChef验证ShellCode

此时,验证我们的假设,即解码的内容是shellcode。一种常见的方法是在shellcode中查找明文值(ip, api名称),这需要做额外的分析。

13.png

使用CyberChef,可以通过尝试反汇编字节来验证我们的理论,即内容是shellcode。我们需要将值转换为十六进制,然后使用CyberChef的Disassemble x86操作。

14.png

在这里,可以看到字节已经成功反汇编。

1.没有明显的红色部分表示反汇编失败;

2.CLD :这是shellcode执行的第一个常见命令。

还有其他一些指标,如早期调用操作和错误0D操作,这些都是Cobalt Strike shell代码常见的情况。这些模式看起来很奇怪,但在看过一些shellcode示例之后就很容易识别了。

现在,我们可以假设数据是shellcode,并通过尝试执行它来做进一步的验证。

此时,可以继续分析反汇编字节,我们需要对x86指令有所熟悉。尝试并执行代码通常要容易得多。特别是对于较大的shellcode示例。

通过在模拟器中执行来验证ShellCode

为了进一步验证数据是shellcode并尝试确定它的功能,我们可以将其保存到一个文件中,并尝试在模拟器或调试器中运行它。

在这种情况下,可以使用FireEye的SpeakEasy工具。你可以在这里阅读SpeakEasy,并从GitHub下载。

在运行SpeakEasy之前,我们可以先下载可疑shellcode的原始字节,确保删除十六进制和反汇编x86操作。

15.png

你可以将文件命名为任何你喜欢的名称,本文将其命名为shellcode.bin。

16.png

接下来,可以用以下命令在SpeakEasy工具上打开命令提示符。

-t :要模拟的目标文件;

-r :告诉SpeakEasy文件是shellcode;

-a x86 :告诉SpeakEasy假定x86指令。这几乎总是x86或x64,如果其中一个失败,可以试试另一个。

17.png

按下enter键,SpeakEasy就可以成功地模拟代码。在这里我们可以看到,为了从51.79.49[.]174:443下载一些东西,进行了许多api调用。

18.png

现在,可以安全地假设整个脚本和shellcode的主要目的是充当下载程序。此时,还可以调查到该IP地址的连接,并确定是否成功下载和执行了任何内容。

文章翻译自:https://embee-research.ghost.io/malware-analysis-decoding-a-simple-hta-loader/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务