本文主要参考的是Zhauniarovich Y, et al[1]的工作,发表在Acm Computer Surveys上的一篇较为系统地阐述了基于DNS数据分析来进行恶意域名检测的研究背景,研究过程和研究建议等内容的综述。

目录

  • 1 研究背景
    • 1.1 DNS的背景知识
      • 1.1.1 DNS是什么
      • 1.1.2 域名的结构
      • 1.1.3 域名的解析过程
    • 1.2 DNS的安全问题
      • 1.2.1 DNS的安全
      • 1.2.2 DNS数据的安全
      • 1.2.3 保护用户免受利用伪造DNS进行的攻击
      • 1.2.4 保护用户免受利用真正DNS进行的攻击
        • 1.2.4.1 Domian-Flux
        • 1.2.4.2 IP-Flux(or Fast-Flux)
    • 1.3 通过分析DNS数据进行恶意行为检测
      • 1.3.1 恶意行为分类
      • 1.3.2 检测途径
      • 1.3.3 DNS数据分析的好处
  • 2 研究过程
    • 2.1 DNS数据的获取(DNS data collection)
      • 2.1.1 从何处获取
        • 2.1.1.1 Host-Resolver
        • 2.1.1.2 DNS-DNS
      • 2.1.2 如何去获取
        • 2.1.2.1 主动域名数据获取 (Active DNS Data Collection)
        • 2.1.2.2 被动域名数据获取 (Passive DNS Data Collection)
      • 2.1.3 面对的挑战
    • 2.2 相关数据的补充
      • 2.2.1 地理位置信息 (Geo-location)
      • 2.2.2 自治系统号 (Autonomous System Number ,ASN)
      • 2.2.3 注册记录 (Registration Records)
      • 2.2.4 IP/域名的黑名单/白名单(IP/domain Blacklists/Whitelists)
      • 2.2.5 相关联的资源记录 (Associated Resource Records)
      • 2.2.6 网络数据 (Network Data)
    • 2.3 正确的标记
      • 2.3.1 正确标记恶意域名
      • 2.3.2 正确标记良性域名
      • 2.3.3 挑战
    • 2.4 算法的设计
      • 2.4.1 特征
        • 2.4.1.1 内部特征和上下文特征 (Internal vs. Contexual Features)
        • 2.4.1.2 数据依赖性特征和数据独立性特征 (DNS Dataset Dependent vs. Independent Features)
        • 2.4.1.3 单一域名特征和多域名特征 (Mono vs. Multi Domains Features)
      • 2.4.2 检测方法
        • 2.4.2.1 基于知识的方法 (Knowledge-based Approaches)
        • 2.4.2.2 基于机器学习的方法 (Machine-Learning-Based Approaches)
        • 2.4.2.3 混合方法
      • 2.4.3 结果
      • 2.4.4 挑战
        • 2.4.4.1 特征方面的挑战
        • 2.4.4.2 检测算法方面的挑战
        • 2.4.4.3 结果方面的挑战
    • 2.5 评价的方法
      • 2.5.1 评价标准
      • 2.5.2 验证策略
  • 3 研究建议

1 研究背景

1.1 DNS的背景知识

1.1.1 DNS是什么

域名系统(Domain Name System, DNS)是用于连接因特网或专用网的计算机、服务或其他资源的一种结构上分层、分散的命名系统[2]。一般通过IP地址来访问互联网,但由于其难记的弊端,于是改用域名来访问,而从域名到实际IP的映射就需要DNS这种分布式数据库通过DNS协议来实现了。举例:记下93.184.216.34(IPv4)或2606:2800:220:1:248:1893:25c8:1946(IPv6)这种IP地址很困难,但是比如使用域名www.example.com通过DNS解析成IP再进行访问就非常方便了。

1.1.2 域名的结构

域名是一种后缀树形式的结构,叫做域名空间(domain namespace)。如 www.baidu.com,其中点 ’ . '(dot)用来划分层次结构,点之间的部分称为标签(label)。最右边的标签叫做顶级域名(Top Level Domain, TLD),如 " . com "。TLD左边的叫做二级域名,如 " baidu . com "。全限定域名(Fully Qualified Domain Name, FQDN)是树中的一个叶子节点,如 "www.baidu.com ",对应着特定的资源记录(Resource Records, RRs)信息。

1.1.3 域名的解析过程

为了访问资源,用户(client)需要发送请求信息,解析器(resolver)通过递归查找(recursive query)的方式代表用户通过本地域名服务器与各个域名服务器进行连接,并将最终的查询结果返回给用户。如果解析器缓存中无相应信息,则向本地域名服务器请求查询。若本地域名服务器无缓存相应信息,则需要向根服务器(Root server)查询。若根服务器有相关信息,则将其返回给本地的域名服务器,解析器再将其返回给用户,否则需要向其下级的授权域名服务器(Authoritative server)继续查询。一旦解析器和本地域名服务器得到了域名和对应的IP信息,就会将它们存在缓存中,下次就无需查询相同信息。过程如图1所示(来源[3],侵删):

1.2 DNS的安全问题

既然DNS有如此重要的作用,那么保障其安全就十分必要。一般可将其划分为四个方面,如下:

1.2.1 DNS的安全

DNS的各个部分一直以来都在受到广泛的攻击,比如最近发生在DynDNS的攻击[4]。保护的方式主要有使用更好的软件安全技术、大量增加关键DNS服务器的副本以及部署对抗DDos的缓解工具等。

1.2.2 DNS数据的安全

攻击者会试图破坏合法DNS服务器提供的数据,由此来达到控制资源流向的目的。DNS劫持和DNS毒药攻击从为人所知到现在已经超过二十五个年头了,然而,直到2008年Kaminsky发现了DNS的致命漏洞后[5],这方面的安全问题才真正开始引起人们的重视。

攻击者也可以通过抢先重注册某些即将到期的热门网站,借用户对该网站的信任非法获取广告收益,拦截电子邮件,或向用户推送恶意内容。

一些攻击使用域名抢注(Cybersquatting),抢先注册已有的公司名或人名的域名,或者注册与其名字非常相似的域名,来达到从中非法获利的目的,或以高价卖给受害的公司或个人[6]。误植抢注(Typosquatting, 自译,下同),该攻击是利用用户在输入域名时可能会犯的输入错误进行钓鱼网站的注册[7, 8, 9, 10, 11],例如模仿维基 “www.wikipedia.org” 注册钓鱼网站 “wwwwikipedia.org”;比特抢注(Bitsquatting)[12],假定内存、CPU缓存由于环境,或者制造缺陷,产生内存的比特位翻转,就可能导致访问了与目标网站域名相似的钓鱼网站,可参考 http://www.freebuf.com/column/133871.html ;同音抢注(Soundsquatting)[13],利用用户在输入域名的相近音时的迷惑性错误注册钓鱼网站,如 “www.wikepadia.org”;组合抢注(combosquatting)[14],通过向知名域名添加其他关键词的方式构造并注册新的域名进行恶意行为[15],如 “alipay-login.com” 仿造支付宝登录网页。

1.2.3 保护用户免受利用伪造DNS进行的攻击

攻击者利用恶意软件和僵尸网络来进行主机和 C&C服务器之间的非法通信及恶意活动,包括使用txt文件方式,将控制命令编码进域名请求中[16]等。最近,攻击者正利用DNS基于UDP协议的特点,进行所谓的反射性拒绝服务攻击(Reflected Denial-of-Service attack)[17],真正的DNS服务器被用来向受害者发送大量的无用应答。

1.2.4 保护用户免受利用真正DNS进行的攻击

本综述的主要关注点在于利用真正的DNS发动的恶意行为。早些时候,恶意软件通过硬编码C&C服务器的IP地址到恶意程序中的方式来获取命令或者盗取数据。但是这种做法很快就被抛弃了,因为一旦恶意软件的某一个被抓住,所有的IP都会被破解出来并导致僵尸网络直接被封掉,所以可以通过DNS来避开直接使用IP。同样的为了躲避IP黑名单(blacklist),域名也需要避开直接使用。攻击者为了使得手段更灵活多变,创造了以下两种主要的技术。

1.2.4.1 Domian-Flux

该手段使一个IP地址可以对应着多个不同的FQDNs,变化的域名使得攻击者和肉鸡通信的集合点(rendezvous points)动态变化,安全防御人员就难以将其关闭。而这种动态产生域名的技术,称作域名生成算法(Domain Generation Algorithm, DGA)。该算法通过将日期、时间、随机数、字典等作为种子(seeds),通过一定的函数算法产生新的随机字符串前缀,添加TLD后得到一个新的域名(Algorithm-Generated Domain, AGD)。攻击者只需成功注册一个AGD即可实现僵尸网络的控制,而防御人员为了彻底关闭网络需要找到并屏蔽所有可能的AGD,难度极高。具体的介绍可参考 http://www.freebuf.com/articles/network/114693.html 。

1.2.4.2 IP-Flux(or Fast-Flux)

在正常的DNS服务器中,用户对同一个域名做DNS查询,在较长的一段时间内,无论查询多少次返回的结果基本上都是不变的。Fast-IP是不断地变换某一个域名对应的IP地址,短时间内查询Fast-flux技术部署的域名会得到不同的返回结果。虽然查询的域名相同,但是返回的IP地址不同,导致访问的服务器主机是不同的,由此保护了僵尸网络的实际主机地址。具体的介绍可参考 http://www.freebuf.com/articles/network/136423.html 。

尽管以上介绍的恶意攻击技术较为棘手,但庆幸的是它们往往会在DNS数据中留下一些蛛丝马迹。所以才有了如何通过DNS数据分析来检测恶意行为这个研究话题,也正是接下去所要重点讨论的。

1.3 通过分析DNS数据进行恶意行为检测

1.3.1 恶意行为分类

