逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件


逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

逆向工程是最受追捧和最有价值的网络安全/信息安全技能之一。很少有人能够熟练掌握这项备受追捧的技能。Ghidra 是美国间谍机构 NSA 推出的一款相对较新且免费的逆向工程工具。

在本教程中,我们将研究勒索软件历史上最臭名昭著的恶意软件之一  WannaCry。它感染了全球 30 多万台计算机,如果不是 Marcus Hutchens 又名 MalwareTech 的工作和技能,它可能会造成严重破坏。Marcus Hutchens 获得了此恶意软件的副本,并立即开始检查其代码。在其中,他发现了通常被称为“终止开关”的东西。实际上,他发现的是用于此勒索软件的命令和控制 (C&C) 的 URL。当他意识到该 URL 尚未注册时,他便注册了。通过这样做,他拒绝了勒索软件作者对其恶意软件的控制权,从而拯救了互联网!

在这里,我们将研究恶意软件的初始感染载体,寻找 URL 并尝试了解它如何启动其恶意活动。

步骤#1:准备环境并安装 Ghidra

对于本教程,我建议您使用装有 Kali 或其他操作系统的 VM。这是为了确保您不会意外将 WannaCcy 释放到其他系统或网络中(这通常是处理恶意软件时的良好做法)。接下来,下载 WannaCry。您可以从许多地方获取它,例如 VirusTotal。

确保您位于 Ghidra 目录并启动 Ghidra。

kali > sudo ./ghidraRun

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

当 Ghidra 启动时,通过单击文件 > 新建项目来打开一个项目。

然后将 WannaCry 勒索软件文件拖放到龙上或转到文件 -> 导入文件。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

文件导入后,您将看到如下所示的屏幕,其中包含该文件的所有详细信息。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

接下来,您将看到一个详细列出分析选项的屏幕。保留所有默认选项,并添加反编译器参数 ID(这将为函数创建参数和局部变量。对于大型文件,这可能会增加大量分析时间,但对于 WannaCry,这不会造成任何问题)。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

当 Ghidra 分析 WannaCry 时,您可能会收到以下错误消息。不用担心,只需单击“确定”即可。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

现在您应该拥有 Ghidra 的以下用户界面以及来自 WannaCry 的数据。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

步骤2:找到Main()函数

下一步是寻找启动 WannaCry 恶意软件的函数。正如我们将恶意软件加载到 Ghidra 中时所注意到的,WannaCry 是一个可移植可执行文件 (PE)。每个 Windows 程序都有一个入口点,通常名为 WinMain 或 wWinMain。请参阅下面的 Microsoft 文档。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

当我们进入符号树并展开函数文件夹时,我们看不到 WinMain 或 wWinMain 函数,但我们确实看到了一个入口函数。这可能与 WinMain() 具有相同的用途。让我们检查一下。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

双击它,它将同时出现在列表窗口和反编译窗口中。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

步骤#3:找到“终止开关”

现在,向下扫描反编译窗口,我们可以看到此函数调用了另一个函数 FUN_00408140。双击它进行分析。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

您应该会立即在列表窗口和反编译窗口中看到一个 URL。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

它似乎将 URL 放入名为puVar3的变量中。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

一步扫描反编译器,我们可以看到对InternetOpenUrlA函数的引用。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

我们可以通过 Microsoft Technet 进行搜索,发现InternetOpenUrlA函数正如您所期望的那样,它调用并打开指定的 URL。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

InternetOpenUrlA下方,我们看到几行使用InternetCloseHandle的代码。这些代码指定如果 iVar2 为 0 ,则关闭句柄并运行FUN_00408090,否则关闭句柄并终止程序。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

这是 Marcus Hutchins 在第一次检查和分析 WannaCry 时注意到的。这是命令和控制 (C&C) URL 的 URL。如果程序尝试访问该 URL 并返回 0,则程序会自动终止。如果它没有终止,它将执行FUN_00408140。让我们来跟踪FUN_00408140。

步骤#4:顺其自然

下一步,让我们按照FUN_00408140 中的流程操作。转到 Ghidra 顶部的 Window 选项卡,然后单击Function Graph

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

如上所示,Ghidra 为我们提供了一个易于阅读的此函数流程图,包括上游和下游。您可以看到入口函数位于 FUN 00408140 的上游,其下游是InternetOpenA、InternetOpenUrlA、InternetCloseHandle和FUN_00408090

返回反编译窗口并双击FUN_00408090来尝试确定它的作用。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

反编译窗口应如下所示。

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

请注意,反编译器显示恶意软件尝试OpenServiceA。这包括一个打开mssecsv2.0_004312fc的参数。这似乎打开了 Microsoft 安全服务。现在这很有趣……

当我们搜索微软的 Technet 时,我们发现并不存在这样的服务。该恶意软件正在启动一项看似合法的 Microsoft 安全服务的新服务,以掩盖其真实性质。

概括

2017 年,勒索病毒 Wannacry 有可能对互联网造成毁灭性打击。它利用最近发布的 EternalBlue 漏洞进入计算机系统,然后加密所有数据,直到用户支付赎金。显然,朝鲜为了在 Windows 系统修补之前匆忙发布该病毒而开发了该病毒,他们未能掩盖或混淆该恶意软件,最重要的是,未能注册命令和控制域。多亏了 Marcus Hutchins,他检测到了“终止开关”并解除了这种可能造成破坏的勒索病毒,从而减轻了其影响。

现在您已经掌握了同样的技能,也许您将成为下一个拯救互联网的人?


https://hackers-arise.net/2023/12/11/reverse-engineering-malware-ghidra-part-3-analyzing-the-wannacry-ransomware/



感谢您抽出

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

.

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

.

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

来阅读本文

逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

点它,分享点赞在看都在这里

原文始发于微信公众号(Ots安全):逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件

版权声明:admin 发表于 2024年7月5日 下午2:03。
转载请注明:逆向工程恶意软件,Ghidra 第 3 部分:分析 WannaCry 勒索软件 | CTF导航

相关文章