首页 > 系统相关 >【cobalt strike】解码用于加载cobalt strike shellcode的简单.hta加载器过程

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

时间:2025-01-02 23:19:16浏览次数:1  
标签:脚本 CyberChef 字节 解码 cobalt strike shellcode 可以 加载

#cobalt strike

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

哈希:2 c683d112d528b63dfaa7ee0140eebc4960fe4fad6292c9456f2fbb4d2364680

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

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

一、使用文本编辑器进行分析

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

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

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

二、解码Base64

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

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

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

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

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

三、PowerShell脚本分析

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

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

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

四、解码十六进制字节使用CyberChef

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

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

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

六、用CyberChef验证ShellCode

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-r :告诉SpeakEasy文件是shellcode;

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

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

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

参考及来源:

https://embee-research.ghost.io/malware-analysis-decoding-a-simple-hta-loader/

标签:脚本,CyberChef,字节,解码,cobalt,strike,shellcode,可以,加载
From: https://www.cnblogs.com/o-O-oO/p/18648912

相关文章

  • 构建PDF文件问答系统——从文档加载到检索增强生成
    技术背景介绍老铁们,相信你们都知道,PDF格式的文档在信息存储上有它的独有之处,尤其是那些长篇大论的年报或者技术白皮书之类。不过问题来了,这些文档里的非结构化数据本身不太容易直接喂给语言模型(LLM)。所以,今天我们就来聊聊如何搭建一个能从PDF文件中回答问题的系统——也就......
  • worker加载js脚本如何解决跨域?
    在前端开发中,当你尝试从一个域(例如:http://example.com)的Web页面加载另一个域(例如:http://api.another-example.com)的JavaScript脚本时,可能会遇到跨域问题。这是由浏览器的同源策略(Same-OriginPolicy)导致的,它限制了一个源的文档或脚本与另一个源的资源进行交互。为了解决跨域......
  • 虚拟滚动加加载的原理和实现思路
    以下是关于虚拟滚动加加载的原理和实现思路:一、虚拟滚动原理1.基本概念可视区域:用户在屏幕上看到的部分,是实际渲染内容的窗口。只有处于可视区域内的元素才会被渲染到DOM中,而其他部分不会被渲染,从而减少DOM元素的数量,提高性能。2.实现思路数据存储与显示:存储......
  • 如何实现网页加载进度条
    基于HTML5和JavaScript的简单进度条实现原理:利用window.onload事件和document.readyState属性来跟踪页面加载进度。document.readyState有不同的状态值,如loading(正在加载)、interactive(文档已被解析,“交互时间”开始)和complete(文档和所有子资源已完成加载)。实现步骤:首先,在HT......
  • 常见图片懒加载方式有哪些
    原生JavaScript实现懒加载原理:利用浏览器的可视区域(getBoundingClientRect函数可以获取元素相对于视窗的位置)来判断图片是否进入可视区域。当图片进入可视区域时,将图片的src属性设置为真实的图片地址,从而实现懒加载。实现步骤:首先,将图片的src属性设置为一个占位符(通常是一......
  • 请说说webpack的模块加载原理
    Webpack的模块加载原理是Webpack作为前端模块化打包工具的核心机制之一,它允许Web应用将各种资源视为模块,并通过特定的加载机制来组织和打包这些模块。以下是Webpack模块加载原理的详细解释:初始化:Webpack首先会读取配置文件(通常是webpack.config.js),从中获取项目的入口文件、输出......
  • vue-router如何实现懒加载?
    在Vue.js项目中,使用vue-router进行路由管理时,懒加载(也叫延迟加载)是一种优化策略,它允许我们按需加载路由对应的组件,而不是在应用启动时一次性加载所有组件。这可以显著提高首屏加载速度,特别是对于大型应用来说。vue-router支持基于Vue异步组件的懒加载。下面是如何在vue-router中......
  • Cobalt Strike流量改造
    1:证书设置这里我们直接伪造成bilibili的通过网页查看证书详情:2:上线流量设定这里还是比较简单的请求路径请求地址这里可以依据实际情况改比如这里直接cv3:心跳流量这里我设置的是bilibil对于内容的搜索这里我们只需要在httpget里面修改就行了其他的......
  • 在Python中加载OneNote文档的指南
    #在Python中加载OneNote文档的指南老铁们,今天咱们来聊聊如何在你的Python应用中从OneNote加载文档。这波操作可以说是相当丝滑,尤其是当你想整合微软的服务到你的应用里。对于需要处理OneNote数据的开发者来说,掌握这项技术绝对是个加分项。##技术背景介绍在当今互联......
  • 为什么我的网站图片加载速度非常慢?
    网站图片加载速度缓慢不仅会影响用户体验,还可能导致搜索引擎排名下降。为了提高图片加载速度,您可以从以下几个方面入手进行优化:压缩图片文件:图片文件过大是导致加载慢的主要原因之一。使用专业的图片压缩工具(如TinyPNG、ImageOptim等)可以在不影响视觉质量的前提下显著减小文件......