一般来说,可以将一般的恶意行为分为以下几类:

  1. 传播恶意软件 (to disseminate malware)
  2. 帮助C&C服务器进行通信 (to facilitate command and control (C&C)communications)
  3. 发送垃圾邮件 (to send spam messages)
  4. 诈骗和钓鱼 (to host scam and phishing webpages)

1.3.2 检测途径

恶意行为的检测有多种方式或途径,包括:

  1. 分析网络流量[18, 19]
  2. 检查网页内容[20, 21]
  3. 检查URL[22]
  4. 综合使用以上技术[23, 24]
  5. 分析DNS数据(aurhor评价其为最有前途的研究方向)

1.3.3 DNS数据分析的好处

具体来说,通过分析DNS数据来进行恶意检测具有诸多好处,如下:

  • DNS数据只是整个网络数据中的一小部分,数据量适中便于进行分析、处理和实验。
  • 恶意行为会在DNS数据中留下痕迹,因此可以通过提取有意义的特征(features)来分析域名和恶意行为之间的关系。
  • 很多被提取的特征可以进一步和其他相关的补充信息进行联合,给分析提供了更加充足的空间。
  • 大部分的DNS流量数据都是未加密的,使得获取并实验成为了可能。
  • 可以通过不断进行的DNS数据分析提前预知和防卫即将到来的攻击。

2 研究过程

研究的过程大体可以分为以下五个方面:

  1. DNS数据的获取(DNS data collection)
  2. 相关数据的补充(Data enrichment)
  3. 算法的设计(Algorithm design)
  4. 正确的标记(Ground Truth)
  5. 评价的方法(Evaluation Methdology)

如下图所示。

2.1 DNS数据的获取(DNS data collection)

2.1.1 从何处获取

根据DNS分布式的特点,有多种获取DNS请求和响应的途径。可将其分成两个大类介绍如下。

2.1.1.1 Host-Resolver

获取数据的位置为上图的1和8处。

这种方式的好处就是可以获取域名解析器的内部接口,而其提供了可能直接与特定恶意行为相关的用户请求和响应的细节信息。比如,被僵尸网络控制的主机往往会发送相似形式的域名请求信息。此外, 任何公司和研究机构都可以直接在自己的解析器中部署检测装置来获取数据,而不需要和其他部门进行合作。

此方法的局限之处在于其仅仅获取了某个单独机构的信息,其对于研究各种恶意行为的模式往往不够充分。而像大型ISPs这种机构的解析器拥有较大数量的用户,却由于安全和隐私考虑不对外开放获取途径。

2.1.1.2 DNS-DNS

获取数据的位置为上图的2-7处。

最常用的获取DNS-DNS流量数据的位置是:(i)授权域名服务器,包括负责TLDs的服务器(ii)解析器的外部接口。

不难理解,检测获取的位置越靠近DNS树的根节点,获取到的数据的覆盖范围越大。然而事实上,其能够获取几乎所有的域名请求,却无法获取域名应答。而越低级的服务器能获得更多的应答信息,却缺乏请求信息。

另外,这种方式相较于Host-Resolver形式最主要的缺点是其数据不容易获取,需要通过合作等形式得到各个服务器数据获取的权限。

2.1.2 如何去获取

分成主动和被动两种形式。

2.1.2.1 主动域名数据获取 (Active DNS Data Collection)

主动域名数据是通过采集者有意发送DNS请求并记录相应的应答来实现的。其中请求的域名数据有多种来源,包括:有名的域名集(如Alexa Top Sites等),黑名单中出现的域名,以及来自授权域名服务器文件的域名等。

主动域名获取方式主要得到的是域名的DNS记录,比如被解析出来的IP地址,规范化域名,记录的TTL等。

这种获取方式的主要优点是灵活性和简便性比较好。它可以自主采集所需的特定域名信息,可以在恶意行为之前,提前地感知域名异常信号,比如它可以检测到新注册还未被使用的恶意域名。此外,由于主动获取没有与特定的单个用户直接相关,所以用于研究就没有隐私泄漏的隐患,然而也因此失去了探究用户级别特征的能力。局限性还在于如果请求的域名被局限在一少部分主机,且对应于某一域名的IP是与请求发送者的地理位置相关的,那么数据就会带来极大的限制和偏向性。

2.1.2.2 被动域名数据获取 (Passive DNS Data Collection)

被动域名获取主要是通过在DNS服务器部署相应的数据获取检测器来得到包含DNS请求和应答的服务器日志文件。

所以,由于获得的是服务器的数据(数据可能来自于不同地方的机构部门),所以这种被动获取方式得到的数据具有更加丰富的特征和统计信息,可以据此研究更多的恶意行为特征。相应的,该种方式可能会带来隐私泄露问题。所以为了在隐私保护和研究应用之间进行权衡,会对数据进行一些聚集等处理。

