持续性
反僵尸网络技术的关键是发现对网络产生严重的临时影响的因素,无论其通讯量的水平如何。也就是发现那些有规律的服务。再说一次,这个策略是使用不同的方式对各个地方的不同的用户群进行真正的企业踪迹分析验证的。我们认为,这组端点主机重要的原子是小的和稳定的。当一个主机被恶意软件感染的之后,它将定期与一台主服务器联系,于是这台主服务器就暴露了。要实施这个探测,我们首先必须给“定期”这个模糊的概念提供一个数值。我们说的定期是指一个原子的持续性。我们要跟踪这个使用的规律性,而不是这个连接的本身。考虑一下使用你的新闻阅读器下载重要新闻的情况。每一次启动这个新闻阅读器应用程序的时候,它都要进行大量的连接。要跟踪与端点主机进行的时间最长的通讯,我们将重点跟踪高水平的进程,而不是单个连接的频率。
要跟踪高水平的进程,我们使用一个小的跟踪窗口“w”为通向那个原子的连接标上二进制代码,我们给这个窗口分配一个“1”或者一个“0”。显然,这个跟踪窗口的长度应该覆盖这个进程。当我们发现大量用户的单个原子的到达时间间隔的时候,我们看到59%的通向原子的连接的间隔时间不到1分钟,87%的通向同样的原子的连接的间隔时间至少是1个小时。因此,我们选择一个小时作为跟踪时间窗口长度来计算持续性。
为持续性分配数值的另一个必要的步骤是建立一个观察窗口“W”。也就是说,我们要研究在这个原子的分类变成重要的原子之前,定期观察一个原子的时间应该有多长。根据使用这个数据的经验,我们定义这个观察窗口是:W = 10w,基本上覆盖了一个平均工作日。在定义w和W = (w1, w2 , . . . , w10) 之后,我们对一个原子“a”的持续性进行量化。正如在主机h上观察到的那样,在观察窗口W,p (a, h, W),在观察原子的地方的许多单个的窗口w1, w2 , . . . , wn ,对持续性进行量化。
如果我们把p*表示为一个原子变成重要规律的临界值,那么,如果p (a, h, W) > p*,目的地a就被认为是主机h的持续性。需要指出的是,持续性的定义有W规定的内在的时间量程。假设那个w = 1小时,W = 1天。当在这个范围进行计算的时候,持续性将捕捉一个原子的每一天的行为。然而,它没有捕捉到可能存在的长期趋势。考虑两个不同的原子:a1,每一个小时看到一次;a2,每天看到一次。我们的得到这样一个公式:p (a1) = 24/24 + p(a2) = 1/24。
然而,直观地看,这两个不同的原子都非常有规律。因此,这两个原子都应该使用持续性这个词汇。事实上,因为我们正在设法检测我们没有先验的时间量程信息的隐蔽的恶意软件,我们选择的这个时间量程也许正好漏掉了恶意软件活动的时间。因此,不要依靠一个单独的时间量程W,我们可以考虑5个不同的时间量程W1 , W2 , . . . , W5。因此,对于每一个原子来说,我们计算p (a, h, Wi) for i = 1, 2, . . . , 5,并且说如果最大p (a, h, Wi) > p*,这就是持续性。
共性
虽然持续性定义为单个最终用户的属性,但是,我们可以使用共性量化一个目标原子与一个网络上的用户有何关联。因此,如果大量的用户正在与它沟通,一个目标原子在这个范围内是很重要的。由于这些原子是因为一个网络中的许多用户创建的,我们预计这些原子在数量上是非常稳定的。这个共性标准的定义非常简单:设N (a)为那个数量中的用户数量。那些用户能够看到原子a,至少在某些观察窗口是如此。因此,原子a, c (a)的共性 = N (a)/N。在这里,N是这个网络中的主机总数。此外,我们可以要求得到向它报告连接的一些主机的原子的最低持续性。这样做可以计算激增用户群等一些临时的短暂的影响。
与持续性不同,这种共性指标不能在一个单个的端点主机上孤立地计算。持续性需要系统有一种方法搜集和关联许多端点主机的信息。一个解决方案是假设有一个集中的IT运营中心(ITOC)能够搜集从所有的端点主机观察到的原子的定期报告,并且确定在这些原子中的重要的通用原子。替代的方法是同级的系统能够与这些群体的子集定期共享持续性的信息。
与IT运营中心的方法相比,重要的通用原子是在端点主机上定义和维护的。在这两种方案中,重要的一点是一个滑动窗口是在整个观察窗口(不同时间量程中的最大时间量程)维护的。在计算这个共性指标的时候,仅考虑在这个观察窗口中的报告。再说一次,这个重要性的测试是在c (a) 值大于一个具体的门限值c的时候进行的。当c (a) > c的时候,这就是那个群体中的共性。