导语:这篇文章将探讨攻击者如何利用收集的很少的数据,使用机器学习技术击溃入侵检测系统。
0x00、简介
对于攻击者来说,在收集目标数据的过程当中(基础设施扫描、踩点、传递恶意软件),很容易被安全分析师发现。机器学习在防御领域的应用不仅增加了攻击者的成本,而且极大地限制了技术的使用寿命。其实攻击者已经发现了这种趋势,
· 防御软件以及安全分析人员可以访问大量数据收集和分析
· 机器学习无处不在,以加速防守成熟度。
攻击者总是处于不利地位,因为我们作为人类试图打败自动学习系统,这些系统利用每一次绕过尝试来更多的了解我们,并预测未来的绕过尝试。然而,正如我们在这里所说的,机器学习不仅仅是在防守方使用。这篇文章将探讨攻击者如何利用收集的很少的数据,使用机器学习技术击溃入侵检测系统。
0x01、传统沙箱逃逸介绍
在讨论机器学习之前,我们需要更仔细的看看我们作为攻击者是如何处理信息的。攻击者在任何给定的主机或网络上收集不到1%的可用信息,并使用少于3%的所收集信息来做出明智的决定(不要太在意百分比),攻击者需要提高他们的数据利用率
文本数据也使得很难描述两个进程列表之间的差异,您将如何描述不同主机上的进程列表之间的差异?这个问题的解决方法已经存在——我们可以用数字描述一个过程列表。看上面的过程列表,我们可以得到一些简单的数值数据:
· 有11个过程
· 进程与用户的比率为2.75。
· 有4个可观察的用户
通过数字描述项目,我们可以开始分析差异、排序和分类项目。让我们添加一个第二个进程列表。
在每一个过程中,都有一个新的描述。我们现在可以确定一个程序清单,以确定任何一个问题,而不必确切的知道这些程序是什么。我们怎么解决这个问题呢?我们的解决方案是求出每列的值,然后计算主机总数的平均值。对于每个主机总数,对于沙箱,低于平均值的值被标记为1,对于正常主机,高于平均值的值被标记为0。
0x02、如何使用机器学习逃逸
· ML&AI介绍
机器学习中使用的数学技术试图复制人类的学习。就像人类的大脑有神经元、突触和电脉冲都是相连的;人工神经网络有节点、权重,以及所有相连的激活函数。通过重复并在每次迭代之间进行小的调整,人和人工神经网络都能够进行调整,以便更接近预期的输出。有效地,机器学习试图用数学来复制你的大脑。
在机器学习中,输入被引入到人工神经网络中。输入沿着链路权重传递到节点,并在节点中传递到激活函数。激活函数的输出确定节点是否被激活。通过迭代的检查相对于目标值的输出,可以调整链路权重以减少误差。
人工神经网络(ANNs)可以具有任意的大小。本文讨论的网络有3个输入、3个隐藏层和一个输出。关于更大的ANN,需要注意的一点是每个节点之间的连接数量。每个连接表示我们可以执行的附加计算,这既提高了网络的效率,也提高了网络的精度。此外,随着ANN大小的增加,数学不会改变,只有计算的数量。
· 数据收集&数据处理
收集过程列表的数据集相对容易。要从沙箱或远程系统获取进程列表,宏需要收集并发布进程列表以进行收集和处理。对于处理,需要对数据集进行解析。需要计算并保存进程计数、进程对用户比率和唯一进程计数。最后,数据集中的每个项需要正确地用0或1标记。或者,宏可以从进程列表中收集数值数据并将结果发回。选择你自己的冒险方式。为了操作目的,我们更喜欢有原始清单。
我们需要对流程列表数据集进行一次转换。前面我们比较了每个过程列表的总和与每个过程列表总和的平均值。以这种方式使用平均值是有问题的,因为非常大或非常小的过程列表结果可以显著地调整平均值。重大的转变将重新分类潜在的大量主机,引入波动性的预测。为了帮助这一点,我们缩放(归一化)数据集。有一些技巧可以做到这一点。我们测试了skikit-learning中的所有缩放函数,并选择了标准标量转换。这里重要的是,过大或过小的值不再对分类有如此不稳定的影响。
· 创建和训练神经网络
上面的例子中使用的数据是从我们的数据集中提取出来的。有了它,我们可以开始探索机器学习如何帮助攻击者检测沙箱。在高层次上,为了成功地训练人工神经网络,我们将迭代地:
1、将比例数据引入人工神经网络。
2、计算激活函数的输出。
3、以0或1(其标签)的形式向网络提供反馈。
4、计算输出和反馈之间的差值。
5、更新链路权重,以尝试减少步骤4中计算的差异。
· 武器化神经网络
是时候让人工神经网络为黑客入侵工作了。为了测试我们的概念验证, 我们编写了一个简单的宏, 它:
1、收集进程列表
2、计算输入 (进程计数、进程/用户计数和用户计数)
3、将这些值发布回我们的服务器, 并通过神经网络运行它们进行预测
4、如果神经网络预测一个正常的主机, 存储代码, 否则什么都不做。
接下来, 我们将恶意文档上传到多个在线恶意软件扫描仪 (病毒扫描程序、恶意软件分析等) 并等待。我们在非沙箱上执行了宏 (在后面后突出显示了第一个宏), 然后几分钟后, 2个不同的沙箱执行了该宏并将计算值发布回来。通过神经网络运行后返回值提供了准确的预测!
最终形成一个分类预测模型,做沙箱逃逸。