2.1.3 面对的挑战

  1. 首先数据获取并不那么容易,并且机器学习等方法需要大量的数据来进行分析,否则可能得不到有意义的结果。
  2. 其次在于数据共享。即使某研究者能获取某ISP的DNS日志数据,其他研究者也很难获取相同的数据进行检验。现在该领域的研究缺乏不同实验技术之间的系统性检验和对比,而根本原因就在于无法建立公开的可用数据集。其中主要的考虑依然是隐私保护等。
  3. 此外,一些数据集可能具有时间和空间的特性,所以实验结果很可能具有偏向性。研究者需要评估自己的结果是否具有较好的泛化性能。

2.2 相关数据的补充

为了能够进一步挖掘恶意行为更深层次的信息和特征,多数的检测方法都会使用除了DNS数据之外的相关数据进行补充。对相关补充数据介绍如下。

2.2.1 地理位置信息 (Geo-location)

IP和域名的地理位置信息可以被用来分析相应的DNS请求和其主机的信息。

一般该数据可获取自Maxmind数据库[25]。

2.2.2 自治系统号 (Autonomous System Number ,ASN)

这个数据信息可以帮助我们了解资源的分布和使用信息。比如,合法的域名(除了使用CDNs的)通常拥有一个或少数几个ASNs,而恶意域名则通常不断地更换ASN来试图躲避检测。ASN还可以用于分析不同的网络服务信息。

IP-ASN映射关系信息可以从Maxmind数据库 [25]或者使用Team Cymru服务 [26]得到。

2.2.3 注册记录 (Registration Records)

恶意攻击发生前通常会需要进行大量的域名注册,所以可以通过注册记录信息来分析出恶意行为隐患,提前做好安全防御。

注册记录信息通常可以从使用WHOIS协议的服务器中获取到 [27]。

2.2.4 IP/域名的黑名单/白名单(IP/domain Blacklists/Whitelists)

被研究的域名需要和一些公开确认的IP/域名进行比较分析。比如Notos [28]分析了与某一个域名相关联的IP地址有多少是进入了黑名单的,这可以被看成是该域名的“恶意程度”的一个参考指标。

2.2.5 相关联的资源记录 (Associated Resource Records)

从DNS数据库中获得的相关联的一些RRs信息,可能能够提供某域名或IP的更多可供挖掘的信息。比如Hao等人[29]发现恶意域名的 DNS MX 在IP地址空间的分布信息与良性域名是不同的。还有,Prieto等人[30]发现与僵尸网络相关的域名通常没有任何相关联的MX记录信息。

2.2.6 网络数据 (Network Data)

网络活动也能够提供一些有价值的信息,比如与某域名相关联的一个网站,它的HTTP响应是什么,哪个端口是打开的等。

这种数据的获取可以用自己设置的探测针(probes)或者使用因特网扫描系统如Censys或Shodan等。

挑战:
IP和域名的关联信息随时间变化,这就带来了一系列的困难。首先,补充信息需要与DNS数据信息来源于同一个时间段,这对数据的获取来说增加了不小的难度。其次,正是由于第一个问题,导致了需要不断地管理和维护巨量的DNS和关联的信息,对于普通的研究者来说可能会带来不小的困难。

2.3 正确的标记

为了能够使恶意检测更加准确,数据的恶意或者良性的标记需要尽可能的正确。

2.3.1 正确标记恶意域名

恶意域名的正确标记主要从公开的黑名单中提取。此外,还可以从专业的黑名单/白名单中,或是一些杀毒安全公司(如 Symantec)的信誉系统中获取。

2.3.2 正确标记良性域名

良性域名的标记主要从一些较为热门的域名集中获得。比如,Alexa top ranked domains[31]就常常用于研究。此外,来自“gov”、“mil”或者来自 Google 和 Microsoft 的一般被认为比来自 “com” 或是 “info” 的更加可信。一些来自 McAfee SiteAdvisor,Google Safe Browsing,或 Web of Trust 的良性域名也可以被用来作为良性域名的正确标记样例。

2.3.3 挑战

首先,恶意域名的正确标记面对的主要挑战包括:

  1. 恶意的行为有多种,包括发送垃圾邮件、C&C、包含不道德或违法信息、包含成人内容等。一种域名可能因为发送垃圾邮件成为恶意域名,但是在分析另一种恶意行为时,它很可能就不属于恶意的了,所以要对具体的恶意行为进行区分,或者直接笼统分类为“恶意域名”。
  2. 黑名单可能来源于不同的数据获取方式,由此可能产生一些问题。如来自一些原始数据源,来自对网页内容进行爬虫并分析,来自运行恶意软件并分析连接的域名,来自对僵尸网络协议和DGA的域名生成种子进行反向工程,以及不同数据来源的数据整合等。
  3. 没有任何的黑名单是完全可信的。

良性域名的正确标记面对的主要挑战是:一个域名被标记为良性,很可能只是因为其暂时未被扫描或是扫描之时未显露出恶意性质导致其未被列入黑名单,而被间接认为是良性的。

