BestieLoader 恶意软件分析

BestieLoader 恶意软件分析

图为:ChatGPT 对“封装在坦克中的拟人化恶意软件”的演绎。

W在我的帖子历史记录中,我花大量时间与渗透测试人员和红队成员交谈也就不足为奇了。它们是有关威胁行为者正在使用的 TTP 的重要信息来源。它们也是“安全”的真实恶意软件的重要来源。

今天这里的样本是由我的一位朋友和同事分享的,他们允许我在以下情况下对这个样本进行撰写:

  • 他们想保持匿名。

  • 恶意软件样本不会上传到任何沙盒,无论是公共的还是其他的。

  • 我不会透露文件哈希值。

不过,我可以谈谈它的活动和工件。到目前为止,这是一种未知类型的恶意软件,在红队参与期间仍在积极使用,因此我非常感谢我被允许写博客来介绍它的分析。

谢谢****!

坦白说,我仍在学习 x64 汇编语言和逆向工程恶意软件。这是一个缓慢的过程,因为它是致密的材料。但是,与我之前的恶意软件分析文章相比,这篇文章不那么“让我们一起学习”。我只是展示我的发现。

最后,如果您阅读本文并觉得我遗漏或误解了某些内容,请随时提供建议或更正。

背景

这更像是一个灰盒分析。在开始分析此恶意软件之前,我基本上对它了解一些信息:

  1. 它基于我朋友从 Maldev Academy 学到的东西。

  2. 它有一个在运行时执行的调试器。(我忽略了)

  3. 它旨在绕过防病毒软件。

要查看恶意软件的运行情况,我解压缩并执行示例,并启用并运行整个 Windows 安全套件:

BestieLoader 恶意软件分析

Defender 甚至没有注意到。

工具

与往常一样,我将从两个 VM 开始工作:

  • FLARE-VM — 我将在这里执行大部分静态和动态主机分析。

  • REMnux — 我的 DNS 服务器的位置,以及我将执行大部分动态网络分析的位置。

我将使用以下工具:

  • INetSim — DNS 服务器

  • 切割机 — 拆解器

  • IDA — 反汇编器

  • x64dbg — 调试器

  • ProcMon — 动态分析

  • RegShot — Windows 注册表分析

  • System Informer — 动态分析

静态分析

这是适用于 Windows 的 64 位可移植可执行文件:

BestieLoader 恶意软件分析

在 Cutter 中,我可以看到这是用 C 语言编写的:

BestieLoader 恶意软件分析

在静态字符串中,有一个明确的指示符表明这是 offset 处的 shellcode 加载器:0051797C

BestieLoader 恶意软件分析

此外,静态字符串中还有相当多的 UUID:

BestieLoader 恶意软件分析

上述 shellcode 在 UUID 中编码。以下字符串进一步支持了这一点:

BestieLoader 恶意软件分析

UuidFromStringA通常用于解码 UUID 编码的数据并将其写入内存。

这可以在 main 函数中的 Cutter 等 dissambler 中进一步观察到:

BestieLoader 恶意软件分析

main 函数中还可以找到:

BestieLoader 恶意软件分析

为了了解其功能,在静态字符串中发现了多个 Windows API 函数调用。这些函数调用也可以在 IDA 的 Imports 选项卡中看到:

BestieLoader 恶意软件分析

一些最著名的电话是:

  • IsDebuggerPresent — 这通常是一个反调试调用,但在本例中,我实际上认为此调用是针对前面提到的在运行时打开的调试器。

  • GetSystemTimeAsFileTime — 这将获取当前系统日期和时间。它可用于枚举或反调试。

  • GetProcAddress — 用于获取 DLL 中函数的内存地址。它用于规避,因为它避免了必须直接调用函数。

  • HeapAlloc — 用于从堆分配内存块。这用于工艺注入。

我想重申,该恶意软件旨在绕过 AV,而不是绕过 EDR。正如我的朋友向我解释的那样,这是因为恶意软件进行的上述几个 Windows API 函数调用通常被 EDR 工具检测到:

  • VirtualAlloc — 分配将用于存储进程注入有效负载的内存。

  • VirtualProtect — 将已分配内存的内存保护更改为可执行。

  • CreateThread — 为 shellcode 执行创建新线程。

