逆向工程恶意软件,第 1 部分:入门

在这个新系列的介绍性文章中,我试图阐述为什么应该研究逆向工程恶意软件的优点。我希望你发现这个论点足够令人信服,以至于你回来了,并准备好投身于这个令人兴奋的学科。我相信您的辛勤工作和奉献精神将通过推进您的网络安全事业而得到回报。

原文链接:https://www.hackers-arise.com/post/2017/02/17/Reverse-Engineering-Malware-Part-1-Getting-Started

让我们开始吧!

逆向工程恶意软件是一个深刻而复杂的主题,因此很少有人真正掌握它。这就是为什么这个领域的薪水这么高的主要原因。在我们继续之前,我们需要开发一个概念框架并详细说明与逆向工程恶意软件相关的一些策略和问题。所以,让我们先这样做。

什么是逆向工程?

尽管关于什么是逆向工程的定义略有不同,但在本系列中,我们将尝试确定一个软件(恶意软件)的作用,即使我们无法访问源代码(通常是这种情况)。在确定了软件的功能之后,我们将尝试 (1) 调整它以做一些稍微不同的事情,或者 (2) 在另一个软件(恶意软件)中重新构建它。

应用于恶意软件的逆向工程

逆向工程用于恶意软件开发和交付的两端。在开发人员终端,逆向工程用于查找恶意软件可以利用的操作系统和应用程序中的漏洞。此外,开发人员可以使用逆向工程来查找和使用来自他人恶意软件的模块。与所有软件开发人员一样,恶意软件开发人员会重复使用其他软件中的有用代码。即使在进行恶意软件开发时,重新发明轮子也没有任何意义。

在另一个终点,法医调查人员和事件处理人员可以使用逆向工程来追踪恶意软件的行为以及它可能带来的危害。此外,逆向工程通常可以为取证调查员提供有关恶意软件来源和归属的线索。

低级软件

在逆向工程软件中,我们经常使用低级软件。源代码通常对我们不可用,但低级软件总是可用

汇编代码

汇编是软件链中的最低层,虽然我们无法访问源代码,但各种工具可以将源代码简化为汇编。任何高级语言中的每条指令都必须对汇编语言代码可见。这里没有魔法,每条指令都必须简化为一条或多条汇编指令。在大多数情况下,我们将在逆向工程时使用这个简单的汇编代码。

显然,要成功进行逆向,我们必须熟悉汇编语言代码。不幸的是,没有单一的汇编语言,而是针对每种类型的处理器(x86、x64、ARM、PPC 等)的汇编语言。要掌握逆向,我们必须掌握所选平台的汇编代码。在本系列中,我们将研究 x86、x64 和 ARM 程序集。

机器码

机器码或二进制码是 CPU 读取的代码。机器代码和汇编是同一事物的两种不同表示。机器代码只是一个包含 CPU 指令的位序列。

汇编语言只是机器代码的简单文本表示,使它们更易于人类阅读(但仅此而已)。每个汇编语言命令都由一个称为操作码的数字表示,操作码的缩写。

编译器

编译器将源代码转换为机器代码。逆向过程中最大的挑战之一是编译器倾向于优化代码以使其更高效和更好地执行。因此,由两个不同编译器编译的相同代码实际上会生成稍微不同的机器代码,这使我们的逆向工作更加困难。

逆向过程

逆向过程通常可以分解为至少两种类型;(1) 代码级和 (2) 系统级。

代码级别

当我们进行代码级反转时,我们试图从机器代码中提取软件的代码概念和算法。这需要对 CPU 的工作原理、操作系统的工作原理以及软件开发过程等有深入的了解。在此过程中,我们将使用IDA Pro、SoftIce、OllydbgGhidra等工具。

系统级

系统级逆向涉及运行工具以获取有关软件的信息、检查程序、检查可执行文件以及跟踪程序的输入和输出。大部分信息将来自操作系统。我们将使用诸如SysInternals Suite、Tripwire、lsof、Wireshark等工具 。

逆向工具

逆向工程工具可以分为几类。这些包括;

(1)系统级工具

这些工具嗅探、监控和探索我们正在检查的软件。在大多数情况下,他们使用操作系统来收集有关恶意软件的信息。

(2)反汇编程序

反汇编程序获取软件并为程序生成汇编代码。通过这种方式,我们可以在不查看源代码的情况下检查恶意软件的内部工作原理。

(3)调试器

调试器使我们能够在程序运行时观察它。它使我们能够设置断点并跟踪代码。

(4)反编译器

反编译器尝试获取可执行文件并以高级语言重新创建源代码。尽管由于编译器的变化和为了效率而省略了步骤,这并不完美,但这仍然是逆向学科中的一个生产过程。

合法性

逆向工程的合法性一直存在争议。合法性问题围绕着逆向工程的社会和经济影响问题。例如,如果您要对 Microsoft 的 Excel 进行逆向工程,然后将其转售,那很可能会被视为非法。如果您正在对恶意软件进行逆向工程以破译其功能和来源,那可能会被视为合法。

版权法和数字千年版权法案 (DMCA) 是与逆向工程相关的关键立法。一些人声称,在逆向工程过程中创建软件程序的中间副本本身就违反了版权法。幸运的是,法院不同意。

另一方面,DMCA 保护受版权保护的系统不被复制。几乎在所有情况下,规避 DMCA 保护都涉及逆向工程。我们将在本课程中研究其中的一些方法。

版权保护通常涉及数字版权管理技术,即使是个人使用,规避这些系统也是非法的甚至开发或提供这样的手段来规避 DRM 也是非法的。

然而,有一个例外。您可以为了评估或提高计算机系统的安全性而逆转和规避软件的版权保护。我们的工作属于这个例外。

结论

我希望这篇介绍为您提供了一个了解逆向工程恶意软件过程的框架,并激起了您对即将发生的事情的兴趣。当我逐步完成逆向工程恶意软件的激动人心的过程时,请继续回来!

有关更多逆向工程恶意软件,请单击此处。

发表评论

您的电子邮箱地址不会被公开。