良性域名与恶意域名的正确标记皆需面对的主要挑战,是如何去区别标记不同级别的域名。比如我们应该认为一个恶意域名的子域名也是恶意域名吗?我们应该认为一个子域名中的大多数都是恶意域名的域名也是恶意域名吗?其实是无法说清的。同样的,子域名中的大多数都是良性域名的域名也不能被直接判定为良性域名。此外,训练集若使用的标记数据的量是不平衡的,也被认为会对实验结果产生一定的影响。

2.4 算法的设计

可以从三个角度来进行讨论:

  • 特征:使用了哪些特征?
  • 方法:基于什么技术进行检测?
  • 结果:产生了什么结果?

2.4.1 特征

被提取特征的质量对实验方法的成功与否起到了至关重要的作用。尽管有些特征可能具有较高的实验精度,但是其很容易被攻击者通过某些小的修改而失效,所以,特征在精度和鲁棒性两方面都需要表现优良。选择从三个角度进行特征的对比说明。

2.4.1.1 内部特征和上下文特征 (Internal vs. Contexual Features)

内部特征与上下文特征的概念与 Perdisci[32]提出的被动与主动特征相类似(被动特征指能直接从DNS请求中提取出来的特征,而主动需要统计出一些附加的外部信息。为了与数据获取的主动与被动相区别开来,所以引入了这种新的叫法。)

  • 内部特征

这些特征可以从DNS RRs中被直接提取出来,不需要任何外部的补充信息。比如 “域名的平均生存时间(TTL)值”等。

内部特征具有简单的优势,它往往能反映出较强的恶意与良性的区别关系。在DGA检测与一些基于图的方法中被经常使用。

  • 上下文特征

这些信息来自于DNS和外部信息的结合。如“某域名对应的IPs包含多少ASNs”,这个特征需要知道IP-AS的映射关系信息。

上下文特征的优点在于能提供比内部特征更多的,可能包含恶意行为的其他信息。

2.4.1.2 数据依赖性特征和数据独立性特征 (DNS Dataset Dependent vs. Independent Features)

  • 数据依赖性特征
    数据依赖性特征的实验表现极易受被选数据集的影响。如“一个域名被多少个IP所分配到”,“一对域名共享了多少ASNs”等。
  • 数据独立性特征
    数据独立性特征的实验表现不容易受被选数据集的影响。如“一个域名在知名搜索引擎上的点击量”,“一个域名的n-gram分布信息”

2.4.1.3 单一域名特征和多域名特征 (Mono vs. Multi Domains Features)

  • 单一域名特征
    此特征一般是针对某一个单独的域名进行分析。比如“拥有某一个域名的国家数量”。如果实验使用这种特征,则可以较好的在不同的数据集上进行训练等实验。
  • 多域名特征
    此特征往往建立一对对域名之间的联系关系信息,尤其在基于图的方法和聚类方法中较为多见,其对数据量的需求较大。

2.4.2 检测方法

2.4.2.1 基于知识的方法 (Knowledge-based Approaches)

基于知识的方法需要一些专业知识,这些知识一般来自于对恶意域名行为相关性研究的探索中。比如,Sato等人[33]发现归属于同一个恶意软件家族的恶意域名趋向于同时发送请求信息,所以通过研究未知域名与已知恶意域名共同出现的概率大小来判断未知域名的恶意性。

此种方法极大的缺点是专家经验往往不够,一方面不能直接挖掘出高维度的关系,另一方面恶意攻击者会经常做些行为,而这些方法不能自动地完成调整导致检测失效。

2.4.2.2 基于机器学习的方法 (Machine-Learning-Based Approaches)

现在大多数使用的还是基于机器学习的检测方法,这是一种通过数据来挖掘关系的方法,并且可以根据使用的数据类型将其分类如下。

  • 监督学习算法 (Supervised Learning Algorithms)

此算法需要所有数据集完成良性或者是恶意的标记。
监督学习的好处在于其能简单且高效地进行训练和学习,训练后的模型可以直接用于检测。

然而之前提到过,只有极少部分的数据是有标记的,而将所有数据都进行正确标记几乎是不可能的,且费时费力,所以只能尽可能标记尽量多的可信度较高的数据。其次,监督学习容易产生过拟合,导致更换数据集后泛化性能大大降低。

  • 半监督学习算法 (Semi-supervised Learning Algorithms)

半监督学习算法被提出用于解决上述的标记数据不够等问题。它可以从标记和未标记的数据中同时学习,其中未标记的数据用来帮助机器学习算法修正从标记数据中获得的关系假设。

其中,基于图的推断方法和聚类方法是目前较为火热的基于半监督的用于恶意检测的方法。

  • 无监督学习算法 (Unsupervised Learning Algorithms)

无监督的方法摆脱了对数据标记的依赖。比如,可以通过选择良好的,可能与恶意行为相关的特征,并将其通过聚类分成两类,再确认每类分别是良性的还是恶意的域名。

尽管此类方法能够摆脱对标记数据的依赖,但是由于其算法难以设计使其往往很少被实际所使用。

2.4.2.3 混合方法

现在大多数所真正在使用的方法仍旧以混合方法为主。这种混合可以通过混合使用多种机器学习方式来实现,也可以通过混合使用知识和机器学习的方式实现。

