如何在网络中追踪入侵者(二):高阶模式
如何在网络中追踪入侵者(二):高阶模式在低成本追踪威胁系列的第一部分,我讨论了被动DNS 对于威胁追踪工具的重要性。我详述了一个组织如何建立传感器来收集被动DNS 数据,以及一些使用这些数据的方法。
如何在网络中追踪入侵者(二):高阶模式
在低成本追踪威胁系列的第一部分,我讨论了被动DNS 对于威胁追踪工具的重要性。我详述了一个组织如何建立传感器来收集被动DNS 数据,以及一些使用这些数据的方法。 在这些基础建立起来之后,下一步就是从这些找到的数据中找到一些模式和恶意软件信号,以较低的误判率,让追踪者得到一个深入挖掘未知威胁的起点。把重点放在异常值和其他模式很重要因为攻击者很容易改变他们的攻击基础设施并让大部分的网络IOC 无效。
在这个系列的第二部分,我会检查这些信号并且讨论它们在被动DNS 中可以怎样使用来追踪网络中未知的恶意攻击者。
快速流量
,快速流量是僵尸网络最常用的技术。通常,一个全称域名(FQDN )在一段较长的时间内决定一个相同的地址空间。
通过快速流量,一个FQDN 服务作为命令与控制服务器让大量的IP 超时,频繁的交换数据流量。 这对于基于IP 的阻止列表增加回弹有影响,因为阻止IP 只有在FQDN 解析到那个IP 的很短的一个时间窗口有效果。这种模式本身不是恶意的,由于它的本意是良性的。 一个接收到大量流量的域名可能会解析到大量的IP 地址上。通常,良性的域名解析到相同的IP 空间,地址组,地理位置。 恶意的域名分布比较不均匀。这是第一高阶模式:‘解析到大量IP 的域名以及IP 在所有权和地理位置上是多种多样的’。举个例子,在我们下面列出的域名样本中寻找模式。VirusTotal 确认它们确实是恶意软件。
域名生成算法
域名生成算法(DGA ),恶意软件使用一个算法每天随机生成上千个域名然后尝试连接到他们来与控制者通信。僵尸网络每天注册子域名来保持僵尸网络的运行,发现恶意软件最终将会尝试解析到已注册的域名。一个众所周知并且有效的阻止DGA
,恶意软件的方法是在僵尸网络之前将所有可能的域名注册掉。这需要逆向大量的恶意样本,这可能会很无聊。持续跟进恶意软件新的家族及其变种也很困难。所以如
何判断被动DNS 数据中的域名是通过DGA 生成的(没有用所有可能的算法直接生成一个完整的DGA 域名列表),这将会是个非常困难的任务。幸运的是,算法生成的域名有结构特征这与良性的域名不同。良性域名一般都是通过选择的因为他们很好记或者根据各种各样的语言反映常用词。这就是我们的高阶模式:‘有异常语法结构的域名’。
一个相当准确的检测DGA 域名的方法是提取特征比如辅音到元音的比例,长辅音序列,熵,
常见的字典单词等等,然后在随机森林分类树中分析它们。
数据科学方法检测DGA 是非常有意义的实现。我们已经提供了用于检测的代码。这个特别的分类器从通用英语单词中检测异常语法结构。可以按照相似的方法来包含其他语言和改善误报率。
,当块列表适合于追踪给定的快速流量僵尸网络,它就不是追踪DGA 域名的合适技术。由于每天每个恶意软件家族的域名数量,除了快速变化的恶意软件样本,静态分析对于追踪DGA 的分类器来说效果很差。还好,这里有一系列的数据科学技术——比如随机森林分类——这非常适合于追踪DGA 域名算法。
NXDOMAINs
DGA 域名有时候会包含英语单词来欺骗DGA 分类器,此分类器使用域名的语法特征来检测。一个这样的DGA 家族的例子是Nivdort 。然而,DGA 恶意软件有另一个更难隐藏的特征。由于恶意软件生成上千个域名只有少部分会解析到主机,大部分的DNS 请求返回错误(代码3)表示一个不存在的域名或者NXDOMAIN 。通常我们看到NXDOMAIN 由于拼写错误,复制粘贴错误,浏览器取到畸形html 等等。比率不到5的DNS 请求。一个被DGA 家族恶意软件影响的机器,这个比率大幅度上升。‘高于正常的NXDOMAIN 错误’是下一个高阶模式。评估NXDOMAI N 的比率是一个很好的方法因为它能捕获所有的DGA 家族即使躲避了我们的DGA 分类器。
钓鱼检测
最近的钓鱼网站到依赖于域名上的细微差别,或者让它看起来是真实的。首先,钓鱼域名在真的域名上做了细微的修改,保留的大部分相似之处。这是要追踪的下一个高阶模式:‘在流行域名上做了轻微修改的DNS 域名请求’。编辑距离或者来温斯坦距离能够帮助测量两个域名之间的相似度。编辑距离是两个单词之间的最小单字符编辑(例如insertions, deletions 或substitutions )需要将一个词转变成
,另一个。每个DNS 请求都可以分析它跟流行域名的编辑距离。一个潜在的钓鱼尝
试可能会跟一个流行的域名有很低的编辑距离,特别是当他们有不同的登记人的时候。
在另一个例子中,一个钓鱼域名包含一个受欢迎的品牌来做得像真的一样。这是另一个高阶模式:‘包含受欢迎品牌的DNS 域名请求’。 一个知名域名和品牌名的后缀可能成规模的出现,对每个DNS 请求匹配最长的子串。 一旦发现,变可以通过WHOIS 记录来验证这些异常值。
DIY 异常检测
还有很多模式能够利用被动DNS 数据来帮助你的追踪。一个追踪的基础原则是在你的数据集中查找并标识异常数据。这样做能够有效的分析网络数据中的异常。下面是追踪技术的一些总结:
1. 选择一个或多个DNS 流量的特征
2. 找到那些特征正常范围的值
,3. 找到那个特征偏离正常范围的记录
让我们举一个请求类型的例子。首先我们发现请求类型的分布。我们观察到93的A 类型请求,6的NS 记录,1的MX 记录。如果我们突然观察到更高比例的M X 请求,我们就得到了一个需要调查的异常。这是最后一个高阶模式:‘数据中偏离正常分布的特征’。这表示有恶意软件的影响导致发送垃圾信息。相似的,如果我们得到一个TLD 请求的分布然后发现大量的TLD 请求偏离正常分布,我们就得到了一个需要进一步分析的异常。
需要注意的是,对于任何异常的检测,都有可能有一些误差。追踪过程中的一部分是理解对于你的组织什么是正常的然后结合这些信息进行分析。
结论
使用被动DNS 来追踪入侵是一个很有意义的经验,能够让你理解网络和它的独特性,找到能够躲避基于常规IOC 搜索的威胁(比如APT )。这里有许多已知的表示恶意行为的模式和信号。这些高阶模式可以给网络追踪的新手一些启发。如下所示: l 域名解析到大量的IP 而这些IP 的所有者和地理位置是多种多样的
l 有异常语法结构的域名
l NXDOMAIN 错误高于正常的比例
l 域名的DNS 请求在知名域名上做轻微的修改
l 域名的DNS 请求包含知名品牌名称
l 特征偏离数据的正常分布
,还有一些其他的模式。更多的,定量分析也能够检测异常,基于已知的正常行为,比如请求类型。这些都是固定的,开放源码的第一步是在网络上开始追踪。
网络不是唯一可以追踪的地方。事实上,在你的终端上有更丰富的数据集来训练追踪操作。在这个系列的最后一部分,我们会讲述在主机层面的追踪。
*参考来源:endgame