什么是DGA,以及如何检测到它们?

域生成算法(DGA)是一类算法,可周期性且动态地生成大量域名。 通常,恶意软件和僵尸网络使用这些域作为集合点,以促进回调到恶意行为者的Command&Control服务器。 DGA允许恶意软件每天生成数万个域,其中大多数未注册。 大量未注册的域被用来伪装已注册的域,从而使受感染的僵尸网络能够通过基于签名或基于IP信誉的安全检测系统来逃避检测和威慑。

第一个使用DGA的已知恶意软件家族是2008年的Kraken。同年晚些时候,Conflicker蠕虫将DGA的策略推向了恶名。 即使经过10年,仍然可以在当今的某些网络上找到Conflicker或其变体之一。

随着恶意软件的不断扩散,DGA的使用变得越来越普遍。

DGA检测的目的

由于DGA活动是折衷的重要指标,因此检测网络上的任何此类活动变得至关重要。 DGA检测分为三个级别,每个后续级别与严重性的提高相关。 在更高级别上进行检测更加困难,但更为关键。

如果检测到DGA,则意味着您的一个或多个系统已被基于DGA的恶意软件感染,并已成为僵尸网络。 需要采取一些行动。 第一个目标是确定受影响的系统,适当清洗或隔离它们,以防止升级。

下一个目标是确定是否注册了给定的DGA域名。 如果该域已注册,则它已成为活动的Command&Control服务器,对您的网络构成了很大的风险。 被感染的系统(现在是僵尸网络)可以使用这些服务器进行呼叫,并接收来自恶意攻击者的命令。 因此,有效的DGA检测系统的第二个组件是区分已注册域和未注册域的能力。

例如,DGA可以从xyzwer1000,xyzwer1…生成2个域。 到xyzwer1000。 黑客只需注册一个域,即xyzwer500,而无需注册其他999个域。 如果可以识别已注册的域及其关联的IP,则该信息可用于阻止目标系统与Command&Control服务器之间的通信通道。 此外,应将英特尔传播到所有其他预防或检测系统,以阻止从网络中的任何系统回调到该服务器。

DGA检测系统的最后一个但也是最关键的目标是确定在已注册的域中回调是否成功,以及是否在受感染的系统与Command&Control服务器之间建立了联系。 如果检测到此类活动,则可能已经造成了一些损坏。 也许您网络中的恶意软件已更新,或者安装了新的恶意软件。 敏感数据可能已被泄露。

DGA检测如何工作?

通常通过五个常规步骤,通过捕获和分析网络数据包来检测DGA活动。

步骤1 –检测DNS应用
通过DNS请求和/或响应消息开始检测。 DNS是基本的Internet协议,大多数防火墙都具有允许其保留的端口53上传出DNS流量的策略。但是,黑客可能利用端口53来发送其流量,而没有遵循标准的DNS消息格式。 这种攻击称为DNS隧道。 建议使用深度数据包检查(DPI)引擎来更精确地标识DNS应用程序。

第2步–提取域名
一旦将网络应用程序标识为DNS,则需要提取DNS查询和响应消息中的域名。 为了提取正确的域名,需要仔细解析DNS消息的内容,并且需要DPI引擎来执行此任务。

步骤3 –检测任何DGA
需要对从DNS消息中提取的域进行分析,以确定它们是否为DGA。 这也许是最复杂的步骤。 面临的挑战是减少假阳性和假阴性。 在过去的10多年中,检测机制已发生了巨大变化。
一些机制基于相对简单的香农熵。
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
某些机制基于Fyodor在Hitb会议上提出的更为复杂的Ngram。
最近,随着机器学习的普及,其方法学也已应用于DGA检测。 机器学习可以结合Ngrams,Shannon熵的特征以及域名的长度来影响决策。 已经尝试了几种机器学习模型。 Jay Jacobs在2014年发表了一篇非常不错的博客文章,描述了这一过程。
这是另一个基于马尔可夫链机器学习的开源DGA检测器:
https://github.com/exp0se/dga_detector

步骤4 –检测已注册的DGA域
为了检测DGA域名是否已注册,需要检查DNS响应。 仅跟踪DNS请求是不够的–检测系统应跟踪整个交易,以促进信息之间的关联。

步骤5 –检测到已注册DGA域的流量
当大多数现有的DGA检测系统专注于检测域名是否为DGA域时,他们通常会忘记最后一个问题,即最重要的问题:是否有任何流量已发送到已注册的DGA域? 为了及时检测到这一点,DGA域检测必须与网络流量检查紧密结合。 结果必须在损坏发生之前立即反馈给交通检查引擎。

步骤6 –阻止到注册DGA域的流量
从技术上讲,这并不是检测的一部分,但是,如果与诸如防火墙或IPS之类的预防系统集成在一起,则应立即插入一条规则,以阻止流向注册域的所有流量。

出色的DGA检测系统应执行所有5个步骤。 出色的DGA检测系统还应包括步骤6。不幸的是,当今大多数DGA检测系统都停止在步骤3或步骤4中。

结语
由于DGA难以使用基于签名或基于信誉的检测或预防系统进行检测,因此它们已在恶意软件开发人员中变得非常流行。
需要智能检测系统来执行检测。 出色的DGA检测系统必须从DNS事务中提取域名信息,进行彻底的分析以检测DGA状态,检查可疑域的注册状态,与网络流量检查相关联以评估危害程度,并理想地与预防系统集成以避免进一步妥协。 为了减少误报和误报,应该认真考虑机器学习。 只有在每个阶段都有全面而广泛的情报,才能真正减轻威胁。

相关资源

Andrey Abakumove在Github中的存储库包含用于生成域名的算法,以及恶意域名的词典。

滚动到顶部