2.4.3 结果

此处所指的结果并非是使用某种方法后所得到的实验结果的介绍,而是对结果的说明。之前提到过,恶意行为有多种类型,包括:发送垃圾邮件,生成钓鱼网页,服务C&C通信等。所以,跟据实验可以将结果分成以下两类分别说明。

  • 不定恶意行为检测 (Malicious Behavior Agnostic Approaches)

不定的恶意行为检测不去划分恶意行为的具体类型,而是宏观分析域名的多种行为联系。

  • 特定恶意行为检测 (Malicious Behavior Specific Approaches)

相对的,特定恶意行为检测是去挖掘具体的恶意行为的特点

2.4.4 挑战

2.4.4.1 特征方面的挑战

特征的提取在各个研究中都不是一件容易的事情,尤其是在恶意域名检测领域。为了避免恶意攻击者对算法进行小修改从而导致检测算法失效,所提取的特征不仅要求具有区分良性和恶意的较高的精度,并且需要具有较好的鲁棒性。然后事实是,目前还没有系统合理的方法来定量判别特征的鲁棒性。

2.4.4.2 检测算法方面的挑战

  • 首先,实际的场景中需要处理的数据量很可能会比实验研究的要来得大,所以需要明确检测算法是否仍然适用。一些基于大数据来调整参数的方法可以借助于Apache Hadoop或Apache Giraph等平台来实现。还有做法是去除一些看起来不那么重要的部分数据,但是这种做法可能导致一些恶意域名的丢失。所以需要一种能同时对算法的复杂性和扩展性进行评估的方法。
  • 其次,算法实验前的时间消耗也需要进行考虑。比如在确定一个域名的恶意性质时需要进行大量请求信息的观察和分析,前期时间花费太大。
  • 然后,需要知道攻击者会根据防御来调整自己的策略以躲避检测,所以要对算法进行及时的更新。
  • 最后,缺乏一种可以对各种域名检测算法的效率进行定量比较分析的系统性方法。另外,很多研究者不愿意公开自己的数据集和实验代码导致实验无法进行对比和复现也带来了挑战。

2.4.4.3 结果方面的挑战

结果方面最大的挑战来源于恶意域名的明确性。比如,发送垃圾邮件的网站一定可以被认定为是恶意的网站。但是,如发布成人内容的网页,在一些研究中被认为是恶意的,在另一些中却认为是良性的。所以,研究者必须要明确你的研究中哪些是恶意域名。

2.5 评价的方法

之前提到的很多检测方法都用到了机器学习方法,因此一些机器学习常用的评估方法也可以被采用。

2.5.1 评价标准

可参考机器学习的评价标准。https://blog.csdn.net/fisherming/article/details/80209182 。

2.5.2 验证策略

首先,可参考机器学习的验证策略。 https://blog.csdn.net/yawei_liu1688/article/details/79138202?utm_source=blogxgwz0 。

其次,域名检测的研究需要考虑时间、空间和对象上的差异性,验证策略需要进行一些补充。

  1. 交叉网络验证(Cross-networks validation)
    训练和测试集的数据需要来自不同的地区。
  2. 交叉时间验证(Cross-time validation)
    训练和测试的数据需要来自不同的时间周期。
  3. 交叉黑名单(Cross-blacklists)
    训练和测试的数据需要来自不同的恶意软件黑名单。

3 研究建议

进行恶意域名的检测研究需要明确以下一些问题:

  • 数据来源:使用哪些类型的DNS数据,数据的正确标记用什么,使用哪些补充数据,以上数据和信息如何获取;
  • 特征和数据分析方法:怎样依据恶意行为来选择相应的特征,根据特定的恶意域名类型、特性及所选特征选择什么检测算法来分析;
  • 评估方法和验证策略:标准的评估方法是否适用,需要进行哪些方法的补充,如何评价方法的鲁棒性。

等等。

参考文献:

[1] Zhauniarovich Y, Khalil I, Yu T, et al. A Survey on Malicious Domains Detection through DNS Data Analysis[J]. Acm Computing Surveys, 2018, 1(1).

[2] Domain Name System of Wikipedia. Retrieved from: https://en.wikipedia.org/wiki/Domain_Name_System

[3] 51cto blog of “the process of domain name’s resolve”. Retrieved from http://blog.51cto.com/freeloda/1220398.

[4] Kyle York. 2016. Dyn statement on 10/21/2016 DDoS attack. Retrieved from http://dyn.com/blog/dyn-statementon-10212016-ddos-attack/.

[5] 2008. Vulnerability Note VU#800113: Multiple DNS implementations vulnerable to cache poisoning. Retrieved from http://www.kb.cert.org/vuls/id/800113.

[6] Cybersquatting of Wikipedia. Retrived from https://en.wikipedia.org/wiki/Cybersquatting.

[7] Pieter Agten, Wouter Joosen, Frank Piessens, and Nick Nikiforakis. 2015. Seven months’ worth of mistakes: A longitudinal study of typosquatting abuse. In Proceedings of the Network and Distributed System Security Symposium.

[8] Anirban Banerjee, Md Sazzadur Rahman, and Michalis Faloutsos. 2011. SUT: Quantifying and mitigating URL typosquatting. Comput. Netw. 55, 13 (2011), 3001–3014.

[9] M. T. Khan, X. Huo, Z. Li, and C. Kanich. 2015. Every second counts: Quantifying the negative externalities of cybercrime via typosquatting. In Proceedings of the IEEE Symposium on Security and Privacy. 135–150.

[10] Janos Szurdi, Balazs Kocso, Gabor Cseh, Jonathan Spring, Mark Felegyhazi, and Chris Kanich. 2014. The long “taile” of typosquatting domain names. In Proceedings of the USENIX Security Symposium. 191–206.

[11] Wang Y M, Beck D, Wang J, et al. Strider Typo-Patrol: Discovery and Analysis of Systematic Typo-Squatting[J]. SRUTI, 2006, 6: 31-36.

[12] Nick Nikiforakis, Steven Van Acker, Wannes Meert, Lieven Desmet, Frank Piessens, and Wouter Joosen. 2013. Bitsquatting: Exploiting bit-flips for fun, or profit? In Proceedings of the International Conference on World Wide Web. 989–998.

[13] Nick Nikiforakis, Marco Balduzzi, Lieven Desmet, Frank Piessens, and Wouter Joosen. 2014. Soundsquatting: Uncovering the use of homophones in domain squatting. In Proceedings of the International Conference on Information Security. 291–308.

[14] Panagiotis Kintis, Najmeh Miramirkhani, Charles Lever, Yizheng Chen, Rosa Romero-Gómez, Nikolaos Pitropakis, Nick Nikiforakis, and Manos Antonakakis. 2017. Hiding in plain sight: A longitudinal study of combosquatting abuse. In Proceedings of the ACM SIGSAC Conference on Computer and Communications Security. 569–586.

[15] 百度安全:眼皮下的冒牌货:Combosquatting域名抢注的测量研究。Retrived from https://anquan.baidu.com/article/324.

[16] Christian J. Dietrich, Christian Rossow, Felix C. Freiling, Herbert Bos, Maarten van Steen, and Norbert Pohlmann. 2011. On botnets that use DNS for command and control. In Proceedings of the European Conference on Computer Network Defense. 9–16.

[17] Christian Rossow. 2014. Amplification hell: Revisiting network protocols for DDoS abuse. In Proceedings of the Network and Distributed System Security Symposium.

[18] Seungwon Shin, Zhaoyan Xu, and Guofei Gu. 2012. EFFORT: Efficient and effective bot malware detection. In Proceedings of the IEEE INFOCOM. 2846–2850.

[19] Ting-Fang Yen and Michael K. Reiter. 2008. Traffic aggregation for malware detection. In Proceedings of the International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. 207–227.

[20] Davide Canali, Marco Cova, Giovanni Vigna, and Christopher Kruegel. 2011. Prophiler: A fast filter for the largescale detection of malicious web pages. In Proceedings of the International Conference on World Wide Web. 197–206.

[21] Birhanu Eshete, Adolfo Villafiorita, and KomministWeldemariam. 2013. BINSPECT: Holistic analysis and detection of malicious web pages. In Proceedings of the International ICST Conference on Security and Privacy in Communication
Networks. 149–166.

[22] Justin Ma, Lawrence K. Saul, Stefan Savage, and Geoffrey M. Voelker. 2011. Learning to detect malicious URLs. ACM Trans. Intell. Syst. Technol. 2, 3 (2011), 30:1–30:24.

[23] Xin Hu, Matthew Knysz, and Kang G. Shin. 2009. RB-seeker: Auto-detection of redirection botnets. In Proceedings of the Network and Distributed System Security Symposium.

[24] Justin Ma, Lawrence K. Saul, Stefan Savage, and Geoffrey M. Voelker. 2009. Beyond blacklists: Learning to detect malicious web sites from suspicious URLs. In Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 1245–1254.

[25] MaxMind. GeoLite2 Databases. Retrieved from http://www.maxmind.com.

[26] Team Cymru. Retrieved from http://www.team-cymru.org/.

[27] L. Daigle. 2004. WHOIS Protocol Specification. RFC 3912. Internet engineering task force. Retrieved from https://tools.ietf.org/html/rfc3912.

[28] Manos Antonakakis, Roberto Perdisci, David Dagon, Wenke Lee, and Nick Feamster. 2010. Building a dynamic reputation system for DNS. In Proceedings of the USENIX Security Symposium. 273–290.

[29] Shuang Hao, Nick Feamster, and Ramakant Pandrangi. 2011. Monitoring the initial DNS behavior of malicious domains. In Proceedings of the ACM SIGCOMM Internet Measurement Conference. 269–278.

[30] Iria Prieto, Eduardo Magaña, Daniel Morató, and Mikel Izal. 2011. Botnet detection based on DNS records and active probing. In Proceedings of the International Conference on Security and Cryptography. 307–316.

