ASP木马的原理与防范实践
- 格式:pdf
- 大小:528.96 KB
- 文档页数:4
第23卷第2期宿州学院学报Vol .23,No .2 2008年4月Journa l of Suzhou Un i versity Apr .2008ASP 木马的原理与防范实践余晓永(宿州学院计算机科学与技术系,安徽宿州 234000)摘要:A SP 作为一种开发简单、功能强大的动态W eb 技术,正得到越来越多的应用。
对A SP 技术的支持已经是w indow s 系统IIS 服务器的一项基本功能。
A SP 在带来高效与便捷的同时,自身也存在着许多安全隐患。
本文就危害性比较大的A SP 木马的原理作出详细的论述,并结合实践提出了防范措施。
关键词:A SP 木马;病毒;安全防范;计算机安全;w eb 应用中图分类号:T P 393.08 文献标识码:A 文章编号:1673-2006(2008)02-0099-03收稿日期:2007209210作者简介:余晓永(1979-),安徽泗县人,硕士研究生,研究方向:数据挖掘与入侵检测。
A SP (A ctive Server Pages )是微软公司发布的动态网页的技术,是基于服务器端运行的脚本编写环境,具有开发简单、功能强大等优点。
应用A SP 技术使建设可动态生成内容的W EB 页面及构造功能强大的W EB 应用程序的工作变得十分简单。
目前越来越多的人在使用A SP 这项技术,经营、维护自己的网站,开发各种应用程序。
A SP 在带来方便的同时,由于本身存在的一些安全漏洞,也带来了一些安全隐患,这些安全隐患稍不留心就会给黑客提供可乘之机。
笔者根据实际工作中的实践经验对危害性较大的A SP 木马的原理和防范技术作论述。
1 ASP 木马概述1.1 木马的定义木马是一种通过与远程计算机之间建立起连接,使远程计算机能够通过网络访问和控制本地计算机的恶意程序,它具有很强的隐蔽性和破坏性。
木马程序一般由Sever 端程序和C lien t 端程序两部分组成,其中Sever 端程序可通过某种具有绑定程序的工具安装在被控制计算机上,而C lien t 端程序安装在控制计算机上。
1.2 A SP 木马的特点和功能A SP 木马其实是程序员在编写网站的后台管理程序的时候编写的管理程序。
最初只是为了管理网站,但当其管理的功能逐渐强大的时候,被一些人利用就成了A SP 木马。
不同于一般服务器 客户机(C S )结构的木马病毒,A SP 木马采用的是服务器 浏览器(B S )结构。
A SP 木马程序大都具有以下特点:管理对方资源,如复制文件、删除文件、查看文件内容、上传文件、下载文件等。
在获取对方服务器一定权限之后,A SP 木马可以结合其他传统木马工具进一步的、直到完全控制目标计算机。
和一般的特洛伊木马相比,A SP 木马有着隐蔽性强的特点,这是因为它和正常的A SP 程序没有本质区别,只要是能运行A SP 的空间就能运行它,这种性质使得A SP 木马非常不易被发觉,要想禁止A SP 木马运行就等于禁止A SP 的运行。
因此,也不可能通过设置防火墙、进程监视、限制端口等查杀一般木马的常用手法来应付。
其高度的隐蔽性和难查杀性,对w eb 网站的安全造成了严重的威胁。
因此,针对A SP 木马的防范和清除,为管理人员提出了更高的技术要求。
2 ASP 木马的原理在分析大量的A SP 木马程序源代码之后,我们会发现A SP 木马技术目前主要有两种,一种是利用FSO 组件技术,另外一种是利用A pp licati on shell 脚本技术。
下面是常见的特征代码:Set o scri p t =Server .C reateO b ject ("W scri p t .SH ELL ")Set o scri p tN et =Server .C reateO b ject ("W scri p t .N ETW OR K ")Set oF ileSys =Server .C reateO b ject ("scri p ting .F ileSystemO b ject ")2.1 FSO 组件FSO 英文全称是F ile System O b ject 是微软A SP 的一个对文件操作的控件,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法,即通过采用ob ject .m ethod 这种在面向对象编99程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。
这个控件可以对服务器进行读取、新建、修改、删除目录以及文件的操作。
它是A SP编程中经常使用的一个控件。
FSO对象模型包含在Scri p ting类型库(Scrrun.D ll)中,包含了D rive、Fo lder、F ile、F ileSystemO b ject和T ex tStream五个对象。
其中D rive对象用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;Fo lder对象用于创建、删除或移动文件夹,同时可以进行向系统查询文件夹的路径等操作;F ile对象的基本操作和Fo lder基本相同,所不同的是F iles的操作主要是针对磁盘上的文件进行的;F ileSystemO b ject是FSO对象模型中最主要对象,它提供了一套完整的可用于创建、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。
需要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不同对象的不同方法进行的却是同样的操作; T ex tStream对象则是用来完成对文件的读写操作的。
2.2 SH ELL组件Shell组件允许A SP运行.exe等可执行文件,存在严重的安全隐患。
即使在文件系统进行过严格的权限设置的服务器上,此组件也会被用来运行提升权限的程序。
W Scri p t.Shell组件和Shell.A pp licati on组件可以调用系统内核运行DO S基本命令。
这里A SP木马通过调用shell组件可以运行DO S命令进行DO S下的基本操作,从而破坏计算机文件系统,或者提升权限,控制服务器。
以下是一个典型的在服务器端实现执行并反馈DO S命令信息的A SP木马代码:……SetoScri p t=Server.C reateO b ject(" W SCR IPT.SH ELL")SetoScri p tN et=Server.C reateO b ject(" W SCR IPT.N ETW OR K")SetoF ileSys=Server.C reateO b ject(" Scri p ting.F ileSystemO b ject")szC M D=R equest.Fo r m(".C M D")If(szC M D<>"")T henszT em p F ile="C: "&oF ileSys. GegtT em pN am e()CalloScri p t.R un("c m d.exe c"&szC M D&" >"&szT em p F ile,0,T u re)’使用R un方法创建一个新的进程,隐藏窗口并激活另一窗口,返回由应用程序返回的任何错误代码。
SetoF ile=oF ileSys.OpenT ex tF ile (szT em p F ile,1,False,0)’打开临时文件azT em pF ileEnd If……If(Is O b ject(oF ile))T henR espon se.W rite Server.H TM L Encode (oF ile.R eadA ll)’在网页上输出命令执行的结果oF ile.C lo seCalloF ileSys.D eleteF ile(szT em p F ile,T rue)’删除临时文件szT em pF ileEnd If……3 A SP木马的防范实践在防范传统木马时,防火墙是抵挡木马入侵的最好工具,但是A SP木马使用的是目标计算机的合法服务、端口,这为防范带来了难度。
通过在实践中的应用研究和分析,可以采用以下策略来防止和根除A SP木马。
3.1 源头入手,断绝入侵者的上传途径斩断入侵者的上传木马途径等于断绝了入侵的源头,因此防范A SP木马的重点在于W EB程序中A SP上传程序的安全上。
一般的w eb程序为了提供诸如上传附件、图片等服务都开放了上传功能,这些功能同样也为攻击者上传木马提供了便捷,是潜在的安全隐患。
为安全起见,建议用户通过FT P方式来上传文件、维护网页,尽量不安装A SP的上传程序。
如果没有条件,则必须对A SP上传程序的调用设置严格的身份认证,只允许信任的人使用上传程序。
并对上传文件实行格式过滤,如禁止asp,asa, exe,com等危险格式的文件上传到服务器。
3.2 斩草除根,删除或修改FSO、SH ELL等危险组件通过分析,我们已经知道A SP木马主要是通过FSO,SH ELL等组件来实现目标服务器的控制,本质上说:只要我们在系统中禁用了这几种服务就可以彻底杜绝A SP木马的危害,但是这些组件特别是FSO组件都是编程中常用的组件,因此,禁用该组件并不是最理想的安全措施。
折中的方法是在系统注册表中修改组件名称方式,修改其调用方式。
打开注册表编辑器,作出如下修改:H KEY-CLA SSES-ROO T W Scri p t.Shell 及H KEY-CLA SSES-ROO T W Scri p t.Shell.1 改名为其它的名字,如:改为W Scri p t.Shell-ChangeN am e或W Scri p t.Shell.1-ChangeN am e以001后H KEY-CLA SSES-ROO T Shell.A pp licati on ,H KEY-CLA SSES-ROO T Shell.A pp licati on.1 改名为其它的名字,如:改为Shell.A pp licati on-ChangeN am e或Shell.A pp licati on.1-ChangeN am e修改CL S I D值:H KEY-CLA SSES-ROO T Shell.A pp licati on CL S I D 项目的值H KEY-CLA SSES-ROO T Shell.A pp licati on CL S I D 项目的值H KEY-CLA SSES-ROO T W Scri p t.Shell CL S I D 项目的值以后在需要时,使用修改后的名称就可以正常调用此这几个组件了。