调试

At 有一条指令,该指令在内存地址处读取 中的值所指向的 64 位值。然后它将该值复制到 register:00007FF79D861153movrsircx

BestieLoader 恶意软件分析

这通常用于准备函数调用,在本例中为 .UuidFromStringA

当我浏览这些说明时,我意识到这是一个不断迭代 UUID 值的循环,并且可能是之前找到的各种 UUID 字符串解码的指令集:

BestieLoader 恶意软件分析

该指令跳回到该指令,表明这是一个循环。当我逐步执行说明时,这得到了支持,将我返回到:jbmov rcx,qword ptr ds:[rsi]00007FF79D861153

BestieLoader 恶意软件分析

一个循环。

BestieLoader 恶意软件分析

另一个循环。

BestieLoader 恶意软件分析

还有另一个。

由于实际上有数万行 UUID 需要解码,因此我继续。

动态分析

从网络的角度来看,没有太多有趣的内容,因此我将重点介绍主机构件。

在 ProcMon 中,有证据表明引爆后存在注入过程:WerFault.exe

BestieLoader 恶意软件分析

查看对 Windows 注册表的引爆后更改的更改,添加了多个有趣的键和键值。

钥匙:

BestieLoader 恶意软件分析

值:

BestieLoader 恶意软件分析

由于添加与 WER 相关的注册表项是为了临时存储数据以避免被 AV 检测到,这可能是解码的 UUID 编码的 shellcode 的结果。

另外值得注意的是已删除的注册表项:

BestieLoader 恶意软件分析

删除这些密钥对于表明恶意软件旨在禁用或破坏组策略非常重要。

结论

根据恶意软件的行为和来源,我将为您命名为 BestieLoader。(是的,我知道我在标题中剧透了它……

我必须说,这个恶意软件真的没有带来很多唾手可得的成果。我必须努力寻找任何有意义的东西。

我的朋友并不是唯一一个向我提供样本的受过 Maldev Academy 培训的恶意软件开发人员,一个普遍的主题是这些样本非常难以分析,至少在我目前的水平上是这样。在我可以完全对它们进行逆向工程之前,我不会觉得我从他们身上得到了多少,这只需要时间和耐心。

x86–64 程序集资源


 http://6.s081.scripts.mit.edu/sp18/x86-64-architecture-guide.html? 

https://gist.github.com/justinian/385c70347db8aca7ba93e87db90fc9a6

https://cs.brown.edu/courses/cs033/docs/guides/x64_cheatsheet.pdf


其它相关课程

QT开发底层原理与安全逆向视频教程

BestieLoader 恶意软件分析




  • BestieLoader 恶意软件分析

  •  

  • BestieLoader 恶意软件分析


 

linux文件系统存储与文件过滤安全开发视频教程(2024最新)


BestieLoader 恶意软件分析


linux高级usb安全开发与源码分析视频教程


BestieLoader 恶意软件分析


linux程序设计与安全开发


BestieLoader 恶意软件分析


  • windows恶意软件开发与对抗视频教程


  • BestieLoader 恶意软件分析

 


 



  • BestieLoader 恶意软件分析


  • windows

  • BestieLoader 恶意软件分析

  • windows()

  • BestieLoader 恶意软件分析

  • USB()

  • BestieLoader 恶意软件分析

  • ()

  • BestieLoader 恶意软件分析

  • ios

  • BestieLoader 恶意软件分析

  • windbg

  • BestieLoader 恶意软件分析

  • ()

  • BestieLoader 恶意软件分析BestieLoader 恶意软件分析BestieLoader 恶意软件分析

  • BestieLoader 恶意软件分析

  • BestieLoader 恶意软件分析

  •  

  • BestieLoader 恶意软件分析



原文始发于微信公众号(安全狗的自我修养):BestieLoader 恶意软件分析

版权声明:admin 发表于 2024年11月18日 上午7:45。
转载请注明:BestieLoader 恶意软件分析 | CTF导航

相关文章