工作来源
Usenix Security 2021
在合法网站植入暗链推广非法商品/服务(如毒品、色情、赌博等)是很常见的,黑帽 SEO 是其中一个主要的途径。搜索引擎为此付出了巨大的努力,Google 每年针对黑帽 SEO 会更新排名算法超过 500 次。
SEO 旨在提高网站、*搜索引擎的检索排名,而黑帽 SEO 通常通过植入暗链的方式提高排名。黑帽 SEO 也引入了 Stealthy Defacement 技术,在网页中选择对排名有影响的位置进行微小的修改。这样不仅难以被发现,还可以优化搜索引擎排名。与此同时,非法网站的推广者也和使用者也合谋使用同义关键字(行业黑话)躲避检测。
搜索引擎有义务对检索结果进行审查和筛选,非法的服务和敏感的个人信息都可以根据请求被删除或者自动剔除。攻击者可以通过行业黑话来规避检测,例如使用M4RK SIX指代六台彩。而使用者发现关键词被屏蔽后,就会尝试其他行业黑话进行检索,行业黑话通常是谐音或者形似。使用者可以直接访问或者被重定向进行访问。
黑产会使用多种黑帽 SEO 技术:
Keyword stuffing:网页包含关键字数量对页面排名很重要,将关键词与非法网站关联起来
Link farm:入侵排名较高的网站注入超链接
Cloaking:不同的User-Agent、Referer、IP地址呈现不同的内容
设计新的标签嵌入模型,按照搜索引擎的检索算法专注于检查页面难以察觉而影响检索的文本与标签。
设计行业黑话规范化算法,检测通常具有类似的形状或者发音的行业黑话。
整体流程如下所示:
通过搜索引擎的高级搜索运算符(如 site: inurl: 等)查询可疑网页,再进行预处理和规范化,最后利用 NLP 技术进行篡改检测。
首先将 HTML 解析成“标签-句子“对,特别是一些在正文和特定属性中都包含文本的 HTML 标签。例如:
谐音黑话与形似黑话都需要进行规范化处理:
语言建模,用于为从语料库中提取的句子分配概率。使用 unigram LM 过滤调不包含任何黑话的句子。
使用 unigram LM 为每个句子分配一个概率,高概率句子与语料库类似,低概率句子就有可能包含黑话。
从可能包含黑话的低概率句子中识别黑话,转换为基本形态。
再次使用语言建模来衡量基本形态关键词的流利度,过滤剩下高概率句子。
提取非法关键词的过程:
使用滑动窗口遍历低概率句子并将窗口内的汉字转换为拼音。
计算窗口内字符的拼音和种子黑话的拼音的编辑距离。
如果距离低于阈值则判断相似。
另外,还需要通过 Jargon Normalization 算法对汉字的形状来进行判断,识别出 50855 个混淆关键词,只有 5 个误报。
现如今黑产只修改小范围的代码片段,致使经典的文本分类、Reference (Gold) copy 与只检查重要标签的方案都不再可靠。
为了更加准确就要遵循搜索引擎的 PageRank 算法,更加关注重要的标签,同时避免可能的误报。为此,引入了一种标签嵌入方案,在 HAN、BERT上以自动了解 HTML 标签的信息和重要性。
Tag-Aware HAN 是在 HAN 网络上引入标签嵌入构建标签感知分层注意力网络(THAN),架构如下所示:
使用 TensorFlow 训练 THAN 模型,随机抽取 150 个“标签-句子”对作为模型的输入,将单词映射到 256 维连续向量。其中,标签嵌入的维度是 32。使用 Adam 优化算法进行训练,初始学习率为 0.001、dropout 为 0.3、epoch 为 3,每 epoch 大小为 64。
Tag-Aware BERT 是在 BERT 上引入标签嵌入构建标签感知双向编码器表示(TBERT),将注意力层可视化可见如下所示:
利用 Selenium 跟踪搜索结果并抓取相应网页。另外,针对良性网页还利用 ssdeep 判断网页相似度,使用网站前 1000 个不同页面进行训练。
基于搜索引擎提供的相关搜索功能,根据一组行业黑话扩展搜索潜在非法关键字列表,人工核验确认关键字。借助Jargon Normalization 模块内置的泛化能力,仍能够表现的很好。
只有单个页面时,手工进行 确认。有多个页面时,随机抽取 10% 的页面进行人工核验,如果都被篡改则认为所有页面都被篡改,如果不是则手工核验剩下的页面。
良性网站也并非全是良性的的,163.com 在 2019 年 3 月也被注入了赌博的暗链。
整理一个足够广泛的关键词列表,使用 Aho-Corasick 算法进行匹配筛选,可以过滤 95% 的合法网页,其余网页可以手动进行确认。
基于 439 个种子关键词,一共收集了 216708 个非法关键词,绝大部分都与赌博、色情有关。通过这些关键词,从 4931 个网站中收集了 294393 个可疑网页,过滤后剩余 2103 个网站的 147754 个被篡改的网页。而合法网站收集了5121 个 网站的 389438 个网页,随机切分了七成数据集(网站而非网页)用于训练,三成数据集进行测试。
DMoS 系统由 12500 行 Python 代码实现,评估与 WAF和前人的一些工作进行比较,结果如下所示:
与普通的 HAN 相比,THAN 是有提升的。与普通的 BERT 相比,TBERT 也是有提升的。但是,想在实际生产环境中应用 BERT 及其变种并不现实,模型参数太多且速度堪忧。TBERT 需要 1.08 亿个参数,而 THAN 只需要 160 万个参数。测试时,每个网页 THAN 需要 0.28 秒进行处理,而 TBERT 需要 9.87 秒。DMoS(JNA+THAN)已经超过了所有其他方案的表现。
部署为商业云服务,实际运行结构如下所示:
爬虫集群:42 台机器(8核+16GB内存+400Mbps网络连接),每台机器并行运行 7 个爬虫。不同省份并行部署爬虫,消除位置的影响。
检测集群:1台机器(16核+100GB内存+CentOS 7),并行运行 50 个DMoS,每个 DMoS 需要 1.2 G 内存,平均每个网页需要 0.3 秒完成检测。
7298 个网站的 38526989 个网页上进行了检测,在 824 个网站中发现了 532021 个被篡改的网页。
被植入暗链的网站主要是政府网站(39%)和新闻网站(15%)。推广的绝大部分是赌博(61%)和色情(27%),游戏(9%)和其他类型物品的销售(3%)较少。
通过五个月的现网运行测试,可以发现 DMoS 受概念漂移的影响并不大。
与百度、腾讯、VirusTotal 的结果进行了抽样比对,结果如下所示:
不仅在中文环境下有用,其他语言也是类似的,以英语为例:
26% 的被篡改网页只插入了 1 个标签,70% 的被篡改网页包含少于 10 个插入标签,只有 5% 的网页包含超过 50 个插入标签。
44 个常见的插入标签中,marquee、a、title、meta是攻击者最喜欢的,合计占到 67%。
绝大部分被入侵的页面都包含不到 50 个黑话,但有些页面却包含上百个。
以六合彩为例看黑话变种:
攻击者会检查 User-Agent 和 Referer,将非法内容返回给搜索引擎的爬虫。
通过中文三大搜索引擎进行结果对比,360 的检索结果令人担忧,包含数量最多且告警提示比例最低。
此外,攻击者还会通过接管过期域名来部署恶意内容。由于国家要求必须使用 gov.cn 的域名,许多政府网站不得不迁出到新域名,导致 2019 年初出现了一波过期域名滥用的浪潮。
可以发现,大多数被篡改页面都发生在距离登录页面 4 跳以内。这可以减小页面检查深度以在不降低效果的前提下换取性能的提升。
本文为深信服公司与香港中文大学的联合研究成果,通过现网部署运行五个月,监控接近上万个网站、千万级网页,证明了其可靠性。测试也可适应英文和中文,精度比 WAF 设备更好。
工作中也指出,黑产也有应用图片代替文字的应对措施,类似反爬但黑产的核心仍然是希望爬虫能够检索进入搜索引擎的结果池中,影响有限。工作中主要研究了谐音和形似的黑话,黑产常见的黑话也会有缩写(SFZ、BC、HX 等)和火星文(形似还没有发展到火星文的地步,但也可属同类),可能在业务安全中更为常见,不知道在植入暗链中是否也是一个值得关注的地方。
围绕着黑产应用的黑话国内一直都有研究人员关注。此前,清华的段海新老师团队也针对黑产黑话进行了研究,包括百度安全实验室也在搜索引擎屏蔽恶意网站功能中有大量的研究和应用。本工作不仅介绍了一种暗链植入的检测方法,也对实际中的暗链植入进行了简单的测量。