Machine learning 如何在虚拟机中运行堆喷洒分析

Machine learning 如何在虚拟机中运行堆喷洒分析,machine-learning,neural-network,virtual-machine,windbg,Machine Learning,Neural Network,Virtual Machine,Windbg,在过去的几周里,我一直在从事一个项目,以检测应用程序上的堆喷洒攻击。为了做到这一点,我一直在开发一个二进制分类器来区分两者之间的差异。为了从应用程序堆中获取功能,我使用了WinDbg和PYKD的组合(更多信息,请参见此处)。它通过运行应用程序并将其附加到python脚本来收集功能 问题在于检测恶意功能。对于二进制分类器,我需要给它提供数百个恶意堆攻击的示例。问题是我通过实际运行程序来收集特性。如何在不损坏计算机的情况下执行此操作?我意识到我可以使用虚拟机,但我不想为每一次恶意功能测试创建一个新的

在过去的几周里,我一直在从事一个项目,以检测应用程序上的堆喷洒攻击。为了做到这一点,我一直在开发一个二进制分类器来区分两者之间的差异。为了从应用程序堆中获取功能,我使用了WinDbg和PYKD的组合(更多信息,请参见此处)。它通过运行应用程序并将其附加到python脚本来收集功能


问题在于检测恶意功能。对于二进制分类器,我需要给它提供数百个恶意堆攻击的示例。问题是我通过实际运行程序来收集特性。如何在不损坏计算机的情况下执行此操作?我意识到我可以使用虚拟机,但我不想为每一次恶意功能测试创建一个新的虚拟机,因为这太单调乏味了。

我想你有两个选择:

  • 避免攻击的恶意部分
  • 自动化VM“创建”过程
避免攻击的恶意部分 我对堆喷洒攻击的理解包括两个阶段:

  • 堆被喷射,例如,对于浏览器,通过加载实际包含代码的图片
  • 使用了一个漏洞,导致不希望的行为,使IP(指令指针)指向喷射堆的某个位置
  • 我认为您希望在攻击实际造成伤害之前检测堆喷洒阶段

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

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

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

    自动化虚拟机 虚拟机有一个称为快照的功能。这样的快照可以在VM运行时拍摄,因此它很快就会进入已知状态

    这个过程甚至可以自动化,也就是说,你可以为自己编写一个脚本

    • 将VM重置为已知状态
    • 将文件复制到虚拟机
    • 在虚拟机上运行程序(例如浏览器)
    • 在VM中运行远程调试器
    看一看。由于您在主机上运行此脚本,因此还可以包括其他步骤,如

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

    请注意,某些病毒可能会从虚拟机中爆发,例如,通过SME漏洞,您可以访问ring-1。

    IMHO您有两种选择:

    • 避免攻击的恶意部分
    • 自动化VM“创建”过程
    避免攻击的恶意部分 我对堆喷洒攻击的理解包括两个阶段:

  • 堆被喷射,例如,对于浏览器,通过加载实际包含代码的图片
  • 使用了一个漏洞,导致不希望的行为,使IP(指令指针)指向喷射堆的某个位置
  • 我认为您希望在攻击实际造成伤害之前检测堆喷洒阶段

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

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

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

    自动化虚拟机 虚拟机有一个称为快照的功能。这样的快照可以在VM运行时拍摄,因此它很快就会进入已知状态

    这个过程甚至可以自动化,也就是说,你可以为自己编写一个脚本

    • 将VM重置为已知状态
    • 将文件复制到虚拟机
    • 在虚拟机上运行程序(例如浏览器)
    • 在VM中运行远程调试器
    看一看。由于您在主机上运行此脚本,因此还可以包括其他步骤,如

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

    请注意,某些病毒可能会从虚拟机中爆发,例如,通过SME漏洞,您可以访问ring-1。

    我理解。然而,问题是没有非恶意网站的数据库。有很多恶意网站的数据库。由于分类器需要数百个堆喷洒示例,我无法找到非恶意示例。我理解。然而,问题是没有非恶意网站的数据库。有很多恶意网站的数据库。