工作来源:

Usenix Security 2021

工作背景

靠注册时间长和流行程度高就可以区分恶意域名/恶意 URL 吗?Alexa 排名高就代表正常吗?(例如 linode.com、cleverreach.com)

有许多其他可能被放弃或很少维护的域名,Alexa 的排名较低或没有排名(例如 gemtown88.com, vanemery.com)会被攻击者入侵后发起攻击。而且新创建的良性域名也不符合排名高且时间长的条件,当它们实际上被攻陷时,很可能被错误地标记为攻击者所有。另一方面,攻击者也越来越多的利用长期存在的域名进行攻击,通过先创建并搁置一段时间(例如:crackarea.com、estilo.com.ec)来逃避检测。此外,攻击者也可以在短期内人为地提高域名的受欢迎程度。

很多恶意网站仍然是在部署很久后才被检测到,因为攻击者越来越多地将网站部署在非攻击者持有的基础设施上。

将 e2LD(有效二级域名)区分为公共和私有顶级域名。如果顶级域名的子域名或路径后缀未创建且不受顶级域名所有者的控制,则该顶级域名是公开顶级域名。同样,如果顶级域名的子域名由顶级域名所有者创建和管理,则该顶级域名是私有顶级域名。

  • 公共顶级域名:不由顶级域名所有者创建,且不受其直接控制

  • 私有顶级域名:始终在域名所有者的控制下

例如 000webhostapp.com 是一个公共顶级域名,而 alice.000webhostapp.com 是一个子域名,其内容不受 000webhostapp.com 所有者控制,而是由使用 000webhostapp.com 服务的实体 Alice 控制。

前缀路径创建服务是其中一种,也有服务使用后缀路径(例如 sites.google.com/site/alice)。在分析恶意域名时,是公共域名还是私有域名是有很大区别的。即便是私有域名,也分为是自己持有和攻陷利用他人两种情况。例如攻击者拥有的(例如 fbook-png.000webapphost.com 和 sites.google.com/site/bitcoin2me2)或失陷的(例如 2014-healthyfood.blogspot.com 和 sites.google.com/site/kailyali)。对应的检测与处置的方式都会存在差别,不同情况下的恶意网站需要不同的应对措施。

尽管公共顶级域名只占托管恶意网站的顶级域名的 1%,但在 VirusTotal 上提交的恶意链接占比高达 46.5%。公共网站有 19.5% 遭到入侵。而托管在私有顶级域名的网站(53.5%)中,攻击者大多数(65.6%)会选择攻击良性网站,只有 34.4% 的恶意网站托管在攻击者自己注册的域名上。令人担忧的是,大多数(81.7%)的恶意网站托管在攻击者非自持的顶级域名下。而现有公开的公共顶级域名列表并不完整,由于服务托管与云服务的动态特性,依靠列表往往并不及时。

工作设计

首先构建一个高准确度模型区分公共域名和私有域名,接着构建区分受攻击的域名和攻击者拥有的域名的模型。

整体处理流程如下所示:

VT URL Feed

按小时汇总 VirusTotal 的数据,为观察到的每个 apex/FQDN 构建数据文件。构建 DS1 数据集(2019 年 8 月 1 日至 2019 年 8 月 19 日)和 DS2 数据集(2019 年 10 月 1 日至 2019 年 10 月 14 日),两个数据集在时间上不重合且窗口大小不同。

恶意 URL 过滤器

至少一个厂商标记 URL 为恶意的认为是潜在恶意 URL,从中随机抽取 500 个 URL 进行手动检查。根据先前的研究,被 5 个及以上的厂商判定为恶意的 URL 为恶意 URL。本次手工检查也确认了“判断极有可能是恶意 URL 的阈值设置为 5”是合理的,这也和其他的研究相吻合。

公共/私有域名分类器

提取如下特征:

私有域名分类器

私有域名分类器用于将私有顶级域名标记为失陷域名或攻击者自持域名。

依靠词法、VirusTotal 报告、VirusTotal属性、PassiveDNS 和 Alexa 五类特征,这些特征大部分都是根据此前检测恶意域或 URL 的工作迁移而来的。如下所示:

  • 失陷域名的 VT_Duration 会高于攻击者自持的域名

  • 失陷域名被厂商标记的数量(Positive_count)也会少于攻击者自持的域名

  • 失陷域名经常被攻击者作为重定向站点,通过 Is_URL_Redirected 发现

  • 攻击者自持域名的子域名都是恶意的,失陷域名的子域名只有部分是恶意的

  • 攻击者自持域名的权威名称服务器的数量和 SOA 域的数量会比良性域名变化的更频繁

  • 攻击者利用残余信任抢注/重注域名

公共域名分类器

公共域名分类器用于将公共顶级域名标记为失陷域名或攻击者自持域名。

除 Name_Servers、SOA_Domains_Nos 和 SOA_Domain外的所有特征都会被使用,还附加使用了路径类特征,如下所示:

公共网站的页面往往是互相关联的,而攻击者创建的页面往往互相无关且短期存在。

工作准备

VirusTotal

