machine-learning - 如何在虚拟机中运行堆喷射分析

标签 machine-learning neural-network virtual-machine windbg

在过去的几周里,我一直致力于一个检测应用程序堆喷射攻击的项目。为此,我一直在开发一个二元分类器来辨别两者之间的差异。为了从应用程序堆中获取功能,我结合使用了 WinDbg 和 PYKD(更多信息参见:https://labs.mwrinfosecurity.com/blog/heap-tracing-with-windbg-and-python/)。它通过运行应用程序并将其附加到我的 python 脚本来收集功能。

问题在于检测恶意功能。对于二元分类器,我需要为其提供数百个恶意堆喷射攻击的示例。问题是我通过实际运行程序来收集特征。我怎样才能做到这一点而不损害我的计算机?我意识到我可以使用虚拟机,但我不想为每次恶意功能测试创建一个新的虚拟机,因为这太乏味了。

最佳答案

恕我直言,你有两个选择:

  • 避免攻击的恶意部分
  • 自动化虚拟机“创建”过程

避免攻击的恶意部分

我对堆喷射攻击的理解包括两个阶段:

  1. 堆被喷射,例如对于浏览器来说,通过加载实际包含代码的图片
  2. 使用漏洞,导致不良行为,使 IP(指令指针)指向喷射堆的某个位置

我认为您希望在漏洞利用实际造成损害之前检测到堆喷射阶段。

您可以采取现有的攻击并以某种方式修改代码,例如启动计算器而不是邪恶的 EXE。例如website you linked上发布的JS代码似乎是无害的。它使用了大量的 NOP 和字符串 CORELAN ,这似乎不会产生有效的程序集。

当然,这需要对漏洞利用有深入的了解。您可能需要汇编语言知识才能做到这一点。如果您需要数百个示例,您可能希望对许多漏洞利用执行此操作。

另一方面,如果您在汇编程序级别上理解这一点,您可以从一次成功的攻击中得出几个不同的示例。您可以启动记事本,可以插入更多或更少的 nop 操作,可以使用 COM 对象或 ActiveX 等。它可能会给您提供许多无害的示例。

自动化虚拟机

虚拟机有一个称为快照的功能。这样的快照可以在虚拟机运行时拍摄,因此它可以非常快地进入已知状态。

这个过程甚至可以自动化,即您可以为您编写一个脚本

  • 将虚拟机重置为已知状态
  • 将文件复制到虚拟机
  • 在虚拟机上运行程序(例如浏览器)
  • 在虚拟机中运行远程调试器
  • ...

看看vSphere Automation SDK 。由于您在主机上运行此脚本,因此您还可以包括其他步骤,例如

  • 启动调试器
  • 编写调试器脚本(例如使用 PyKD)
  • 在有限的时间内运行所有内容,例如30秒
  • 收集结果(故障转储或类似结果)
  • 关闭虚拟机

请注意,某些病毒可能能够突破虚拟机,例如通过那个 SME 错误,您可以访问环 -1。

关于machine-learning - 如何在虚拟机中运行堆喷射分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128703/

相关文章:

python - 在sklearn中使用One Hot Encoding对32位十六进制数字进行编码

machine-learning - 将大量分类变量编码为输入数据

python - 前馈神经网络语言模型

machine-learning - 使用 Keras 的 CIFAR-10 数据集

java - 维贾瓦 : Get exact list of VM's asked for instead of sorting through ALL

python-2.7 - 尝试堆叠时出现类型错误

java - 真实世界参数优化

artificial-intelligence - 将自然语言表示为 RDF

windows-services - 是否可以在 VM 中连接的虚拟磁盘驱动器上安装 NServiceBus 节点?

virtual-machine - 无法获取 Compute Engine 实例列表