开始分析恶意软件二进制文件的最有效方法

逆向工程 视窗 恶意软件 动态分析
2021-07-02 09:36:03

我正在上一门逆向工程课程,这门课刚刚完成了一个大项目,我们必须分析打包的恶意软件二进制文件。我正在使用 Windows 10 虚拟机。我对从哪里开始有点困惑。教授提到,最好的起点是拍摄初始系统设置的快照,运行恶意软件,然后“找出发生了什么变化”。

我的策略如下:

  1. 对我的初始 VM 状态进行内存备份。
  2. 设置我的 VM,以便网络连接可用,但实际上并未连接到 Internet。
  3. 运行恶意软件(在调试器中?在调试器之外?)。
  4. ???

这是我有点不确定的地方。我不确定“检查系统上的更改”需要什么。这是否意味着在恶意软件运行后我需要对操作系统状态进行内存转储?我应该在内存转储中寻找什么?是否有一些工具可以识别我的起始状态和恶意软件运行后的状态之间的有意义的变化?我是否需要审核注册表项以查看已更改的内容?如果我知道恶意软件使用网络,我应该运行 Wireshark 吗?

最终,我不确定最有效的方法是什么。这是一个非常强大的恶意软件,具有很多功能,我想确保我预先收集了所有必要的信息,这样我就不会在项目后期浪费时间。

谢谢

3个回答

我发现在正式的大学课程中,在处理实际恶意软件之前,没有针对学生的适当安全指南和程序,这真的令人不安。这是非常危险的,应该相应地处理。但是,这里有几个步骤可以使您的任务更安全、更轻松:

建立恶意软件实验室:

您可以按照Lenny Zelster此处的完整程序进行操作。简而言之,它有以下步骤:

了解我们的任务:

设置好实验室后,让我们根据您的话检查我们的任务:

“检查系统上的变化”和“找出发生了什么变化”

由于我们正在处理基于 Windows 的系统,因此我们需要问自己恶意软件可以对系统进行哪些更改以及出于什么目的。例如,恶意软件通常希望实现某种持久性。这通常通过以下方法完成:

  • 注册表运行键
  • 启动文件夹
  • 计划任务
  • 服务注册

MITRE ATT&CK在此处提供了更全面的列表

此外,恶意软件通常具有某种意图,例如窃取cookie、连接到Web 浏览器或可能只是等待辅助负载或更新。如果我们为了这个简短指南的简单性而忽略“无文件”或“内存注入”攻击,恶意软件必须在系统上留下一些文件痕迹。我们需要查找写入文件系统的文件(可执行与否)。

弄脏我们的手:

为了监控上述系统变化,我们可以使用最初由 Mark Russinovich 开发、现在归微软所有的 Sysinternal 工具。

提示:对于任何开始进行恶意软件分析的人,建议阅读 Mark 的Windows Internals 一书

更具体地说,您应该学习如何使用 Sysinternals 套件的工具是:

  • 自动运行- 执行并记下您的初始系统值。
  • 进程监视器- 阅读手册后,创建一个过滤器以仅跟踪您正在执行的恶意软件。注意任何文件和注册表更改,这将是一个非常好的起点。
  • Autoruns - 执行并记录系统的任何更改以及已注册的新自动运行。

上面的指南应该能让你为你的项目找到一个好的起点。

如果你想作弊

您可以跳过所有这些阶段并使用公开可用的恶意软件引爆沙箱之一。但是,为了成为逆向工程师或恶意软件分析师,您应该只在学习了基础知识并了解您实际在做什么之后才使用这些工具。

您可以考虑阅读实用恶意软件分析书,它描述了深入的恶意软件分析过程和技术,并包含对您的问题的深入解答。第 3 章简要介绍了可用于监控恶意软件所做更改的工具。

我在分析恶意软件样本时采取的步骤是:

  1. 在 cff 资源管理器中检查文件。(入口部分,奇怪的部分名称,覆盖大小等)

  2. 在 Detect It 中打开样品 很容易看到它是否被包装,如果是,使用哪个包装器。

  3. 打开它。

  4. 在 IDA 中分析未打包的样本,看看我在处理什么。

当然,您必须在运行示例之前制作系统快照。如果您的目标是“找出发生了什么变化”而不是解压缩,请从 sysinternals 套件中检出流程浏览器和流程监视器。Wireshark也是后台运行的好习惯。

您也可以为此使用在线沙箱。结帐https://github.com/rshipp/awesome-malware-analysis

要解压 tuts 和脚本,请查看https://tuts4you.com