/ Enterprise Securty

打造免费企业安全:便宜没好货吗?(二)

在上一节,我们讨论了工具箱里有被动DNS的重要性,并描述了一个组织如何设置传感器来收集被动DNS数据,有了这些基础之后,下一步就是分析收集到的数据,寻找恶意行为的蛛丝马迹,在较低的误报率的前提下,为防御者们提供深挖未知威胁的新起点。关注这些外点和模式是很重要的,因为对手可以很容易的更换他们的攻击基础设施,而原有的IOC将快速失效。

在第二篇中,我会讲解一些信号,并且讨论如何将这些信号应用到被动DNS数据上来追踪网络中的潜在对手。

Fast Flux (DNS速涌)

速涌是一种最早在僵尸网络中被用到的技术。在正常情况下,一个FQDN在很长一段时间内解析到同一个地址,而开启了速涌之后,被用做控制中心C&C的一个FQDN在一段时间内以极高的频率解析到不同的IP,这主要是为了针对基于IP地址的屏蔽列表,然而,这项技术本身并不一定是恶意的,一个有着巨大访问量的域名同样可以应用该技巧解析到大量不同的IP上。不过我们可以观察到善意的速涌会解析到同质的IP空间(比如IP拥有者/地址块/地理位置趋同)。恶意的域名往往解析到更大量在上述属性上都各异的地址空间。这就是第一种高阶模式:“解析到大量异质IP地址空间的域名。” 例如,在我们收集到的数据中寻找这种模式,有以下被Virustotal验证确实恶意的域名:

域名生成算法(DGA)

采用域名生成算法的恶意软件每天都会使用该算法随机的生成数千个域名,并尝试通过连接这些域名来获得来自控制中心的指令。僵尸网络管理员通常每天都会往域名池中补充少量域名,这样当僵尸端请求大量随机域名时就会命中其中少数被注册的域名从而获得指令。一种广为人知且有效的阻止DGA恶意软件的方法通过提前预测来注册那些僵尸网络管理员会注册域名,这通常需要逆向分析一堆恶意软件的样本,整个过程是极为单调乏味的。这种防御方法同时也难以阻止恶意软件那些常常更新的变种和同一种类的更新版本。我们如何在不穷举所有可能的算法的情况下确定被动DNS收集的信息中哪些是通过DGA生成的呢?

幸运的是,算法生成的域名具有其他域名不具备的结构特征。善意的域名通常具有易记或者反映了各种语言中常见词的特征。这就是我们的第二个高阶模式:“具有异常词法特征的域名”。一个相对准确的做法是提取域名中辅音/元音的比例、最长的辅音、熵、常见辞典词的N-Gram等等。并用随机森林分类他们。这种分类器将异常的词法结构从常见英语词汇中分离出来,类似的做法可以应用在其他语种上,改进误报率。

屏蔽特定的快涌僵尸网络也许并不难,但综合来看,面对DGA类恶意软件,屏蔽法将显得力不从心。每天每个恶意软件家族都在生成数以万计的域名,静态分析法耗费的人力和产出将显得不合时宜,而上述方法无疑更优越。

NXDOMAIN

DGA域名有时会包含英语词汇来欺骗用词法属性的DGA分类器,例如Nivdort家族就使用这种方式。不过DGA恶意软件会留下另一种难以抹去的痕迹:既然恶意软件会请求大量域名而只有少量域名真正解析,那么在DNS记录中会出现大量的NXDOMAIN。一般出现NXDOMAIN是因为打错字,拷贝粘贴失误,浏览器预缓存畸形的html等等,占正常DNS查询的5%。在被DGA恶意软件感染的机器所处的网络中,这个比率一飞冲天。于是,我们的第三个高阶模式:“异常多的NXDOMAIN错误”。对NXDOMAIN的正常值进行估计是十分强大的统计学手段,因为它可以检测到各种DGA恶意软件,即使目标逃过了DGA分类器的审查!

钓鱼检测

最近发生的大规模钓鱼活动经常是基于与正常域名具有微妙差异的域名,或利用一个品牌的名气伪造域名。在前者中,我们可以用“编辑距离”或者“列文斯坦距离”帮助测量两个域名之间的相似性。结合其他特征检测手段,我们可以侦测到与真实域名编辑距离偏低的可疑域名,尤其是在甚至连注册商不同的时候,我们可以确定钓鱼行为的存在。

在后一种情况下,一个钓鱼域名通常会伪装成知名品牌的官网,那么此处的高阶模式就是:“内含了著名品牌名的DNS请求”。高人气的域名和品牌名的后缀树通常可以在大规模数据下对DNS请求的最长公共子串进行匹配。同时在匹配成功后查询WHOIS进行关联识别。

打造自己的离群值检测数据集

在被动DNS数据集中我们可以发现许多异常的模式。一个在异常狩猎中基本的原则就是研究那些数据集中的离群点。长期进行这样的工作对异点检测是非常有帮助的。如下的步骤可以帮助我们创建新的搜寻技巧:

  • 选择DNS流量的一个或多个特征
  • 计算出该特征的标准波动范围
  • 找出异于该范围的数据集

让我们用DNS查询请求的类型来距离,首先,我们计算出DNS请求数据的分布,假设我们观察到了93%的请求为A记录,6%为NS记录,1%是MX记录。如果突然我们检测到MX类请求大量增加,则我们得到了一个离群点。
这就是我们最后一个高阶模式:“偏离特征正常分布的数据”。相似的,如果我们发现针对某顶级域名的查询偏离了相应的分布,我们就发现了一个异常。

要注意的是,在任何离群点检测技术中都存在误报,搜寻的过程,从某种意义上来说就是将你所在的组织的基线融入分析的过程。

结论

在企业中使用被动DNS搜寻对手是一种十分有趣的事情,在这个过程中你会对企业网络的各种犄角旮旯得到更深的理解,也会有机会发现通常IOC搜寻不到的APT威胁。有许多已知的模式和信号指示恶意行为。我们也有许多高阶模式来为在企业网络中搜寻对手提供启发。下面是几个不错的着手点:

  • 解析到大量异质IP地址空间的域名。
  • 具有异常词法特征的域名。
  • 异常多的NXDOMAIN错误
  • 与流行域名存在微小差异的DNS请求
  • 包含著名品牌名的DNS请求
  • 偏离特征正常分布的数据

还有许多其他的特征这里就不一一列举了。要强调的是,手工的量化分析基于正常行为同样可以检测到离群点,这些方法结合在一起是企业在预算有限的情况下有效开展开源防御的良好第一步。

追踪威胁的处所不只有网络,实际上,在端点上收集的数据往往更加丰富,在下一次的博文中我们会讨论主机上的追踪。


博主将Endgame在SANS威胁搜寻和应急响应峰会之后发布的文章分三篇译于此。
本文译自:ENDGAME BLOG