网页木马监控清除工具

       2

       最近一段时间帮Q教授维护网络。他那个web服务器中有十几个小网站,基本上大部分都使用了开源的CMS或者BBS代码。由于长年累月缺乏维护,这些系统都没有进行过升级更新,导致经常被人挂马。由于系统繁琐,加上本人精力有限,不可能对这十几个小网站的源代码都一一进行检查,所以,连续几个星期都是发现了挂马之后,使用编辑器,把这些有问题的代码去除掉。

       但这毕竟不是长久之计,有时候我不是在电脑前面,无法及时进行处理。于是,想到了制作一个自动的监控清除工具。正好,C#中有FileSystemWatcher类,能够帮我们监控某个文件夹下面的变动,这就让事情变得简单了。经过思考,建立工程如下:

1

      Common放置一些常用的类。IVirusCode是一个网马的特征码接口,非常简单(如下),ZfileVirusCode是IVirusCode的一个实现。

    public interface IVirusCode 
    {
       List<string> GetCode(); 
    }

     ZfileVirusCode中获得特征码的方法是,在这个web服务器的根目录下面建立一个文件夹,里面放置一个空的文件。当FileSystemWatcher检测到这个文件发生了修改之后,立即获取这个文件的内容,也就是特征码。当然了,也可以采用其他的方案,比如建立一个特征库的方法。FileSortting是对被挂马的文件进行处理。TraverFiles是遍历类,获取监控的文件夹下面的所有文件。XmlConfig是系统的配置文件。而ScanThread类是线程类,当发现挂马之后,实现对文件夹的扫描和清除工作。由于系统简单,就没有添加app.config进行控制反转了。

      在调试的过程中,发现有一个奇怪的问题,FileSystemWatcher检测到有change事件发生之后,竟然连续执行多次,这样,导致我的线程类多次被调用。无奈之后,在change事件中添加线程的检测代码,如果发现线程已经启动的话,立即返回,嘿嘿,测试发现,这样就没有出现问题了。

3

posted @ 2009-09-05 16:43  heshaoyue  阅读(494)  评论(6编辑  收藏  举报