评估
在这节的其余部分,我们讨论检测持续性异常状况。
使用p-报警检测隐蔽的行为。要验证对僵尸网络每一个控制渠道的检测,我们首先要找到能够从控制通讯流中提取的独特的原子。对于每一个原子,我们计算这个恶意软件踪迹的生命周期的持续性。回忆一下,我们用5个不同的时间量程计算这个持续性。为了进行检查,我们就考虑把这个原子标记为一个p-报警,如果任何时间量程的值都超过门限值p = 0.6的话。我们发现,这个门限值每天发出的错误报警是最少的,检测率是最好的。对于所有的恶意软件踪迹来说,这个检测率平均超过所有的目标原子。
在图3中,我们描绘了每一个原子的最大持续性值。这个Y轴表示用于p的值。这个分散的点包含每一个僵尸网络的三个独特的作者。每一个点描绘相应的原子的持续性值。我们在p = 0.6的位置画一个垂直的线。这是我们的检测系统使用的持续性门限值。我们的系统把这个垂直线右边出现的原子标记为可能的指挥与控制目标。选择这个特定的门限值(也就是p = 0.6)是为了达到最大限度地实现减少错报数量和提高检测率的平衡。
![](http://image4.it168.com/2009/9/8/cbf59ec1-beaa-4e5f-bbb6-5d7a3bbc4596.jpg)
图3 按照持续性检测三个僵尸网络(来源:英特尔公司,2009年)
SDBot踪迹准确地暴露了一个原子。这个原子出现在这个图的右上方。它是最大的僵尸网络制造者并且显示为一个三角形。Zapchast的踪迹包含9个原子,但是,其中只有一个出现在这个垂直线的右边。最后,风暴僵尸网络的踪迹包含大约8.2万个原子,持续性水平是平均分布的(为了方便起见,我们仅描绘了100个原子的样本)。虽然在这个x轴上反映了持续性,但是,这个垂直的区域显示了不同的时间量程。因此,在下面区域的一个点表示与这个1小时时间量程有关的持续性值。
我们描绘每一个目标原子的最大持续性值。这样,这个区域显示持续性值最大的时间量程。查看这些点,我们看到这个SDBot原子和9个Zapchast原子中的8个原子都轻松地检测到了,并且显示在这个门限值的右边。对于留在门限值左边的剩余的那一个单个的Zapchast原子,我们准确地发现有两个连接在整个踪迹上相互距离很近。我们的结论是这些连接确实是不正常的。我们指出,这些特定的僵尸网络实例是隐蔽的并且产生很少的连接。其中一个原子(在这个线的右边)与整个一个星期的30次连接有关,在一个窗口中连接次数不超过一次。这种行为方式是不容易察觉的。然而,这个原子的持续性值是0.7,并且超过了门限值。这个特殊的例子说明了我们为什么要检测隐蔽的恶意软件的原因。随着恶意软件的隐蔽性越来越强和恶意软件开发人员采取不同寻常的措施防止暴露,采用基于数量的异常检测方式也许不会取得很大的成功。
结论
随着僵尸网络向日益隐蔽的行为的方向快速发展和许多端点主机已经被这种恶意软件感染,迫切需要开发和部署一些技术对抗这些问题。在如何防御僵尸网络全文中,我们评估了最新的僵尸网络行为和趋势,说明了传统的依赖于基于数量和基于规则的检测方法的缺陷。僵尸电脑和僵尸网络能够避开异常检测,部分原因是它们具有多形性的性质,因此可以看作是一种全新的安全漏洞,其通讯行为故意模仿正常的端点主机,从而使它们处在检测器门限值设置的下面。
因此,我们要分析真正的英特尔企业端点主机后台通讯的行为,并且把这个行为与真正的僵尸网络指挥与控制渠道的活动进行比较。这样,我们能够开发和展示这个Canary检测器,通过跟踪与目标主机有关的节点的持续性和多个对象的同样的持续性来根除僵尸网络的指挥与控制渠道。上述两种非僵尸网络的通讯都是非常稳定的。这样做的好处在于,这些方法的实力不需要拥有还没有发现的僵尸网络的知识,也不需要通讯流量负载检测。