VirusTotal 集成了超过 70 个反病毒软件和 URL/域名信誉服务,提供与 URL 有关的聚合情报。每个厂商会给出 malicious、phishing、mining、malware 或 suspicious 的判定结果。

利用 2019 年 8 月 1 日到 2019 年 11 月 18 日提交给 VirusTotal 的 814678956 个唯一 URL 构建数据集。

NOD/NOH(新观察到的域名/主机)为每个 apex 和 FQDN 逐步构建特征,包括首次发现时间、最后发现时间、扫描次数、标记为恶意的次数、对应的 URL 和 VirusTotal 扫描摘要。

Passive DNS

使用 Farsight PDSN DB 作为 Passive DNS 数据来源。PDNS DB 包含对每个 FQDN 的汇总记录,包含首次发现和最后发现的时间(即 FQDN 第一次和最后一次解析的时间戳)、请求 FQDN 的次数、解析的 IP 地址和权威名称服务器。借此从 PDNS 数据库中提取重要的托管特征。

黑名单

引入四大黑名单/信誉系统:Google Safe Browsing(GSB)、Phishtank、Anti-Phishing Working Group(APWG)和 McAfee Site Advisor(SA)。其中,Phishtank 和 APWG 维护一份手动验证的钓鱼网站列表,大多数也都提供了有关网站上恶意活动详细信息的附加信息。

公共/私有域名分类数据

