上段韶光一贯忙于处理大会安全保障与应急,借助公司云悉情报平台,创造并处置几十起网站被挟制的情形。对黑客SEO技能颇有觉得。恰好这段韶光有韶光,把以前碰着比较有趣的案例和大家分享一下。里面很多技能实在早已被玩透,只是网上搜了一下并无太多这方面的先容。以是在这里共享一下干系的案例,案例紧张分享一下思路。
1.1 事理
网站挟制是一个相对古老的技能,紧张是黑帽用来做SEO用。实现网站挟制如果以下步骤:

1. 入侵干系网站2. 然后在网站中插入JS或修正其配置文件,增加相应的挟制代码。其余一样平常会加入判断条件,判断条件一样平常会根据user-agent或referer进行判断。大多数判断条件会判断是爬虫还是人工,如果是人工会返回正常的网站;如果是爬虫,会返回干系博彩、娱乐类等黑客设置好的网站3. 人工访问时,会显斧正常网站。但是爬虫去访问时,返回是干系博彩、娱乐类网站,导致收录的却是黑客精心准备好的网站4. 黑帽SEO基本上都是给爬虫收录的,对付正常的人工访问会返回正常的内容,以是导致这种网站很难创造、并且其存留韶光相对较长1.2 跳转判断
下面通过在实际事情中碰着的JS脚本来阐述JS挟制来实现跳转的方法。该JS脚本综合利用了判断IP归属地、UA、referer来进行跳转判断。
1.2.1 判断IP归属地
判断远程IP的归属地,如果远程IP为安徽省或北京,则会直接跳转到http://www.anhui365.net/404.html这个页面;归属地不为安徽或北京的话则会跳转到博彩站点http://m.an888.top/
var jump_myt = setInterval(function(){ if(remote_ip_info) { clearInterval(jump_myt); if(remote_ip_info.province == '安徽' ||remote_ip_info.province == '\u5b89\u5fbd'||remote_ip_info.city =='\u5317\u4eac'||remote_ip_info.city == '北京') { window.location.href= 'http://www.anhui365.net/404.html'; } else{ window.location= 'http://m.an888.top/'; } }
1.2.2 判断referer
若referer关键字为:baidu、google、yahoo、bing、soso、360等搜索引擎爬虫,当爬虫去访问时会调用browserRedirect()函数。browserRedirect()函数紧张用来实现跳转判断。
function go_bots_url(){ var init_flag =\公众93989\"大众, bct =document.referrer, bot =['baidu', 'google', 'yahoo', 'bing', 'soso', 'sogou', '360.cn', 'so.com','youdao', 'anquan', 'sm.cn', 'haosou']; for (var iin bot) { if(bct.indexOf(bot[i]) != -1) { init_flag= \公众1245\公众; browserRedirect(); } } if(init_flag== \"大众93989\"大众){ call_init_error(); }
1.2.3 判断user-agent
如果相应的user-agent匹配关键字ipad、iphone os、midp、ucweb、android等移动端设备时则会跳转到http://m.an888.top/这个博彩站点
function browserRedirect() { var sUserAgent=navigator.userAgent.toLowerCase(); var bIsIpad=sUserAgent.match(/ipad/i) == \"大众ipad\"大众; varbIsIphoneOs= sUserAgent.match(/iphone os/i) == \公众iphone os\"大众; var bIsMidp=sUserAgent.match(/midp/i) == \"大众midp\"大众; var bIsUc7=sUserAgent.match(/rv:1.2.3.4/i) == \公众rv:1.2.3.4\"大众; var bIsUc=sUserAgent.match(/ucweb/i) == \"大众ucweb\"大众; var bIsAndroid=sUserAgent.match(/android/i) == \"大众android\公众; var bIsCE=sUserAgent.match(/windows ce/i) == \公众windows ce\公众; var bIsWM=sUserAgent.match(/windows mobile/i) == \公众windows mobile\"大众; if (bIsIpad ||bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { window.location.href='http://m.an888.top/'; } else { window.location='http://m.an888.top/'; } }
这是一个比较经典的JS判断条件,综合判断IP地址、user-agent、referer。黑客入侵相应的网站后只须要把在网站中加入引用的JS干系网站即可,一样平常都是直接在干系调用页面,如index.php这种页面中直接插入下面的代码
1.3 表现
当网站被黑客入侵并作为SEO利用时,一样平常的表现是通过人工访问并无法直接打开,须要通过改变浏览器的user-agent及referer时才可以重现相应的挟制页面。页面被挟制一样平常表现是下面这样子的:
挟制案例-1(植入寄生虫程序)
挟制案例-2(插入推广内容)
挟制案例-3(打开页面跳转到博彩网站)
2. 前端挟制案例
2.1 事理
前端挟制一样平常都是在网站的相应页面中插入JS脚本,通过JS来进行跳转挟制。
2.2 表现与检测
前端挟制的话浏览器会实行相应的JS脚本,因此我们可以通过抓包来进行检测相应的JS脚本。可以利用burpsuite、fiddler、wireshark等工具来抓包进行剖析与检测。其余也可以打开相应的页面剖析其源码来进行判断,通过源码找出所有加载的JS脚本,然后再对JS脚本进行剖析。
2.3 案例
一网站创造其打开时会跳转到博彩网站,对其源码进行剖析,创造其页面被插入一段JS代码,导致其打开时会跳转到博彩站点。
3. 做事器端挟制案例
3.1 事理
做事器端挟制也称为后端挟制,其是通过修正网站动态措辞文件,如global.asax、global.asa、conn.asp、conn.php这种文件。这些文件是动态脚本每次加载时都会加载的配置文件,如访问x.php时会加载conn.php。这样的话,只须要修正这些全局的动态脚本文件(如global.asax),访问所有的aspx文件时都会加载这个global.asax文件,可以达到全局挟制的效果。
3.2 表现与检测
由于这种文件是在做事器上实行的,因此不像前端挟制那样可以剖析加载的恶意JS脚本。其须要在做事器上进行剖析。一样平常检测都是要检测全局脚本文件,剖析其是否被恶意修正。这种文件一样平常情形下不会常常修正,因此可以利用文件完全性进行检测。初次配置好了往后天生其MD5或HASH值,并且周期性比拟其MD5值是否变革。若变革则进行变革内容的剖析与检测。
3.3 案例
创造一政府网站上存在较多博彩类链接。但是对其源码与抓包剖析,都没创造可疑JS脚本。这样的话肯定是在做事器端做挟制的。
于是远程连接其做事器,其网站利用aspx开拓,找到其aspx全局加载的文件global.asax。剖析其源码,创造存在被修正,增加了爬虫判断条件,若为爬虫访问,则直接跳转到相应的博彩网站。
针对做事器真个挟制,找到相应的插入的代码。直接将其删除,或者利用备份的文件进行覆盖。但是这样并不能真正办理问题,一样平常情形下global.asax这种文件被修正,基本上解释黑客已经入侵到相应做事器。因此须要做全面的应急相应,剖析日志、查杀webshll、系统层、运用层全面的安全检讨。找到黑客是如何入侵进来的并且修复相应的漏洞这样才能真正办理此类问题。
4. 比较奇葩的做事器挟制案例
一样平常情形下,如果是做事器真个挟制通过上面的方法基本上可以找到黑客插入或修正的源码部分。但是昨天碰着一起比较奇葩的做事器挟制案例。通过源码与抓包剖析判断黑客是在做事器端做的挟制,但是相应的剖析全局文件找了很永劫光便是没有找到黑客在什么地方插入挟制代码的。
一政府站利用爬虫UA打开便是相应的寄生虫模板,直接剖析其index.php文件,创造其只是调用了其余一个文件。文件的路径为:/phpcms/base.php
找到base.php,由于其源码比较多。剖析其源码找了好久便是没有找到挟制所用的代码,后来经同事帮忙,花了好永劫光才找到黑客进行挟制所有的代码。base.php个中直接加载了公用的函数库,其加载了如下函数:
@include(PACK(‘H’,’443A5C7765625C6C79715C75706C6F616466696C655C323031375C303232315C31′));
Php的pack函数功能如下:
@include(PACK(‘H’,’443A5C7765625C6C79715C75706C6F616466696C655C323031375C303232315C31′));个中:
H代表16进制
443A5C7765625C6C79715C75706C6F616466696C655C323031375C303232315C31表示相应的参数,须要将其进行转换。
转换后,其内容为\web\lyq\uploadfile\2017\0221\1,也便是说base.php利用include的Pack函数调用了\web\lyq\uploadfile\2017\0221\1这个文件。找到这个文件,剖析其源码,果真找到了黑客用户进行挟制所调用的文件。
这个案例还是比较奇葩的,实在实现方法也是在做事器端进行挟制的,只是其利用函数来加载相应的挟制脚本。并且这个挟制的脚本放在一个上传的目录上,以是导致剖析起来中间有些麻烦。针对这种挟制的情形个人觉得相对较好的处置方法便是对关键性的文件,如index.php、global.asax、conn.php等天生基线MD5及HASH值,然后周期性的比拟这些文件完全性,如创造文件完全性发生变革,将其与基线文件进行比较。剖析是否为正常变革。
目前黑帽做SEO除了上面的外,还有植入JS来挖矿的。不过挖矿在实际事情中只在做事器上碰着被植入挖矿程序,自己并没有碰着过在网站中植入JS来挖矿。网上看到有碰着过植入JS来进行挖矿的,以是网站页面代码中的JS也是网站安全剖析的重点。后期云悉情报平台会加入恶意JS的识别与剖析,碰着干系案例时再和大家分享。