逆向工程是最受欢迎和最有价值的网络安全/信息安全技能之一。但很少有人能将自己的技能水平发展到精通这一备受追捧的技能。Ghidra
是美国间谍机构 NSA
提供的一种相对较新且免费的逆向工程工具。
在本教程中,我们将研究历史上最臭名昭著的一个恶意勒索病毒:WannaCry
。它感染了全球30多万台电脑,如果不是马库斯-赫钦斯(Marcus Hutchens,又名MalwareTech)的工作和技能,可能会造成巨大的破坏。Marcus Hutchens
获得了该恶意软件的样本,并立即开始检查其代码。在其中,他发现了通常被称为killswitch
的东西。实际上,他发现的是将用于该勒索软件的命令和控制(C&C)的URL。当他意识到这个URL还没有被注册时,他就注册了。通过这样做,他拒绝了勒索软件作者对其恶意软件的控制权,从而拯救了互联网。
在这里,我们将查看恶意软件寻找URL的初始感染载体,并试图了解它如何启动其恶意活动。
# 1、准备好你的环境并安装Ghidra
对于本教程,我建议你使用Kali
或其他操作系统的虚拟机。这是为了确保你不会意外地将WannaCcy
释放到你的其他系统或网络中(这通常是处理恶意软件时的良好做法)。接下来,下载WannaCry
。你可以从许多地方获得它,如VirusTotal
。
然后启动Ghidra
然后导入样本文件。
然后开始分析:
接下来,会有详细介绍分析的选项。保留所有的默认值,并添加(Decompiler Parameter ID)反编译器参数ID(这将为一个函数创建参数和局部变量。对于大文件来说,这可能会增加大量的分析时间,但对于WannaCry
来说,这应该不会有什么问题)。
在 Ghidra
分析 WannaCry
时,可能会收到以下错误消息。不用管它,只需单击"OK"。
分析完成后如下所示:
# 2、查找Main()函数
下一步是寻找启动 WannaCry
这个恶意软件的函数。正如我们在将恶意软件加载到 Ghidra
时所指出的,WannaCry
是一个便携式可执行文件 (PE
)。每个 Windows
程序都有一个入口点,通常命名为 WinMain
或 wWinMain
。请参阅下面的 Microsoft
文档。
当我们转到符号树并展开函数文件夹时,没有找到 WinMain
或 wWinMain
函数,但我们看到了entry
函数。这可能与 WinMain()
具有相同的目的。让我们检查一下。
双击它,它将出现在列表窗口和反编译窗口。
# 3、查找"killswitch"
通过扫描反编译窗口的代码,我们可以看到这个函数调用了另一个函数 FUN_00408140()
。双击它来分析它。
然后你会在列表窗口和反编译窗口中看到一个URL
。
它似乎将 URL
放入名为 puVar3
的变量中。
继续往下,我们可以看到对InternetOpenUrlA
函数的引用。
我们可以通过 Microsoft Technet
搜索,看到 InternetOpenUrlA
函数正如你所预想的那样,它调用并打开指定的 URL
。
在 InternetOpenUrlA
下方,我们看到几行使用 InternetCloseHandle
。这些指定如果 iVar2
为 0
,则关闭句柄并运行 FUN_00408090
(),否则关闭句柄并终止程序。
这是 Marcus Hutchins
在第一次检查和分析 WannaCry
时注意到的。这是命令和控制 (C&C) 的 URL
。如果程序尝试访问 URL
并返回 0,则程序自动终止。如果它没有终止,则执行 FUN_00408140()
。让我们关注 FUN_00408140()
。
# 4、程序流程
在下一步中,让我们按照 FUN_00408140()
的流程进行操作。找到 Ghidra
顶部的 Window
选项卡,然后单击 Function Call Graph
。
Ghidra
为我们生成了一个易于阅读的来自该函数的调用流程图,包括上游和下游。可以看到entry
函数是FUN 00408140
的上游,下游是InternetOpenA
、InternetOpenUrlA
、InternetCloseHandle
和FUN_00408090
回到反编译窗口,让我们双击 FUN_00408090()
进入来分析它。
请注意,反编译器显示恶意软件会尝试调用 OpenServiceA
函数。这包括打开 mssecv2.0_004312fc
的参数。这似乎打开了 Microsoft
安全服务。这很有趣...
当我们搜索微软的 Technet
时,我们发现没有这样的服务存在。该恶意软件正在启动一项伪装成合法的 Microsoft
安全服务的新服务,以掩盖其真实性质。
# 本节概括
Wannacry
勒索软件有可能在 2017
年对互联网造成毁灭性打击。它利用当时最新发布的 EternalBlue
漏洞进入计算机系统,然后加密所有数据,直到他们支付赎金。Wannacry
由朝鲜APT
开发,他们未能掩盖或混淆恶意软件,最重要的是,没有注册C&C域。感谢 Marcus Hutchins
,他检测到killswitch
并解除了这个勒索软件继续感染,从而减轻了它的影响。
# 说明
本文由合天网安实验室编译,如需转载,请注明来源 原文地址:Reverse Engineering Malware, Ghidra Part 3: Analyzing the WannaCry Ransomware (hackers-arise.com)
关于合天网安实验室
合天网安实验室(www.hetianlab.com)-国内领先的实操型网络安全在线教育平台
真实环境,在线实操学网络安全 ; 实验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。