Machine learning 如何在虚拟机中运行堆喷洒分析
在过去的几周里,我一直在从事一个项目,以检测应用程序上的堆喷洒攻击。为了做到这一点,我一直在开发一个二进制分类器来区分两者之间的差异。为了从应用程序堆中获取功能,我使用了WinDbg和PYKD的组合(更多信息,请参见此处)。它通过运行应用程序并将其附加到python脚本来收集功能Machine learning 如何在虚拟机中运行堆喷洒分析,machine-learning,neural-network,virtual-machine,windbg,Machine Learning,Neural Network,Virtual Machine,Windbg,在过去的几周里,我一直在从事一个项目,以检测应用程序上的堆喷洒攻击。为了做到这一点,我一直在开发一个二进制分类器来区分两者之间的差异。为了从应用程序堆中获取功能,我使用了WinDbg和PYKD的组合(更多信息,请参见此处)。它通过运行应用程序并将其附加到python脚本来收集功能 问题在于检测恶意功能。对于二进制分类器,我需要给它提供数百个恶意堆攻击的示例。问题是我通过实际运行程序来收集特性。如何在不损坏计算机的情况下执行此操作?我意识到我可以使用虚拟机,但我不想为每一次恶意功能测试创建一个新的
问题在于检测恶意功能。对于二进制分类器,我需要给它提供数百个恶意堆攻击的示例。问题是我通过实际运行程序来收集特性。如何在不损坏计算机的情况下执行此操作?我意识到我可以使用虚拟机,但我不想为每一次恶意功能测试创建一个新的虚拟机,因为这太单调乏味了。我想你有两个选择:
- 避免攻击的恶意部分
- 自动化VM“创建”过程
CORELAN
,这似乎不会产生有效的程序集
当然,这需要对漏洞有深入的了解。您可能需要具备汇编语言知识才能做到这一点。如果您需要100个示例,您可能会希望对许多利用漏洞的行为执行此操作
另一方面,如果您在汇编程序级别理解了这一点,您可以从1次成功的攻击中得到几个不同的示例。您可以启动记事本,您可以插入更多或更少的nop
操作,您可以使用COM对象或ActiveX等。它可能会给您提供许多无害的示例
自动化虚拟机
虚拟机有一个称为快照的功能。这样的快照可以在VM运行时拍摄,因此它很快就会进入已知状态
这个过程甚至可以自动化,也就是说,你可以为自己编写一个脚本
- 将VM重置为已知状态
- 将文件复制到虚拟机
- 在虚拟机上运行程序(例如浏览器)
- 在VM中运行远程调试器
- 启动调试器
- 为调试器编写脚本(例如,使用PyKD)
- 在有限的时间内运行所有内容,例如30秒
- 收集结果(崩溃转储或类似)
- 关闭虚拟机
请注意,某些病毒可能会从虚拟机中爆发,例如,通过SME漏洞,您可以访问ring-1。IMHO您有两种选择:
- 避免攻击的恶意部分
- 自动化VM“创建”过程
CORELAN
,这似乎不会产生有效的程序集
当然,这需要对漏洞有深入的了解。您可能需要具备汇编语言知识才能做到这一点。如果您需要100个示例,您可能会希望对许多利用漏洞的行为执行此操作
另一方面,如果您在汇编程序级别理解了这一点,您可以从1次成功的攻击中得到几个不同的示例。您可以启动记事本,您可以插入更多或更少的nop
操作,您可以使用COM对象或ActiveX等。它可能会给您提供许多无害的示例
自动化虚拟机
虚拟机有一个称为快照的功能。这样的快照可以在VM运行时拍摄,因此它很快就会进入已知状态
这个过程甚至可以自动化,也就是说,你可以为自己编写一个脚本
- 将VM重置为已知状态
- 将文件复制到虚拟机
- 在虚拟机上运行程序(例如浏览器)
- 在VM中运行远程调试器
- 启动调试器
- 为调试器编写脚本(例如,使用PyKD)
- 在有限的时间内运行所有内容,例如30秒
- 收集结果(崩溃转储或类似)
- 关闭虚拟机
请注意,某些病毒可能会从虚拟机中爆发,例如,通过SME漏洞,您可以访问ring-1。我理解。然而,问题是没有非恶意网站的数据库。有很多恶意网站的数据库。由于分类器需要数百个堆喷洒示例,我无法找到非恶意示例。我理解。然而,问题是没有非恶意网站的数据库。有很多恶意网站的数据库。