数据来源整合公开可用的列表:

  • 公共后缀列表(https://publicsuffix.org/)

  • 流行的托管服务提供商和 CDN 列表(https://www.cdnplanet.com/cdns/、https://github.com/WPO-Foundation/webpagetest/blob/master/agent/wpthook/cdn.h)

  • DDNS 列表(https://dnslookup.me/dynamic-dns/、https://gist.github.com/neu5ron/860c158180e01b61a524)

与数据集的顶级域名取交集共有 439 个顶级域名。也搜索可能被公共顶级域名使用的关键字发现潜在公共域名,例如 hosting、free、web、share、upload、drop、cdn、file、photo 与 proxy,手动检查后又确认了 97 个域名。

对于公共域名,不同的子域名往往内容不同。而对于私有域名,内容往往遵循某个主题。在公开数据中进行专家标注后如下所示:

私有域名分类数据

从 DS1 和 DS2 识别的私有域名中手动区分攻击者自持(AC-GT1)和失陷(AC-GT2)类。通过手动检查网站内容、域名历史 WHOIS 记录、托管信息、PassiveDNS 信息、黑名单(GSB和SA)和威胁情报信息(riskiq.com 和 otx.alienvault.com)。结果如下所示:

公共域名分类数据

基于前缀或者后缀的子域名进行分类,而不是对顶级域名进行分类。手动分析确认了 613 个失陷公共网站和 1157 个攻击者自持的公共网站。

工作评估

整体分类结果如下所示:

公共/私有域名分类

通过分类器标定的结果如下所示,可以发现尽管公共顶级域名中发现的恶意域名数量较少,但其中部署的恶意 URL 与私有顶级域名托管的恶意 URL 数量接近。

一共训练了八个分类器(SVM、RF、ET、LR、DT、GB、AB 和 KN),其中随机森林表现最好。该模型达到了 97.2% 的 accuracy,97.7% 的 precision和 95.6% 的召回率。

PP-GT1 上的 RF 达到 92% 的 accuracy、97.4% 的 precision 和 87.5% 的召回率,PP-GT2 上的 RF 达到 97.2% 的 accuracy、97.7% 的 precision和 95.6% 的召回率。

GT1 和 GT2 的两条 ROC 曲线的 AUC 分别为 96% 和 99%。

将模型应用在数据集中,总共识别出 6675 个恶意公共域名和 725325 个恶意私有域名。

在所有托管恶意 URL 的顶级域名中,只有 1% 是公共顶级域名。然而,这些公共顶级域名托管了 46.5% 的恶意 URL。

下图显示了公共域名和私有域名的 Alexa 排名情况,公共域名会显著高于私有域名。而一半的公共域名并没有排名,攻击者也会利用那些不非常流行的公共服务发起攻击。

私有域名分类

训练八个分类器(SVM、RF、ET、LR、DT、GB、AB 和 KN),其中随机森林和极限树表现最好。该模型平均达到了 96.4% 的 accuracy,99.1% 的 precision 和 92.6% 的召回率。

如下所示,在 AC-GT1 上达到了 90.6% 的 accuracy,94.7% 的 precision,86.1% 的召回率,在 AC-GT2 上达到了 96.8% 的 accuracy,99.1% 的 precision,93.4% 的召回率。

65.6 % 的私有域名被分类为失陷,这一结果与其他研究情况也是吻合的。

失陷与攻击者自持域名的 Alexa 排名分布如下所示,大多数攻击者自持域名的 Alexa 排名较低或者没有排名。

从域名注册到首次发现恶意行为的天数如上所示。20% 的攻击者自持域名在注册后不久就会投入使用,更多域名会被搁置一段时间才使用。令人担忧的是,良性域名在注册几年后就会被攻陷,由于缺乏维护没有升级可能会被攻击者盯上。

公共域名分类

训练了随机森林分类器,达到了97.2% 的 accuracy和 97.2% 的 precision和 98.1% 的召回率。

只有 2.28% 的公共恶意网站进入 Alexa 的前一百万名,而且失陷网站在 Alexa 的排名中停留时间一般为 6.8 天,而攻击者自持恶意网站只会留存 2.9 天。

数据基本情况

VirusTotal 平均每天有 480 万个唯一 URL,其中绝大多数(89.7%)没有被任何厂商标记为恶意,可能是良性的。

同一 URL 可能在一天内被扫描多次,只要生成新扫描 ID 的报告就认为是不同的扫描。

没有被任何厂商判黑的 URL 日均值为 480 万,约占总数的 89.3%。

在第 3-4 周和第 5-8 周出现峰值时,确定了 5 个失陷的域名(gticng.com、clinique-veterinaire-gembloux.be、advancedimoveis.com、harikaindustries.co.in 和 cos.pt)上托管数十万个导致峰值的恶意 JavaScript 文件。排除这些异常域名,恶意 URL 平均被扫描 6 次,而良性 URL 仅被扫描 2 次。

与黑名单服务进行比较评估如下所示:

45.7% 都被超过 5 个厂商检出,每周对应着 165.9 万的恶意报告和 27.6 万的恶意网站,其中 12 万是新发现的。相比之下,Google Safe Browsing 和 Phishtank 每周分别报告了大约 3 万和 0.4 万个。

使用多数投票的方法决定恶意 URL 的最终标签,通过手动验证的方式确认 98% 的多数投票标签与外部情报/黑名单的结果是一致的。

可以看出,恶意软件与钓鱼网站占了主导地位,恶意软件网站的流行度是钓鱼网站的三倍。只有极少量被标记为挖矿和可疑,故而未在图中显示。

拥有超过 500 个 FQDN 的长尾被忽略,某些域名拥有超过数百万个 FQDN。例如:blogspot.com(博客)、coop.it(URL 缩短工具)、mcafee.com(McAfee 端点主机)和 opendns.com(思科 DNS)。

良性域名中,90.2% 的域名只有一个 FQDN、恶意域名中只有 12.3% 的域名只有一个 FQDN。大约 40% 的恶意域名包含超过 40 个 FQDN,而只有 5% 的良性域名拥有超过 40 个 FQDN。

评估基本情况

不仅可用于 VirusTotal 的数据,也可使用其他数据源。用 Phishtank 的数据做了训练,随机森林模型可达到 91.2% 的 accuracy,93.5% 的 precision和 93.5% 的召回率。

可被公开操纵的特征(如 #Total_Scans 和 #VT_Duration)对分类器的性能影响并不显著。即使忽略所有 VirusTotal 的特征,分类准确率也只会下降 6%。

测试训练数据中存在脏数据时,模型可以容忍少量脏数据。在 1% 和 5% 的脏数据水平下,分类器的准确率分别仅降低了 0.9% 和 4.2%。当训练数据的很大一部分被脏数据污染时(例如达到 15%),分类器的准确度会大大下降。

不同的数据集大小也会影响准确性:

通过测试在应对概念漂移时,最好每周都重新训练分类器:

利用 LIME 为单个预测数据点提供解释,查看了 1 个 FP 和 8 个 FN 的具体情况。因为大多数错误都发生在没有 PassiveDNS 特征的情况下,可以通过引入其他数据源(比如 ActiveDNS)等方式进行处理。

GSB 不提供对单个 URL 分类的公共服务,也没有详细描述是如何进行分类的。比较了 2019 年 8 月 Google Transparency Report 中公布的这两种恶意 URL 的统计数据。GSB 每周可检测大约 3 万个新出现的恶意网站,而 VirusTotal 检测到的数量为该数量的三倍。

APWG 2016 网络钓鱼趋势报告中,研究人员建议利用三种启发式方法来区分失陷域名和攻击者拥有的域名:如果域名在注册后很短的时间内被报告为网络钓鱼、包含品牌名称或误导性字符串、通过批量注册或以表明共同所有权或意图的模式注册,则域名被标记为恶意。这种方法会导致很高的错误率,利用 VirusTotal 的数据中发现 13% 的攻击者自持域名在 3 个月后被检测到且域名中没有任何品牌名称。

工作思考

作者认为其局限在于:① 部分依赖 VirusTotal 的特征 ② 使用特征不够,例如 WHOIS 记录、Active DNS 记录、证书透明度日志等 ③ 人工标注检查的过程繁琐且耗时 ④ 清理了入侵的网站有可能会再次失陷

额外需要提一句,VirusTotal 上提交的 URL 也不是一定都实际存在的,但厂商仍然会给出检测结果。这可能本文是存在的一个比较大的问题,有效结果的量级难以估量。2019 年初,360 威胁情报中心在旧文《驱动人生劫持事件与Mykings家族活动的关联分析》中有所阐述。

声明:本文来自威胁棱镜,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。