扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
外部网站因需要被公众访问而暴露于因特网上,因此容易成为黑客的攻击目标。虽然目前已有防火墙、入侵检测等安全防范手段,但现代操作系统的复杂性和多样性导致系统漏洞层出不穷,防不胜防。黑客入侵和篡改页面的事件时有发生。针对此,网页防篡改系统应运而生。目前市场上的网页防篡改系统产品还比较单一,且部署网页防篡改系统,需要改变现有的单服务器模式,增加服务器,改变服务器的架构,软件价格也偏高。
本文采用常见的C语言程序设计,在Windows平台上,调用Windows操作系统本身提供的相应命令,采用改进型外挂轮询设计的方式,提供用户自定义轮询时间,能够对任意类型文件进行监控。另外,程序还考虑到了连续篡改攻击保护:第一次发现篡改时,程序自动恢复被篡改网页,并进入非正常状态,加快轮询速度;若连续第二次发生篡改,则自动停止Web服务,并关闭计算机,防止篡改文件扩大影响。其结构如图1所示。
网页篡改的特点如下:
◆ 网站传播速度快,阅读人群多。
◆ 复制容易,事后消除影响难。
◆ 预先检查和实时防范较难。
◆ 作案环境和工具相对简单。
本文采用改进型外挂轮询设计,利用C语言中提供的delay()和sleep()函数,分别可以达到毫秒和秒级的延时,从而可以动态设置轮询间隔时间,提高检测时间。同时,由于程序基于操作系统的文件级别进行监测,并不区分文件的类型,从而实现了对动态网页脚本(如asp、jsp)的监测。
改进型后,外挂轮询设计对比分析如表2所示。
表2 改进型外挂轮询设计对比分析
监测篡改参数
针对篡改网页出现的特征,同时考虑到占用系统资源的状况,程序在监测时,选择了文件修改时间和大小两个参数进行监测。同时,考虑到现在网站基本上都利用新闻系统进行新闻的发布和更新,而发布新闻后,网页大小可能会发生变化,故而在程序设计时,还新增了监测网页内容的模块,该模块由网页文件大小发生变化的事件触发,检测网页代码中事先放置的内容是否发生了变化。其监测流程如图2所示。
图2 页面防护系统监测流程
计算机自动报警模块
发生篡改后,要及时报警。但受限于机房的环境和条件,我们只能使用网络报警的方式,利用winpopup 或者net send命令来向指定计算机发送警告信息。在C语言中,我们利用system()函数调用net send命令,发送警告信息。需要接收警告信息的计算机,必须开启windows messager服务。我们将这些计算机的IP地址统一放在一个指定位置的文本文件中,程序开始时,创建单向链表,从文本中分析并读出每个IP地址,并创建net send发送命令链表,利用system()自动批处理这些命令。
单个计算机报警信息发送程序如下:
System("net send 报警IP 报名消息");
紧急处理程序
当判断出现篡改后,系统进入紧急处理程序。紧急程序首先做的是恢复被篡改文件,将“样本”文件覆盖到Web Service的指定目录中去,使Web服务正常;然后发送报警信息,同时,缩短轮询时间为每50毫秒一次。当继续检测到异常时,首先停止Web服务,然后发送报警信息,发送完毕后,关闭计算机。
停止Web服务的处理
停止Web服务,可以利用Windows提供的net stop w3svc命令。在C语言中调用的命令如下:
system("net stop w3svc");
黑客一般在夜间对网站页面进行篡改,而此时网站工作人员都已下班,故而防范连续篡改攻击需要采用“破釜沉舟”的方法。当黑客第一次篡改后,程序可以及时恢复被篡改的文件,黑客篡改完验证是否成功时,发现篡改失败,很有可能继续进行第二次篡改(此时漏洞依然存在),如果程序继续恢复页面,则黑客很有可能调转目标,转而攻击防篡改程序,以达到目的。故而,为安全起见,当发现第二次篡改行为时,程序停止Web服务,并关闭计算机,使黑客失去攻击目标,直到服务器有人启动并对篡改进行处理。
我们可以利用Windows Server 2003操作系统中提供的shutdown/s命令关机。如果在其他版本的Windows Server中使用,可以拷贝该程序。
本文讨论了一个基于Windows 平台的、采用外挂式轮询技术设计并实现的网站页面防篡改系统。该系统目前已得到初步应用,为用户提供了一个简单、省时省力的平台。另外,该C程序经过一些改动,同样适用于Linux平台下运行。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。