[31] Alexa. Alexa Top Sites. Retrieved from http://aws.amazon.com/alexa-top-sites/.

[32] R. Perdisci, I. Corona, D. Dagon, and Wenke Lee. 2009. Detecting malicious flux service networks through passive analysis of recursive DNS traces. In Proceedings of the Annual Computer Security Applications Conference. 311– 320.

[33] Kazumichi Sato, Keisuke Ishibashi, Tsuyoshi Toyono, and Nobuhisa Miyake. 2010. Extending black domain name list by using co-occurrence relation between DNS queries. In Proceedings of the 3rd USENIX Conference on Large-scale Exploits and Emergent Threats: Botnets, Spyware, Worms, and More. 8–8.

基于DNS数据分析的恶意域名检测相关推荐

  1. 毕业设计-基于机器学习的恶意域名检测系统

    目录 前言 课题背景和意义 实现技术思路 一.相关研究 二.恶意域名检测流程 三.特征分析 四.实验与检测效果分析 五.总结 实现效果图样例 最后 前言

  2. 连载四:PyCon2018|恶意域名检测实例(附源码)

    第八届中国Python开发者大会PyConChina2018,由PyChina.org发起,由来自CPyUG/TopGeek等社区的30位组织者,近150位志愿者在北京.上海.深圳.杭州.成都等城市举 ...

  3. 【论文分享】图嵌入恶意域名检测算法:Malicious Domain Detection via Domain Relationship and Graph Models

    题目:Malicious Domain Detection via Domain Relationship and Graph Models 链接:https://ieeexplore.ieee.or ...

  4. 基于DNS特征的僵尸网络攻击检测 论文翻译

    Botnets Detecting Attack based on DNS Features 2018 ACIT 摘要 僵尸网络被认为是一个威胁网络安全的严重问题.这是网络犯罪分子用来进行非法活动的一 ...

  5. 【论文分享】无监督恶意域名检测:Unsupervised malicious domain detection with less labeling effort

    题目:Unsupervised malicious domain detection with less labeling effort 链接:https://linkinghub.elsevier. ...

  6. 基于异构信息网络的恶意账号检测

    论文学习:Heterogeneous Graph Neural Networks for Malicious Account Detection CIKM 2018 现有的恶意账户识别的方法主要有三种 ...

  7. 【域名检测】使用CNN实现DGA恶意域名检测(TensorFlow)【代码】

  8. 基于PU-Learning的恶意URL检测——半监督学习的思路来进行正例和无标记样本学习...

    PU learning问题描述 给定一个正例文档集合P和一个无标注文档集U(混合文档集),在无标注文档集中同时含有正例文档和反例文档.通过使用P和U建立一个分类器能够辨别U或测试集中的正例文档 [即想 ...

  9. 基于PU-Learning的恶意URL检测

    https://xz.aliyun.com/t/2190 Ya-Lin Zhang, Longfei Li, Jun Zhou, Xiaolong Li, Yujiang Liu, Yuanchao ...

最新文章

  1. 使用Python、OpenCVImageMagick工具箱制作GIF动画
  2. Mysql数据库文件路径重置
  3. ROI Align 在 R-FCN 中的推广:PSROI-Align(附代码)
  4. android onpause时动画出错,Android生命周期之onPauseonStop
  5. 学习运维工程师是正确的选择,发展与前景都是和好的
  6. ESP32-S3与ESP32-S2相比,有什么不同呢?
  7. python读文本文件的过程是怎样的_读写文本文件的步骤_Python读写txt文本文件的操作方法全解析...
  8. JAVA 编程开发入门-张晨光-专题视频课程
  9. javascript 中的innerHTML的用法
  10. 【C++grammar】C++类数据成员的初始化
  11. (10)js操作符(运算符)
  12. 华谊兄弟:实际控制人王忠军、王忠磊合计减持1.44%公司股份
  13. 如何理解halcon 算子get_grayval 、set_grayval 逐行读取和逐行写入
  14. YBT 2.4 AC自动机
  15. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_9_常用的函数式接口_Consumer接口...
  16. python入门11 元组tuple
  17. 远程协同TeamViewer
  18. sja1000 CAN控制器波特率计算方法详解
  19. 用户故事与敏捷方法—优秀用户故事准则
  20. 软件测试常见性能问题案例分析

热门文章

  1. 深度学习入门笔记(一):机器学习基础
  2. linux系统老毛桃怎么安装,windows10系统怎么安装运行linux系统
  3. IDEA个人习惯和记录
  4. Mongdb 删除重复数据python-pymongo实现
  5. 饿了么开放平台接入(2)——使用Java对接店铺
  6. 使用Android自带的DownloadManager下载ApK并安装
  7. 手机壳定制壁纸下载小程序全过程安装搭建教程
  8. firebird嵌入版数据使用
  9. 关于在KEIL下使用j-link读不到芯片的问题
  10. 【zz】P2P技术简介—by红瞳