算法生成的域的在线检测 背景技术 [0001] 不法分子试图以各种方式危害计算机系统。作为一个示例,这样的人可以在电子邮件附件中嵌入或以其他方式包括有恶意的软件(“恶意软件(malware)”),并将该恶意软件传输或导致该恶意软件被传输给没有防备的用户。当执行时,恶意软件危害受害者的计算机。某些类型的恶意软件将指示受危害的计算机与远程主机通信。例如,恶意软件可以将受危害的计算机变成“僵尸网络(botnet)”中的“僵尸(bot)”,从而在不法分子的控制下从命令和控制(C&C)服务器接收指令和/或向其报告数据。减轻恶意软件造成的损害的一种方法是安全公司(或其他适当的实体)试图标识恶意软件并防止它到达终端用户计算机/在终端用户计算机上执行。另一种方法是尝试阻止受危害的计算机与C&C服务器通信。不幸的是,恶意软件作者正在使用越来越复杂的技术来混淆他们软件的工作方式。因此,存在对检测恶意软件并防止其损害的改进技术的持续需求。 附图说明 [0002] 在以下详细描述和附图中公开了本发明的各种实施例: 图1图示了在其中检测到恶意软件并降低其损害的环境的示例; 图2A图示了数据装置的实施例; 图2B是数据装置的实施例的逻辑组件的功能图; 图3描绘了示例马尔可夫链模型的一部分的视觉表示; 图4A图示了算法生成的域和良性域的解析计数之间的差异; 图4B图示了算法生成的域和良性域的解析间隔之间的差异的示例; 图5图示了用于检测算法生成的域的过程的示例。 具体实施方式 [0003] 本发明可以以多种方式实现,包括作为过程;装置;系统;物质的组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置为执行存储在耦合到处理器的存储器上和/或由耦合到处理器的存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,所公开过程的步骤顺序可以更改。除非另有说明,否则被描述为被配置为执行任务的诸如处理器或存储器的组件可以被实现成被暂时配置为在给定时间执行任务的通用组件,或者被制造成执行该任务的特定组件。如本文所使用的,术语“处理器”指代被配置为处理诸如计算机程序指令的数据的一个或多个设备、电路和/或处理核心。 [0004] 下面提供了本发明的一个或多个实施例的详细描述,以及说明本发明原理的附图。结合这些实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包含许多替代、修改和等同物。为了提供对本发明的透彻理解,在以下描述中阐述了许多具体细节。这些细节是出于示例的目的而提供的,并且本发明可以根据权利要求来实践,而无需这些具体细节中的一些或全部。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术材料,以免不必要地模糊本发明。 [0005] 一. 概述 防火墙通常保护网络免受未授权的访问,同时允许授权的通信通过防火墙。防火 墙典型地是为网络访问提供防火墙功能的设备、设备集或在设备上执行的软件。例如,防火墙可以集成到设备(例如,计算机、智能电话或其他类型的具有网络通信能力的设备)的操作系统中。防火墙也可以被集成到各种类型的设备中或作为各种类型的设备上的一个或多个软件应用来执行,所述设备诸如计算机服务器、网关、网络/路由设备(例如,网络路由器)和数据装置(例如,安全装置或其他类型的专用设备),并且在各种实现中,某些操作可以在诸如ASIC或FPGA的专用硬件中实现。 [0006] 防火墙典型地根据规则集来拒绝或准许网络传输。这些规则集通常被称为策略(例如,网络策略或网络安全策略)。例如,防火墙可以通过应用规则或策略集来过滤入站流量,以防止不需要的外部流量到达受保护的设备。防火墙还可以通过应用规则或策略集来过滤出站流量(例如,允许、阻止、监控、通知或记录,和/或可以在防火墙规则或防火墙策略中指定其他动作,所述动作可以基于各种准则来触发,诸如本文所述的那样)。防火墙还可以通过类似地应用规则或策略集来过滤本地网络(例如,内联网)流量。 [0007] 安全设备(例如,安全装置、安全网关、安全服务和/或其他安全设备)可以包括各种安全功能(例如,防火墙、反恶意软件、入侵预防/检测、数据丢失预防(DLP)和/或其他安全功能)、联网功能(例如,路由、服务质量(QoS)、网络相关资源的工作负载平衡和/或其他联网功能)和/或其他功能。例如,路由功能可以基于源信息(例如,IP地址和端口)、目的地信息(例如,IP地址和端口)和协议信息。 [0008] 基本分组过滤防火墙通过检查在网络上传输的各个分组来过滤网络通信流量(例如,分组过滤防火墙或第一代防火墙,它们是无状态分组过滤防火墙)。无状态包过滤防火墙典型地检查单个分组本身,并基于所检查的分组应用规则(例如,使用分组的源和目的地址信息、协议信息和端口号的组合)。 [0009] 应用防火墙还可以执行应用层过滤(例如,应用层过滤防火墙或第二代防火墙,它们在TCP/IP栈的应用层上工作)。应用层过滤防火墙或应用防火墙通常可以标识某些应用和协议(例如,使用超文本传输协议(HTTP)的web浏览、域名系统(DNS)请求、使用文件传输协议(FTP)的文件传输以及各种其他类型的应用和其他协议,诸如Telnet、DHCP、TCP、UDP和TFTP (GSS))。例如,应用防火墙可以阻止试图通过标准端口进行通信的未授权协议(例如,试图通过使用该协议的非标准端口偷偷通过的未授权/不符合策略的协议通常可以使用应用防火墙来标识)。 [0010] 有状态防火墙还可以执行基于状态的分组检查,其中在与网络传输的分组流相关的一系列分组的上下文中检查每个分组。这种防火墙技术通常被称为有状态分组检查,因为它维护通过防火墙的所有连接的记录,并且能够确定分组是新连接的开始、现有连接的一部分还是无效分组。例如,连接状态本身可以是触发策略中规则的准则之一。 [0011] 如上面所讨论的,高级或下一代防火墙可以执行无状态和有状态分组过滤以及应用层过滤。下一代防火墙还可以执行附加的防火墙技术。例如,有时被称为高级或下一代防火墙的某些较新的防火墙还可以标识用户和内容(例如,下一代防火墙)。特别是,某些下一代防火墙正在将这些防火墙可以自动标识的应用列表扩展到数千个应用。这样的下一代防火墙的示例可以从Palo Alto Networks公司购得(例如,Palo Alto Networks的PA系列防火墙)。例如,Palo Alto Networks的下一代防火墙使得企业能够使用各种标识技术来标识和控制应用程序、用户和内容,而不仅仅是端口、IP地址和分组,所述标识技术诸如以下各项:用于准确标识应用的APP‑ID、用于标识用户(例如,按用户或用户组)的User‑ID以及用于实时内容扫描(例如,控制网上冲浪和限制数据和文件传输)的Content‑ID。这些标识技术允许企业使用与业务相关的概念安全地启用应用,而不是遵循由传统端口阻塞防火墙提供的传统方法。此外,用于下一代防火墙的专用硬件(例如,实现为专用装置)通常比在通用硬件上执行的软件提供更高的应用检查性能水平(例如,诸如由Palo Alto Networks公司提供的安全装置,其使用专用的、功能特定的处理,该处理与单遍软件(single‑pass software)引擎紧密集成,以最大化网络吞吐量,同时最小化延时)。 [0012] 高级或下一代防火墙也可以使用虚拟化防火墙来实现。这样的下一代防火墙的示例可从Palo Alto Networks公司购得(例如,Palo Alto Networks的VM系列防火墙,其支持TM TM TM 各种商业虚拟化环境,包括例如VMware® ESXi 和NSX 、Citrix® Netscaler SDX 、KVM/OpenStack (Centos/RHEL、Ubuntu®)和Amazon Web Services(AWS))。例如,虚拟化防火墙可以支持在物理外形装置中可用的相似或完全相同的下一代防火墙和高级威胁防御功能,允许企业安全地启用应用流入其私有、公共和混合云计算环境并且跨其私有、公共和混合云计算环境流动。诸如VM监控、动态地址组和基于REST的API的自动化特征允许企业主动监控VM改变,动态地将该上下文反馈到安全策略中,从而消除当VM改变时可能出现的策略滞后。 [0013] 二.示例环境 图1图示了在其中检测到恶意软件并降低其损害的环境的示例。在所示的示例中,客户端设备104‑108(分别)是企业网络110(属于“Acme公司”)中存在的膝上型计算机、台式计算机和平板电脑。数据装置102被配置为实施关于客户端设备(诸如客户端设备104和 106)与企业网络110外部的节点(例如,经由外部网络118可到达)之间的通信的策略。这样的策略的示例包括控制流量整形、服务质量和流量路由的策略。策略的其他示例包括安全策略,诸如要求针对传入(和/或传出)的电子邮件附件、网站内容、通过即时消息程序交换的文件和/或其他文件传递中的威胁进行扫描的策略。在一些实施例中,数据装置102还被配置为针对停留在企业网络110内的流量实施策略。 [0014] 数据装置102可以被配置为与远程安全平台150协作工作。安全平台150可以提供各种服务,包括对恶意软件样本执行静态和动态分析,以及向数据装置(诸如数据装置102)提供已知恶意文件的签名列表作为订阅的一部分。 [0015] 图2A示出了数据装置的实施例。所示的示例是在各种实施例中被包括在数据装置 102中的物理组件的表示。具体地,数据装置102包括高性能多核中央处理单元(CPU) 202和随机存取存储器(RAM) 204。数据装置102还包括存储装置210(诸如一个或多个硬盘或固态存储单元)。在各种实施例中,数据装置102存储(无论是在RAM 204、存储装置210和/或其他适当的位置)用于监控企业网络140和实现所公开的技术的信息。这样的信息的示例包括应用标识符、内容标识符、用户标识符、请求的URL、IP地址映射、策略和其他配置信息、签名、主机名/URL分类信息、恶意软件简档和机器学习模型。数据装置102还可以包括一个或多个可选的硬件加速器。例如,数据装置102可以包括被配置为执行加密和解密操作的密码引擎 206,以及被配置为执行匹配、充当网络处理器和/或执行其他任务的一个或多个现场可编程门阵列(FPGA)208。 [0016] 本文描述的由数据装置102执行的功能可以以多种方式提供/实现。例如,数据装置102可以是专用设备或设备集。数据装置102提供的功能也可以集成到通用计算机、计算机服务器、网关和/或网络/路由设备中,或者作为其上的软件来执行。在一些实施例中,被描述为由数据装置102提供的至少一些服务替代地(或附加地)由在客户端设备上执行的软件提供给客户端设备(例如,客户端设备104或客户端设备110)。 [0017] 每当数据装置102被描述为执行任务时,数据装置102的单个组件、组件子集或所有组件可以协作来执行该任务。类似地,每当数据装置102的组件被描述为执行任务时,子组件可以执行该任务和/或该组件可以结合其他组件执行该任务。在各种实施例中,数据装置102的部分由一个或多个第三方提供。取决于诸如数据装置102可用的计算资源量的因素,可以省略数据装置102的各种逻辑组件和/或特征,并且相应地适配本文描述的技术。类似地,数据装置102的实施例中可以包括附加的逻辑组件/特征,如果适用的话。在各种实施例中,被包括在数据装置102中的组件的一个示例是应用标识引擎,其被配置为标识应用(例如,使用各种应用签名,用于基于分组流分析标识应用)。例如,应用标识引擎可以确定一个会话涉及什么类型的流量,诸如Web浏览——社交网络;Web浏览——新闻;SSH;诸如此类。 [0018] 图2B是数据装置的实施例的逻辑组件的功能图。所示的示例是在各种实施例中可以包括在数据装置102中的逻辑组件的表示。除非另有说明,否则数据装置102的各种逻辑组件通常以各种方式可实现,包括作为一个或多个脚本的集合(例如,用Java、python等编写的,如果适用的话)。 [0019] 如所示出的,数据装置102包括防火墙,并且包括管理平面232和数据平面234。管理平面负责管理用户交互,诸如通过提供用于配置策略和查看日志数据的用户界面。数据平面负责管理数据,诸如通过执行分组处理和会话处置。 [0020] 网络处理器236被配置为从诸如客户端设备108的客户端设备接收分组,并将它们提供给数据平面234以用于处理。每当流模块238将分组标识为新会话的一部分时,它就创建新的会话流。基于流查找,后续分组将被标识为属于该会话。如果适用,则由SSL解密引擎 240应用SSL解密。否则,省略由SSL解密引擎240进行的处理。解密引擎240可以帮助数据装置102检查和控制SSL/TLS和SSH加密流量,并且从而帮助阻止否则可能隐藏在加密流量中的威胁。解密引擎240还可以帮助防止敏感内容离开企业网络140。可以基于诸如URL类别、流量源、流量目的地、用户、用户组和端口之类的参数来选择性地控制(例如,启用或禁用)解密。除了解密策略(例如,指定解密哪些会话)之外,可以分配解密简档来控制由策略控制的会话的各种选项。例如,可能需要使用特定的密码套件和加密协议版本。 [0021] 应用标识(APP‑ID)引擎242被配置为确定会话涉及什么类型的流量。作为一个示例,应用标识引擎242可以识别接收到的数据中的GET请求,并且断定该会话需要HTTP解码器。在某些情况下,例如在web浏览会话的情况下,所标识的应用可以改变,并且这样的改变将被数据装置102记录。例如,用户最初可以浏览公司Wiki(基于访问的URL分类为“Web浏览——生产力”),并且随后浏览社交网站站点(基于访问的URL分类为“Web浏览——社交网络”)。不同类型的协议具有对应的解码器。 [0022] 基于应用标识引擎242做出的确定,由威胁引擎244将分组发送到适当的解码器,该解码器被配置为将分组(其可以是无序接收的)组装成正确的顺序,执行令牌化,并且提取出信息。威胁引擎244还执行签名匹配,以确定对该分组应当发生什么。根据需要,SSL加密引擎246可以重新加密解密的数据。使用转发模块248转发分组以用于传输(例如,到目的地)。 [0023] 同样如图2B所示,策略252被接收并存储在管理平面232中。策略可以包括一个或多个规则,所述规则可以使用域和/或主机/服务器名来指定,并且规则可以应用一个或多个签名或其他匹配准则或启发法,诸如用于基于从受监控的会话业务流中提取的各种参数/信息对订户/IP流实施安全策略。提供接口(I/F)通信器250用于管理通信(例如,经由(REST)API、消息或网络协议通信或其他通信机制)。 [0024] 三.算法生成的域 回到图1,假设不法分子(使用系统120)已经创建了恶意软件130。不法分子希望诸如客户端设备104的客户端设备将执行恶意软件130的副本,从而危害该客户端设备,并且使该客户端设备变成僵尸网络中的僵尸。然后,受危害的客户端设备可以被指示执行任务(例如,加密货币挖掘,或参与拒绝服务攻击)并且向外部实体(诸如,命令和控制(C&C)服务器150)报告信息,以及接收来自C&C服务器150的指令(如果适用的话)。 [0025] 假设恶意软件作者在星期一早上(例如00:01)使用被盗的身份/信用卡信息注册的域“kjh2398sdfj.com”可到达C&C服务器150。虽然恶意软件130可以在其代码中明确地包括域“kjh2398sdfj.com”,但是诸如恶意软件130的静态/动态分析之类的(例如,由安全平台140执行的)技术可以使得安全公司(或其他适用的实体,诸如安全研究人员)有可能将域“kjh2398sdfj.com”标识为与C&C服务器相关联,并且采取补救动作(例如,在黑名单上公布域“kjh2398sdfj.com”,和/或采取行动来使C&C服务器关闭/不可到达)。此外,如果域“kjh2398sdfj.com”被硬编码到恶意软件130中,则一旦C&C服务器150被关闭,恶意软件作者就将潜在地无法切换恶意软件130所使用的命令和控制服务器(例如,将恶意软件从联系“kjh2398sdfj.com”切换到另一个仍然可到达的域),这使得恶意软件对恶意软件作者来说不太有用。 [0026] 代替将域“kjh2398sdfj.com”硬编码到恶意软件130中,另一种方法是恶意软件作者利用算法生成的域(“AGD”)。利用AGD,恶意软件130可以以编程方式生成多个域名,并且尝试依次连接到每个所生成的域名,直到成功连接,而不是尝试联系特定的预定域。此外,恶意软件可以继续生成域名,从而在“kjh2398sdfj.com”变得不再可到达的事件中,恶意软件可以成功地在新的域处联系C&C服务器。 [0027] 在以下示例中,假设恶意软件130使用客户端设备104的系统时钟时间作为种子,每五分钟生成一个ASCII字符串,并且然后试图连接到所生成的字符串(在将适当的顶级域添加到该字符串之后,诸如“.com”,如果适用的话)。恶意软件130(例如,当在诸如客户端设备104的客户端设备上执行时)首先生成“dwk2648vkwh.com”,并且试图在星期一早上0:00连接到它。由于恶意软件作者没有注册“dwk2648vkwh.com”(并且C&C服务器150经由“dwk2648vkwh.com”不可到达),因此客户端设备104将不会经由“dwk2648vkwh.com”连接到C&C服务器150。在下一个五分钟标记处,恶意软件130(例如,当在客户端设备104上执行时)将生成域“gwd4734qj5i.com”并且试图连接到该域(例如,在0:05)。恶意软件130将继续每五分钟生成域名(并试图连接到那些域名),直到(例如,在1:15)它生成并能够连接到(恶意软件作者在星期一0:01注册并上线的)“kjh2398sdfj.com”。 [0028] 典型地,恶意软件作者将在一个时间段——诸如两天或三天(或一周)内——使用第一域(例如,“kjh2398sdfj.com”),并且然后周期性地将C&C服务器(或启动其他C&C服务器,如果适用的话)切换到新的域(例如,“43hfd83hd3.com”)以挫败关闭C&C服务器/阻止对C&C服务器的访问的努力。恶意软件的域生成算法将对应地生成适当的新的、可到达的C&C域(例如,“43hfd83hd3.com”)以及作者将不会注册的其他域(例如,每五分钟),从而轮换恶意软件将用来成功到达适当的C&C服务器的域名。由于恶意软件130的作者选择了由恶意软件130使用的域生成算法(DGA),因此恶意软件作者能够以编程方式确定哪些域将由受危害的机器生成(以及恶意软件副本将在什么日期/时间试图与那些生成的域通信),并且因此可以在给定时间段内注册单个适当的域供C&C使用。典型地,恶意软件作者将在需要域之前注册新的域(例如,在执行域生成算法的客户端潜在地开始尝试连接到“43hfd83hd3.com”的几个小时内)。 [0029] 由恶意软件130生成的AGD看起来(例如,对于研究人员或其他观察者而言)似乎是随机的,并且因此对于安全公司来说是有问题的,特别是在恶意软件在短时间段内生成大量域的情况下。如果安全公司能够确定由一个特定恶意软件如何生成AGD,则该安全公司潜在地针对那些域采取补救动作。不幸的是,恶意软件作者典型地混淆他们的域生成算法,并且以使得难以以及时方式对恶意软件(和域生成算法)进行逆向工程的复杂程度这样做,如果不是不可能的话。例如,一个有才华的安全研究员可能需要花费几个月的努力来对单个域生成算法进行逆向工程。相反,恶意软件作者可以相对容易/快速地修改他们的域生成算法的工作方式(例如,每周改变算法)。当研究人员发现域生成算法如何工作时,恶意软件作者可以容易地切换到新的算法,这意味着研究人员可能必须从头开始分析新的算法——潜在地再次花费几个月的时间来发现新的算法如何工作。如将在下面更详细描述的,使用本文描述的技术,可以有效地检测联系AGD的尝试(例如,通过受危害的客户端设备104),并且响应于它们的检测采取各种补救动作,而不需要研究人员(例如,经由逆向工程)确定用于生成AGD的算法如何工作。 [0030] A.DNS解析 图1所示的环境包括两个域名系统(DNS)服务器(122和124)。如图所示,DNS服务器 122在ACME的控制下(用于由位于网络110内的计算资产使用),而DNS服务器124是公共可访问的(并且也可以由位于网络110内的计算资产以及其他设备使用,诸如位于其他网络(例如,网络114和116)内的那些设备)。企业DNS服务器122被配置为将企业域名解析成IP地址,并且进一步被配置为与一个或多个外部DNS服务器(例如,DNS服务器124)通信以解析域名,如果适用的话。 [0031] 为了连接到网站126(例如,www.example.com),诸如客户端104的客户端设备将需要将域解析为对应的互联网协议(IP)地址。这样的解析可以发生的一种方式是客户端设备 104将请求转发给DNS服务器122和/或124以解析该域。响应于接收到所请求域名的有效IP地址,客户端104可以使用该IP地址连接到网站126。类似地,为了连接到恶意C&C服务器 150,客户端设备104将需要将域“kjh2398sdfj.com”解析为对应的互联网协议(IP)地址。 [0032] 在各种实施例中,数据装置102包括DNS模块134,其被配置为促进确定客户端设备(例如,客户端设备104‑108)是否正在试图联系AGD,和/或阻止(例如,通过客户端设备104‑ 108)到AGD的连接。DNS模块134可以集成到装置102中(如图1所示),并且在各种实施例中也可以作为独立装置操作。并且,如同图1中所示的其他组件一样,DNS模块134可以由提供装置102(或安全平台140)的同一实体来提供,并且也可以由第三方(例如,不同于装置102或安全平台140的提供商的第三方)来提供。此外,除了防止连接到已知/可疑的AGD之外,DNS模块134还可以采取其他动作,诸如记录客户端访问AGD的尝试(给定客户端受到危害并且应当被隔离或者以其他方式由管理员进行调查的指示)。 [0033] 在各种实施例中,当客户端设备(例如,客户端104)试图解析域时,DNS模块使用该域作为对安全平台140的查询。该查询可以与域的解析(例如,与发送到DNS服务器122和/或 124以及安全平台140的请求)同时执行。作为一个示例,DNS模块134可以经由REST API向安全平台140的前端142发送查询(例如,以JSON格式)。使用下面更详细描述的处理,安全平台 140将确定(例如,使用AGD检测器138)被查询的域是否是AGD,并将结果提供回DNS模块134(例如,“非AGD”或“AGD”)。 [0034] B.良性域和AGD之间的差异 AGD典型地将具有与良性域不同的字符分布概率。通常,良性域将包括实际的词,或者至少包含可发音的字符分组(例如,“wikipedia.org”和“amazon.com”)。相反,AGD典型地将包含随机字符(例如,“zkkfpkbbmihohix.com”)。确定一个域是否由算法生成的一种方法是评估它的特征。在各种实施例中,安全平台140包括马尔可夫链分析器144,其被配置为评估给定域是AGD的似然性。 [0035] 图3中描绘了示例马尔可夫链模型的部分的视觉表示。特别地,它描绘了AGD和良性域这两者中涉及“ee”、“ea”、“ae”和“aa”的转换的相应概率。这样的马尔可夫链模型可以从包括已知良性域和已知AGD的训练数据中生成。可以使用马尔可夫链模型为给定的域计算得分(例如,‑0.35),并且应用阈值(例如,‑0.44或更低)来将“良性”或“AGD”的判定分配给该域。 [0036] 使用马尔可夫链的AGD分析足够快,使得安全平台140可以向数据装置102提供实时结果。不幸的是,马尔可夫链分析也可能导致假阳性。作为一个示例,诸如 “exampleeee.com”的域可能实际上是良性域,但是使用马尔可夫链分析可能被错误地标记为AGD。 [0037] 在各种实施例中,在响应于查询返回“AGD”的判定之前,“AGD检测器138”评估与该域相关联的历史信息。如图4A和4B所示,AGD和良性站点通常表现出非常不同的解析统计。 例如,给定的AGD将具有非常少(如果有的话)的成功解析(402),而良性站点,并且特别是流行站点将具有许多解析(404)。此外,AGD第一次被解析和最后一次被解析之间的时间长度(452)典型地比良性域(454)更短得多。AGD检测器138可以使用这样的历史信息来减少假阳性。作为示例,当域被确定(由马尔可夫链分析器144)为AGD时,域历史检查器146向数据库 160查询与该域相关联的解析信息。可以由决策引擎152使用阈值来确定对该域的最终判定。作为示例,假设一个给定的域的马尔可夫链分析得分为‑0.48。这样的得分(低于阈值‑ 0.44)将导致马尔可夫链分析器144将该域标记为AGD。如果域的解析计数高于给定的阈值(例如,20个或更多个解析)或者间隔高于给定的阈值(例如,1年),则AGD的判定可以被推翻为假阳性。 [0038] C.示例过程 图5图示了用于检测算法生成的域的过程的示例。在各种实施例中,过程500由安 全平台140执行。如果适用,则过程500也可以由其他类型的平台/设备来执行,诸如数据装置102、客户端设备104等。当接收到DNS查询时,过程500开始于502。作为一个示例,当DNS模块134从客户端设备104(主动或被动地)接收DNS解析请求时,由前端142在502接收DNS查询。在一些实施例中,DNS模块134将所有DNS解析请求作为查询提供给平台140进行分析。 DNS模块134也可以更有选择性地向平台140提供这样的请求。DNS模块134可能不向平台140查询域的一个示例原因是与该域相关联的信息被缓存在数据装置102中的位置(例如,因为客户端设备106先前请求了对该域的解析,并且先前针对该域执行了过程500)。另一个原因是该域在白名单/黑名单等中,并且因此不需要附加的处理。 [0039] 在504,对在502接收的域执行马尔可夫链分析。执行这样的分析的一种示例方式是使用以Go或另一种适当语言编写的马尔可夫链分析器(144)。如上面所讨论的,可以使用包括已知良性和已知算法生成的域的训练集来生成马尔可夫链模型,以供马尔可夫链分析器144使用。 [0040] 在506,确定在502接收的域是否涉及算法生成的域。作为一个示例,如果马尔可夫链分析器144已经确定(例如,将得分与阈值进行比较)该域不是通过算法生成的,则决策引擎152(以Go或另一种适当的语言编写)可以返回“良性”的判定。如上面所讨论的,专门使用马尔可夫链分析器144进行判断的一个潜在缺点是可能出现假阳性。在各种实施例中,决策引擎152还在返回AGD结果之前考虑附加信息。例如,决策引擎152可以将阈值应用于存储在数据库160中并由域历史检查器146(也是以Go或另一种适当的语言编写)检索的历史信息。 数据库160的一个示例是Redis数据库,并且数据库160中包括的示例信息是对给定域进行请求的每个日期/时间戳,以及解析是否成功(或者其他适当的信息,诸如该域的所解析的IP地址)。存储在数据库中的历史信息可以由安全平台140收集(例如,通过从数据装置102、 136和148中的每一个收集关于由客户端在它们相应的网络110、114和116内部做出的解析请求的信息)。存储在数据库中的历史信息也可以至少部分地由一个或多个第三方提供(例如,由DNS服务器124提供),如果适用的话。 [0041] 响应于决策引擎152确定所述域是通过算法生成的,可以采取各种动作。作为一个示例,安全平台140可以利用适当的结果(例如,“AGD”的判决)来响应数据装置102。数据装置然后可以基于策略252采取动作,诸如阻止客户端设备(例如,客户端设备104)和AGD之间的通信。数据装置102还可以采取其他动作,诸如警告管理员给定的客户端设备已经试图联系AGD(并且因此可能受到危害/具有在其上执行的恶意软件),将客户端设备与网络110上的其他节点隔离等)。 [0042] 安全平台140还可以响应于决策引擎152确定所述域是通过算法生成的而采取附加的动作。作为一个示例,安全平台140可以尝试确定该域是否属于特定的DGA家族。这有助于确定例如已经(潜在地)危害客户端104的恶意软件的性质。一种将给定的域分类为家族的方法是提取与该域相关联的特征,并且使用机器学习模型。 [0043] 如图1所示,安全平台140包括DGA家族标签器156(以python或另一种适当的语言编写)。DGA家族标记器156利用随机森林模型158,该模型是使用来自已知DGA家族集合的信息训练的。这样的特征的示例包括域的TLD是什么(例如,“.com”相对于“.so”),域中特定字符的出现次数(例如使用“‑”的次数),域的长度,域中不同字符的数量,域中数字与非数字的比率,根域的第一个字符是否是数字等。这样的特征可以由特征提取器156提取(以python或另一种适当的语言编写)。也可以使用其他方法,诸如通过应用启发法,或者使用其他类型的机器学习模型,诸如支持向量机,如果适用的话。 [0044] 如果随机森林模型指示该域和已知家族之间的匹配,则该域可以与该家族相关联(例如,作为存储在数据库160中的信息),并且可以采取其他适当的动作(例如,警告管理员客户端设备104被看到表现出与特定家族相关联的行为)。 [0045] 尽管为了清楚理解的目的,已经详细描述了前述实施例,但是本发明不限于所提供的细节。成长许多实现本发明的替代方式。所公开的实施例是说明性的,而不是限制性的。