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

欢迎回来,我有抱负的网络战士!

逆向工程恶意软件是我们学科中最高水平的技能之一,它的薪水反映了在网络安全生态系统中的地位提高。它需要多年的勤奋学习才能精通,这是一个很好的起点。如果您还没有这样做,请返回并在 Hackers-Arise 阅读以下教程。

原文链接:https://www.hackers-arise.com/post/reverse-engineering-malware-getting-started-with-ghidra-part-2

  1. 逆向工程恶意软件,第 1 部分:入门
  2. 逆向工程恶意软件,第 2 部分:汇编程序基础
  3. 逆向工程恶意软件,第 4 部分:Windows 内部结构

逆向工程恶意软件在整个网络安全中被用作解锁恶意软件功能秘密并提供归因线索的方法。

当我们结束本系列的第一部分时,我向您介绍了 Ghidra,这是由美国间谍机构国家安全局(也称为 NSA)发布的开源逆向工程工具。在本教程中,我们将开始使用它来破解一些简单的软件,以帮助您熟悉这个出色的工具。随着我们继续阅读本系列,我们将逐步开发越来越复杂的软件。

步骤#1 打开 Ghidra

第一步,当然是启动 Ghidra,启动一个项目并打开一个文件。如果您忘记了,请在此处返回Ghidra #1。一定要下载并打开crackme系列(这些简单的crackme可以在https://github.com/Maijin/radare2-workshop-2015/tree/master/IOLI-crackme获得)。

步骤#2 找到导出(Exports)

下一步是转到符号树,如下所示并展开导出(请记住,导出的函数是暴露给其他模块供自己使用的模块。要使用其他模块导出的这些函数,模块必须先导入它们) .

您应该在那里找到一个标记为_mainCRTStartup的函数。

当您单击它时,它将在反编译Decompile)窗口中打开其代码,如下所示。

请注意,我们可以在代码或第 32 行的 80% 处识别主函数

步骤#3 单击并展开 _main 函数

现在,让我们再次单击该主函数以在反编译器中显示其代码。

正如您在上面看到的,当我们在 Windows 中执行此代码时,我们看到了一些打印语句。

在 print 语句下方,我们看到了scanf语句。这会扫描来自键盘的用户输入并将其放入名为“ local_lc ”的变量中。

在第 14 行,代码对第 13 行中捕获的字符串变量进行字符串比较 ( _strcmp ),并将其与数字进行比较。这个数字可能是有效的密码。如果两个字符串相同,字符串比较命令将返回 0,如果它们不同,则返回 1。该值将被放入标记为“ iVar1 ”的变量中,该变量在第 5 行 ( int iVar1 )中被声明为整数变量。

在下一部分(第 15-22 行)中,代码检查iVar1中的值是等于 0 还是 1。如果等于 0,则打印“Password OK:”并验证用户。如果等于 1,则打印“无效密码!” 并阻止用户进入底层应用程序。

概括

Ghidra 能够拆解这个简单的crackme,使我们能够发现代码中的密码。接下来我们将拆解越来越难的软件,并利用 Ghidra 的功能来揭开它们的秘密!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部