VirusTotal恶意URL研究与分类
工作来源
arXiv:2205.13155
(资料图片仅供参考)
工作背景
研究表明,只有少数恶意 URL 的生命周期会超过一个月,大部分只有几天甚至几个小时。但即便检测引擎会在检测到新的恶意 URL 后不久就更新恶意 URL 列表,VirusTotal 也不一定会及时更新扫描结果。
过往大多数针对 VirusTotal 的研究都是针对文件的,研究 URL 的很少。
由于各种原因,使用固定阈值肯定不是最佳选择。与样本文件的情况类似,VirusTotal 上的检出引擎数并不一定能够反应威胁情况:
检测引擎之间未必独立
部分引擎就是比其他引擎检出要早
引擎检出标签会在短时间内反复变动
工作准备
2019 年 7 月到 2022 年 1 月 VirusTotal 中所有 URL 的报告,总计近 500 万份。其中,新发现的 FQDN 与 APEX 大约为 50 万与 35 万个。首次扫描的 URL 被认为是新兴 URL,数量如下所示:
一共出现了 95 个检测引擎,如下所示:
过滤掉那些没有被任何检测引擎检出为恶意的 URL。而恶意 URL 分类如下所示:
引入手动标记与两个不同于 VirusTotal 的公开 URL 情报来源(APWG 与 McAfee SiteAdvisor URL),URL 的标签也都进行手动验证。可见在非通用类型中,网络钓鱼与恶意软件是出现量最大的。
利用分层抽样的方法从新兴 URL 中挑选 3800 个 URL,由 5 位安全研究人员进行手动标记。具体情况,如下所示:
工作评估
攻击类型
各类型数量的 CDF 图如下所示:
各类型占数据集的比例如下所示:
恶意钓鱼 URL 通常比恶意软件 URL 具有更多标签,75% 的恶意钓鱼 URL 具有三个以上标签。不同的引擎本来就会给打上不同的标签,多标签是很正常的。并且,有一部分多标签是由于检测引擎在短时间内改变了检测结果。
检测精度
没有引擎对所有类型的 URL 都表现良好。例如 BitDefender 检测网络钓鱼类 URL 较好,但检测恶意软件类 URL 不佳。通常来说,在 URL 被提交到 VirusTotal 后的第五天,F1 分数最高。
稳定性
通常来说,检测引擎具有相对稳定的二元标签(是否恶意),但多元标签(具体类别)会随着时间更改。
Sophos、Bitdefender 与 Kaspersky 等被业界公认较好的引擎也为 URL 分配了多种类型的标签。按统计来看,53% 的引擎会不断更改检测的具体类别,最终稳定在一个类别上。还有 47% 的引擎持续在具体类别上“反复横跳”,最终也不会稳定在一个类别上。
二元标签与多元标签的关联
使用 Jaccard 与 DTW 计算相关性。以 Malware 为例,其他请查看原文:
计算 Jaccard 相似度矩阵的 Frobenius 范数,衡量相似度是否随时间变化保持一致。
基于 DTW 距离进行层次聚类,相似引擎如下所示:
引擎间可能是不独立的,在利用多数投票时一定要注意这一点。
时效性
有些引擎(如 Segasec)总是较早检测,有些引擎(如 alphaMountain.ai)总是较晚检测。
工作设计
基于随机森林构建一个机器学习模型,比多数投票可以提高 10-45%。
整体流程如上所示,一共使用四组特征:
VirusTotal 特征
词法特征
部署特征
Whois 特征
对比结果如下所示:
除了 VirusTotal 特征以外的其他特征,也对性能的提高是有帮助的:
通常来说,恶意软件类 URL 比网络钓鱼类 URL 要多:
工作思考
VirusTotal 左手文件右手 URL,分析文件的工作众多,研究 URL 的相对较少。针对 VirusTotal 的研究总是让人很感兴趣,希望将来哪天 VirusTotal 自己能出来讲讲自己的架构什么的,供大家讨论学习。
标签: