随着互联网技术的不断发展,各式各样的站点和网页也随之越来越丰富,而整个互联网产业的繁荣也为黑灰产带来了可乘之机,通过在网页上使用各种恶意手段亦或是传播有害信息(例如黄赌毒)来攫取利益,为了对抗互联网之上这种恶意网页传播行为,多种恶意网页识别方法也应运而生。【1、2、3】
近来,伴随着移动互联的兴起和繁荣,5G的逐步覆盖以及普及,恶意网页的传播也呈现出一些新的特点,例如随着移动端设备的持续增长,专门针对移动设备的恶意网页也随之增加,而且其危害行为不同于PC端的表现,针对这些现象,也有学者提出了针对移动端恶意网页的识别方法【1】。
另外,也有一些新的现象值得注意。根据奇虎360公司的报告,部分恶意网页的生命周期在持续缩短,以钓鱼网站为例,奇虎公司的统计数据显示,其生存周期已经从平均几十小时左右下降到几小时左右,黑灰产与各大互联网厂商之间对抗的趋势愈加明显,恶意网页生命周期的缩短也对恶意网页识别的时效性提出了新的严峻挑战,并且推动了在线恶意网页识别技术的发展。
值得一提的是,也有一些公开的项目来汇集恶意网页,通过社区的力量来对抗攻击、钓鱼等恶意行为,例如,https://phishtank.org/。
综上所述,恶意网页即通过传播恶意信息或通过钓鱼、社工等恶意手段来攫取利益的有害网页,而恶意网页识别即通过专家规则、人工特征、机器学习或人工智能等技术手段来识别互联网上的恶意网页,保护互联网用户的浏览安全。
具体而言,可以根据url加载顺序来作为url对应域名之间的边,而url对应域名则为该图的节点,而根据同一个域名按照节点类型的不同可分为多种,例如下载节点、拉端节点、REDIRECT节点等等。在数据的预处理中,有两种处理的方式,一是将同一域名的不同类型节点作为独立的节点来构建异构图,另外一种是只将域名作为节点,而节点对应的类型作为节点的特征放入图模型中训练来使用,从降低内存开销和提升计算效率的角度考虑,我们在实验中采用的后一种处理方式。
其次,在数据分析中我们发现,恶意网站或者网页一般有团伙的性质,不同的domain之间存在关联关系,而且这些恶意网页间有大量的相似文本、相似的信息传播方式,例如赌博、色情信息等等。而文本信息是能够直观为恶意网页定性,基于这样的考虑,我们希望能够将不同网站或者网页之间文本的关系通过图结构来表达,所以采用了业界目前SOA的Text-Gcn模型【4】,并且与上述域名跳转的图结构进行融合。下图展示了如何从文本信息到图结构
基于图的恶意网站识别模型经过了三个版本的迭代:
基于跨站跳转数据的图结构+GCN;
基于文本异构图的Text-GCN模型;
基于跨站跳转数据和文本数据融合的异构图+Cluster-Text-GCN模型;
其中基于跨站跳转数据和文本数据融合的异构图+Cluster-Text-GCN模型效果最好,模型的F1值在0.95以上,也具有较好的可解释性,可以比较实锤地打击恶意网站,其中一个恶意站点团伙如下图所示。
然而在落地的过程中,还是碰到了很多的问题,其中最麻烦的莫过于异构图的构建资源开销过大,在现有dorado平台上python任务的32G内存限制条件下,经常出现OOM,为了能够实现工程化落地,在实践中我们做了很多的优化工作来降低内存和计算资源开销,来保证异构图的构建、GCN模型的训练与预测在dorado平台上能够稳定运行,具体包括:
1、降低域名节点的数量,尽可能将不同的域名类型用特征去表达。
2、在矩阵相关计算中,采用稀疏矩阵;在data frame相关的数据中,使用Sparse DataFrame;
3、在计算text-gcn中边的权重时,covariance matrix只保留对角线一侧的值,降低一半的资源开销;
4、计算tf-idf时,提高词频的阈值,舍弃低频词,扩展停用词集合,降低vocabulary的大小,一般在实验中,vocabulary只保留10000左右的常用词,同时使用float32类型来代替float64类型;
5、优化text-gcn中边的取舍方式,舍弃权重过低的词和词之间的边,根据经验和实际数据表现,阈值设置在0.03~0.08左右;
6、使用cluster-gcn模型【5】来代替原始的gcn模型,一般而言,通过cluster-gcn,可以只使用原始异构图的60%~70%左右的边的数据来进行模型的训练,大幅降低内存和计算的开销,同时模型的训练精度只有非常少的下降。
7、重写Networkx包中的Graph类,只保留和计算过程相关的数据和方法,使用占用内存较少的数据结构来降低内存开销。
1、Detecting Mobile Malicious Webpages in Real Time
2、Malicious URL Detection using Machine Learning: A Survey
3、恶意网页识别研究综述
4、Graph Convolutional Networks for Text Classification
5、Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks