如何在网络中追踪入侵者(二):高阶模式

Image

在低成本追踪威胁系列的第一部分,我讨论了被动DNS对于威胁追踪工具的重要性。我详述了一个组织如何建立传感器来收集被动DNS数据,以及一些使用这些数据的方法。 在这些基础建立起来之后,下一步就是从这些找到的数据中找到一些模式和恶意软件信号,以较低的误判率,让追踪者得到一个深入挖掘未知威胁的起点。把重点放在异常值和其他模式很重要因为攻击者很容易改变他们的攻击基础设施并让大部分的网络IOC无效。

在这个系列的第二部分,我会检查这些信号并且讨论它们在被动DNS中可以怎样使用来追踪网络中未知的恶意攻击者。

快速流量

快速流量是僵尸网络最常用的技术。通常,一个全称域名(FQDN)在一段较长的时间内决定一个相同的地址空间。通过快速流量,一个FQDN服务作为命令与控制服务器让大量的IP超时,频繁的交换数据流量。 这对于基于IP的阻止列表增加回弹有影响,因为阻止IP只有在FQDN解析到那个IP的很短的一个时间窗口有效果。这种模式本身不是恶意的,由于它的本意是良性的。 一个接收到大量流量的域名可能会解析到大量的IP地址上。通常,良性的域名解析到相同的IP空间,地址组,地理位置。 恶意的域名分布比较不均匀。这是第一高阶模式:‘解析到大量IP的域名以及IP在所有权和地理位置上是多种多样的’。举个例子,在我们下面列出的域名样本中寻找模式。VirusTotal 确认它们确实是恶意软件。

QQ截图20160509234210.png

域名生成算法

域名生成算法(DGA),恶意软件使用一个算法每天随机生成上千个域名然后尝试连接到他们来与控制者通信。僵尸网络每天注册子域名来保持僵尸网络的运行,发现恶意软件最终将会尝试解析到已注册的域名。一个众所周知并且有效的阻止DGA恶意软件的方法是在僵尸网络之前将所有可能的域名注册掉。这需要逆向大量的恶意样本,这可能会很无聊。持续跟进恶意软件新的家族及其变种也很困难。所以如何判断被动DNS数据中的域名是通过DGA生成的(没有用所有可能的算法直接生成一个完整的DGA域名列表),这将会是个非常困难的任务。幸运的是,算法生成的域名有结构特征这与良性的域名不同。良性域名一般都是通过选择的因为他们很好记或者根据各种各样的语言反映常用词。这就是我们的高阶模式:‘有异常语法结构的域名’。

一个相当准确的检测DGA域名的方法是提取特征比如辅音到元音的比例,长辅音序列,熵,

常见的字典单词等等,然后在随机森林分类树中分析它们。

数据科学方法检测DGA是非常有意义的实现。我们已经提供了用于检测的代码。这个特别的分类器从通用英语单词中检测异常语法结构。可以按照相似的方法来包含其他语言和改善误报率。

QQ截图20160509234234.png

当块列表适合于追踪给定的快速流量僵尸网络,它就不是追踪DGA域名的合适技术。由于每天每个恶意软件家族的域名数量,除了快速变化的恶意软件样本,静态分析对于追踪DGA的分类器来说效果很差。还好,这里有一系列的数据科学技术——比如随机森林分类——这非常适合于追踪DGA域名算法。

NXDOMAINs

DGA域名有时候会包含英语单词来欺骗DGA分类器,此分类器使用域名的语法特征来检测。一个这样的DGA家族的例子是Nivdort。然而,DGA恶意软件有另一个更难隐藏的特征。由于恶意软件生成上千个域名只有少部分会解析到主机,大部分的DNS请求返回错误(代码3)表示一个不存在的域名或者NXDOMAIN。通常我们看到NXDOMAIN由于拼写错误,复制粘贴错误,浏览器取到畸形html等等。比率不到5%的DNS请求。一个被DGA家族恶意软件影响的机器,这个比率大幅度上升。‘高于正常的NXDOMAIN错误’是下一个高阶模式。评估NXDOMAIN的比率是一个很好的方法因为它能捕获所有的DGA家族即使躲避了我们的DGA分类器。

钓鱼检测

最近的钓鱼网站到依赖于域名上的细微差别,或者让它看起来是真实的。首先,钓鱼域名在真的域名上做了细微的修改,保留的大部分相似之处。这是要追踪的下一个高阶模式:‘在流行域名上做了轻微修改的DNS域名请求’。编辑距离或者来温斯坦距离能够帮助测量两个域名之间的相似度。编辑距离是两个单词之间的最小单字符编辑(例如insertions, deletions 或substitutions)需要将一个词转变成另一个。每个DNS请求都可以分析它跟流行域名的编辑距离。一个潜在的钓鱼尝试可能会跟一个流行的域名有很低的编辑距离,特别是当他们有不同的登记人的时候。

QQ截图20160509234246.png

在另一个例子中,一个钓鱼域名包含一个受欢迎的品牌来做得像真的一样。这是另一个高阶模式:‘包含受欢迎品牌的DNS域名请求’。 一个知名域名和品牌名的后缀可能成规模的出现,对每个DNS请求匹配最长的子串。 一旦发现,变可以通过WHOIS记录来验证这些异常值。

QQ截图20160509234302.png

DIY异常检测

还有很多模式能够利用被动DNS数据来帮助你的追踪。一个追踪的基础原则是在你的数据集中查找并标识异常数据。这样做能够有效的分析网络数据中的异常。下面是追踪技术的一些总结:

1. 选择一个或多个DNS流量的特征

2. 找到那些特征正常范围的值

3. 找到那个特征偏离正常范围的记录

让我们举一个请求类型的例子。首先我们发现请求类型的分布。我们观察到93%的A类型请求,6%的NS记录,1%的MX记录。如果我们突然观察到更高比例的MX请求,我们就得到了一个需要调查的异常。这是最后一个高阶模式:‘数据中偏离正常分布的特征’。这表示有恶意软件的影响导致发送垃圾信息。相似的,如果我们得到一个TLD请求的分布然后发现大量的TLD请求偏离正常分布,我们就得到了一个需要进一步分析的异常。

需要注意的是,对于任何异常的检测,都有可能有一些误差。追踪过程中的一部分是理解对于你的组织什么是正常的然后结合这些信息进行分析。

结论

使用被动DNS来追踪入侵是一个很有意义的经验,能够让你理解网络和它的独特性,找到能够躲避基于常规IOC搜索的威胁(比如APT)。这里有许多已知的表示恶意行为的模式和信号。这些高阶模式可以给网络追踪的新手一些启发。如下所示:

l 域名解析到大量的IP而这些IP的所有者和地理位置是多种多样的

l 有异常语法结构的域名

l NXDOMAIN错误高于正常的比例

l 域名的DNS请求在知名域名上做轻微的修改

l 域名的DNS请求包含知名品牌名称

l 特征偏离数据的正常分布

还有一些其他的模式。更多的,定量分析也能够检测异常,基于已知的正常行为,比如请求类型。这些都是固定的,开放源码的第一步是在网络上开始追踪。

网络不是唯一可以追踪的地方。事实上,在你的终端上有更丰富的数据集来训练追踪操作。在这个系列的最后一部分,我们会讲述在主机层面的追踪。

此条目发表在未分类分类目录。将固定链接加入收藏夹。