淘特ASP木马扫描器的代码

+-----------------+
|淘特ASP木马扫描器|
+-----------------+
  本程序可以扫描服务器上的所有指定类型(asp,cer,asa,cdx)的文件,查出可疑的木马程序。系统采用扫描程序与病毒库分离的形式,
以后升级只需像杀毒软件那样升级病毒库就可以了。目前可以查杀所有流行的ASP木马程序。

  系统提供了全站扫描、按文件夹和指定文件扫描三种扫描方式,如果网站文件比较少的话,推荐使用"全站扫描",如果文件比较多,推荐
使用按文件夹扫描。扫描过程,系统会记录被扫描过的文件列表,同时对怀疑是木马程序的文件以列表的形式展现,为了便于比较最近有可能
被上传过ASP木马程序,系统特别对当前时间7日内修改、创建的文件以加红显示;系统会对怀疑是木马的文件作出"级别"判断,并加以颜色区分
;建议对级别为"一般"的程序作手动检查后,再作处理,对级别为"严重"的文件,可以点击"文件名称"下的文件链接,一般打开后木马程序都会
有一个登录提示,这时就点击"文件名称"下的"删除"链接,直接将文件从服务器中删除即可。如果担心会误删除,可以先点击"下载"将文件备份。
使用方法:
将本程序解压后的文件上传至服务器中。执行:http://你的网址/scan.asp

+-----------------+
|登录密码:totscan|
+-----------------+
virus_lib.asp


代码如下:

<%
dim virus(1,7),virus_Regx(1,4)
'定义木马组件
virus(0,0)="WScript"
virus(1,0)="级别:<font color=""green"">严重!</font><br>WScript 多为木马关键字"
virus(0,1)="Shell"
virus(1,1)="级别:<font color=""green"">严重!</font><br>Shell 多为木马关键字"
virus(0,2)="Shell.Application"
virus(1,2)="级别:<font color=""green"">严重!</font><br>asp 组件,一般多为木马所用"
'海阳组件
virus(0,3)="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"
virus(1,3)="级别:<font color=""green"">严重!</font><br>asp WScript 组件,一般多为木马所用"
virus(0,4)="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"
virus(1,4)="级别:<font color=""green"">严重!</font><br>asp wscript 组件,一般多为木马所用"
virus(0,5)="clsid:093FF999-1EA0-4079-9525-9614C3504B74"
virus(1,5)="级别:<font color=""green"">严重!</font><br>asp net 组件,一般多为木马所用"
virus(0,6)="clsid:F935DC26-1CF0-11D0-ADB9-00C04FD58A0B"
virus(1,6)="级别:<font color=""green"">严重!</font><br>asp net 组件,一般多为木马所用"
virus(0,7)="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"
virus(1,7)="级别:<font color=""green"">严重!</font><br>asp fso 组件,一般多为木马所用"

'定义木马关键字
virus_Regx(0,0)="@\s*LANGUAGE\s*=\s*[""]?\s*(vbscript|jscript|javascript).encode\b"
virus_Regx(1,0)="级别:<font color=""green"">严重!</font><br>脚本被加密了,一般ASP文件是不会加密的。"
virus_Regx(0,1)="\bEval\b"
virus_Regx(1,1)="级别:<font color=""gray"">一般!</font><br>eval()函数可以执行任意ASP代码,被一些后门利用。其形式一般是:ev"&"al(X)<br>但是javascript代码中也可以使用,有可能是误报。"
virus_Regx(0,2)="[^.]\bExecute\b"
virus_Regx(1,2)="级别:<font color=""gray"">一般!</font><br>execute()函数可以执行任意ASP代码,被一些后门利用。其形式一般是:ex"&"ecute(X)。"
virus_Regx(0,3)="Server.(Execute|Transfer)([ \t]*|\()[^""]\)"
virus_Regx(1,3)="级别:<font color=""gray"">一般!</font><br>不能跟踪检查Server.e"&"xecute()函数执行的文件。请管理员自行检查。"
virus_Regx(0,4)="CreateObject[ |\t]*\(.*\)$[^adodb.recordset]"
virus_Regx(1,4)="级别:<font color=""gray"">一般!</font><br>Crea"&"teObject函数使用了变形技术,仔细复查"
%>

scan.asp


代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="virus_lib.asp"-->
<%
server.ScriptTimeout =90000
dim act
act=request.QueryString("act")
Const PASSWORD = "totscan"
if act="login" then
    if request.Form("pwd") = PASSWORD then session("login")="ok"
end if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Asp木马扫描器</title>
<script language="JavaScript" type="text/JavaScript">

function ConfirmDel()
{
   if(confirm("确认删除?并且不能恢复!"))
     return true;
   else
     return false;

}
</script>
</head>

<body>
<div align="center"><h2>Asp木马扫描器</h2></div>
<hr>
<%
If Session("login") <> "ok" then
    call LoginForm()
else
    dim pathStr
    if request("path")<>"" then
        pathStr=request("path")
    else
        pathStr=server.MapPath("/")
    end if
    response.Write("<a href=""javascript:history.back();"">←返回</a><br>"&Chr(10))
    if act="scan" then        
        dim ScanFileType,Suspect,ScanFileNum,ScanFolderNum,BeginTime,EndTime,TmpPath,Report        
        ScanFileType = "asp,cer,asa,cdx"
        Suspect = 0
        ScanFileNum = 0
        ScanFolderNum =0        
        BeginTime = timer
        response.Write("<textarea name=""textarea"" style=""width:100%"" rows=""5"">"&Chr(10))
        response.Write("扫描日志:"&vbcrlf)
        if(request.QueryString("file")<>"") then
            Call ScanFile(request.QueryString("file"),"")
        else
            Call ScanFolder(pathStr)
        end if
        response.Write("</textarea>")
        Call ShowResult()
        EndTime = timer        
        response.write "<br><font size=""2"">执行时间:"&cstr(int(((EndTime-BeginTime)*10000 )+0.5)/10)&"毫秒</font>"    
    elseif act="del" then
        Call DelFile(request.QueryString("file"))
        response.Write("<br><a href="""&request.ServerVariables("HTTP_REFERER")&""">返回</a>")
    elseif act="down" then
        Call Download(request.QueryString("file"))
    else
        call FileList(pathStr)
        call ScanForm()
    end if
end if

%>
<hr>
</body>
</html>
<%
Sub LoginForm
%>
<form name="form1" method="post" action="?act=login">
  <div align="center">Password: 
    <input name="pwd" type="password" size="15"> 
    <input type="submit" name="Submit" value="提交">
  </div>
</form>
<%
end Sub
Sub ScanForm
%>
<form action="?act=scan" method="post">
    <input type="submit" value=" 全站扫描 " style="background:#fff;border:1px solid #999;padding:2px 2px 0px 2px;margin:4px;border-width:1px 3px 1px 3px" />
</form>
<%
end sub
'遍历处理path及其子目录所有文件
Sub FileList(Path)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    if not fso.FolderExists(path) then exit sub
    Set folders = FSO.GetFolder(Path)'目录下所有对象
    Set files = folders.files
    Set subfolders = folders.SubFolders
    '列表文件夹
    For Each fl in subfolders
        response.Write("<a href=""?path="&Path&"\"&fl.name&"""><img src=""images/folder.gif"" border=""0"">"&fl.name&"</a>"&Chr(10))
        response.Write("<a href=""?act=scan&path="&Path&"\"&fl.name&""">扫描</a><br>"&Chr(10))
    Next
    '列表文件
    For Each file_f in files
        response.Write("<img src=""images/file.gif"">"&file_f.name&""&Chr(10))
        response.Write("<a href=""?act=scan&file="&Path&"\"&file_f.name&""">扫描</a><br>"&Chr(10))
    Next
    set folders=nothing
    set files=nothing
    set subfolders=nothing
    Set FSO = Nothing
End Sub
Sub ShowResult
%>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="CContent">
  <tr>
    <td class="CPanel" style="padding:5px;line-height:170%;clear:both;font-size:12px">        
扫描完毕!一共检查文件夹<font color="#FF0000"><%=ScanFolderNum%></font>个,文件<font color="#FF0000"><%=ScanFileNum%></font>个,发现可疑点<font color="#FF0000"><%=Suspect%></font>个    
</td></tr></table>
<table width="100%" border="0" cellpadding="0" cellspacing="1" style="padding:5px; background-color:#666666;line-height:18px;clear:both;font-size:12px">
    <tr>
        <td width="30%" bgcolor="#FFFFFF">文件名称</td>
        <td width="20%" bgcolor="#FFFFFF">特征码</td>
        <td width="30%" bgcolor="#FFFFFF">描述</td>
        <td width="20%" bgcolor="#FFFFFF">创建/修改时间</td>
    </tr>
    <p>
    <%=Report%>
    <br/>
    </p>
</table>
<%
end Sub
'遍历处理path及其子目录所有文件
Sub ScanFolder(Path)
    dim folders,files,subfolders
    ScanFolderNum = ScanFolderNum + 1
    Set FSO = CreateObject("Scripting.FileSystemObject")
    if not fso.FolderExists(path) then exit sub
    Set folders = FSO.GetFolder(Path)
    Set files = folders.files
    For Each myfile in files
        If CheckExt(FSO.GetExtensionName(path&"\"&myfile.name)) Then
            Call ScanFile(Path&"\"&myfile.name, "")            
        End If
    Next
    Set subfolders = folders.SubFolders
    For Each f1 in subfolders
        ScanFolder path&"\"&f1.name        
    Next
    set folders=nothing
    set files=nothing
    set subfolders=nothing
    Set FSO = Nothing
End Sub

'检测文件
Sub ScanFile(FilePath, InFile)
    dim FSOs,ofile,filetxt,fileUri,vi
    ScanFileNum = ScanFileNum + 1
    response.Write("扫描文件:"&FilePath&vbcrlf)
    response.Flush()
    If InFile <> "" Then
        Infiles = "该文件被<a href=""http://"&Request.Servervariables("server_name")&"\"&InFile&""" target=_blank>"& InFile & "</a>文件包含执行"
    End If
    Set FSOs = CreateObject("Scripting.FileSystemObject")
    on error resume next
    set ofile = fsos.OpenTextFile(FilePath)
    filetxt = Lcase(ofile.readall())
    If err Then Exit Sub end if
    if len(filetxt)>0 then        
        '特征码检查
        fileUri = "<a href=""http://"&Request.Servervariables("server_name")&":"&Request.ServerVariables("SERVER_PORT")&"\"&replace(FilePath,server.MapPath("\")&"\","",1,1,1)&""" target=_blank>"&replace(FilePath,server.MapPath("\")&"\","",1,1,1)&"</a><br>"
        fileUri=fileUri&"操作: <a href=""?act=del&file="&FilePath&""" onClick=""return ConfirmDel()"">删除</a>"
        fileUri=fileUri&" <a href=""?act=down&file="&FilePath&""">下载</a>"
        for vi=0 to ubound(virus,2)
            If instr(filetxt, Lcase(virus(0,vi))) then
                Report = Report&"<tr bgcolor=""#FFFFFF""><td>"&fileUri&"</td><td>"&virus(0,vi)&"</td><td>"&virus(1,vi)&infiles&"</td><td>创建:"&GetDateCreate(filepath)&"<br>修改:"&GetDateModify(filepath)&"</td></tr>"
                Suspect = Suspect + 1
            End if
        next            
        for vi=0 to ubound(virus_Regx,2)
            Set regEx = New RegExp
            regEx.IgnoreCase = True
            regEx.Global = True
            regEx.Pattern = virus_Regx(0,vi)
            If regEx.Test(filetxt) Then
                Report = Report&"<tr bgcolor=""#FFFFFF""><td>"&fileUri&"</td><td>"&virus_Regx(0,vi)&"</td><td>"&virus_Regx(1,vi)&infiles&"</td><td>创建:"&GetDateCreate(filepath)&"<br>修改:"&GetDateModify(filepath)&"</td></tr>"
                Suspect = Suspect + 1
            End If
        next

'Check include file
        Set regEx = New RegExp
        regEx.IgnoreCase = True
        regEx.Global = True
        regEx.Pattern = "<!--\s*#include\s*file\s*=\s*"".*"""
        Set Matches = regEx.Execute(filetxt)
        For Each Match in Matches            
            tFile = Replace(Mid(Match.Value, Instr(Match.Value, """") + 1, Len(Match.Value) - Instr(Match.Value, """") - 1),"/","\")
            If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
                Call ScanFile( Mid(FilePath,1,InStrRev(FilePath,"\"))&tFile, replace(FilePath,server.MapPath("\")&"\","",1,1,1) )
                SumFiles = SumFiles + 1
            End If
        Next
        Set Matches = Nothing
        Set regEx = Nothing

'Check include virtual
        Set regEx = New RegExp
        regEx.IgnoreCase = True
        regEx.Global = True
        regEx.Pattern = "<!--\s*#include\s*virtual\s*=\s*"".*"""
        Set Matches = regEx.Execute(filetxt)
        For Each Match in Matches
            tFile = Replace(Mid(Match.Value, Instr(Match.Value, """") + 1, Len(Match.Value) - Instr(Match.Value, """") - 1),"/","\")
            If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
                Call ScanFile( Server.MapPath("\")&"\"&tFile, replace(FilePath,server.MapPath("\")&"\","",1,1,1) )                
            End If
        Next
        Set Matches = Nothing
        Set regEx = Nothing

'Check Server&.Execute|Transfer
        Set regEx = New RegExp
        regEx.IgnoreCase = True
        regEx.Global = True
        regEx.Pattern = "Server.(Exec"&"ute|Transfer)([ \t]*|\()"".*"""
        Set Matches = regEx.Execute(filetxt)
        For Each Match in Matches
            tFile = Replace(Mid(Match.Value, Instr(Match.Value, """") + 1, Len(Match.Value) - Instr(Match.Value, """") - 1),"/","\")
            If Not CheckExt(FSOs.GetExtensionName(tFile)) Then
                Call ScanFile( Mid(FilePath,1,InStrRev(FilePath,"\"))&tFile, replace(FilePath,server.MapPath("\")&"\","",1,1,1) )                
            End If
        Next
        Set Matches = Nothing
        Set regEx = Nothing

end if
    set ofile = nothing
    set fsos = nothing
End Sub

'检查文件后缀,如果与预定的匹配即返回TRUE
Function CheckExt(FileExt)
    If ScanFileType = "*" Then CheckExt = True
    Ext = Split(ScanFileType,",")
    For i = 0 To Ubound(Ext)
        If Lcase(FileExt) = Ext(i) Then 
            CheckExt = True
            Exit Function
        End If
    Next
End Function
'删除文件
Sub DelFile(FilePath)
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
     if fso.FileExists(FilePath) then
         fso.DeleteFile(FilePath)
         Response.Write("<h2>成功删除文件:</h2>" &FilePath)
    else
        response.Write("<h2>删除失败!文件:"&FilePath&"没有找到!</2>")
     end if
     set fso=nothing
end Sub
'下载文件
sub Download(FilePath)
    dim oStream
    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    if FSO.FileExists(FilePath) then
        set oStream=Server.CreateObject("ADODB.Stream")
        oStream.Type=1
        oStream.Open
        on error resume next
        oStream.LoadFromFile(FilePath)
        if Err.Number=0 then
            Response.AddHeader "Content-Disposition", "attachment; filename=" & FSO.GetFileName(FilePath)
            Response.AddHeader "Content-Length", oStream.Size
            Response.ContentType="bad/type" 'yeu cau ie hien hop thoai save-as
            Response.BinaryWrite oStream.Read
        end if
        oStream.Close
        set oStream=nothing
    end if
    set FSO=nothing
end sub
Function GetDateModify(filepath)
    dim s,days
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFile(filepath) 
    s = f.DateLastModified 
    set f = nothing
    set fso = nothing
    days=DateDiff("d",Cdate(s),now())
    if(days>-7 and days<7) then
        s="<font color=""red"">"&s&"</font>"
    end if
    GetDateModify = s
End Function

Function GetDateCreate(filepath)
    dim s,days
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFile(filepath) 
    s = f.DateCreated 
    set f = nothing
    set fso = nothing
    days=DateDiff("d",Cdate(s),now())
    if(days>-7 and days<7) then
        s="<font color=""red"">"&s&"</font>"
    end if
    GetDateCreate = s
End Function

%>

(0)

相关推荐

  • 网页木马代码例子(里面的文件是漏洞扫描器,呵呵)

    对于经常上网冲浪的朋友对于网页木马一定不会陌生,打开某个网站,莫名其妙的运行了某个木马,虽然在"Internet选项"里有"安全"设置,但是下面的代码就不会弹出任何信息就直接运行了程序,不信,follow me! (提示: 只是了解一下技术和方法,千万别搞破坏,yexj00.exe是一个windows2000 漏洞扫描器和查漏补缺用的,不是病毒或木马,放心运行.) 复制代码 代码如下: <script language="VBScript"

  • asp和php页面全面封杀WVS扫描器的代码

    Acunetix Web Vulnerability Scanner 是一款国外产的及其优秀的扫描工具,可以帮忙挖掘网站内的诸多漏洞,包括常见的SQLinjection,XSS(很多自认为牛人的就喜欢用WVS扫站发现XSS就公布说是他发现的...).既然WVS这么牛,那咱们就不给他访问网站的机会,像堵SQL注入一样来堵住它. 分析了一下WVS扫描时候的头文件,基本都包含它网站的英文名称:acunetix,于是我们从这个名称下手了.以下是三个版本的代码: 1.ASP(JScript)版,对于LBS

  • php之对抗Web扫描器的脚本技巧

    大部分Web扫描器(包括上传.管理后台扫描器)都是通过判断HTTP的200返回来确定页面存在的,在页面存在的基础上,这些扫描期才会开始对漏洞进行扫描.既然不能保证内部逻辑的严密,那么就在输入/输出这个瓶颈上做文章,当输入错误的密码或者权限失败时,我们自己返回一个400错误的HTTP消息来误导扫描器不再继续进行扫描(包括哪些手工入侵者) 以PHP为例: 复制代码 代码如下: <?php ob_start(); if ('Password' != $_GET['password']) header(

  • PHP Web木马扫描器代码 v1.0 安全测试工具

    scanner.php 复制代码 代码如下: <?php /**************PHP Web木马扫描器************************/ /* [+] 作者: alibaba */ /* [+] QQ: 1499281192 */ /* [+] MSN: weeming21@hotmail.com */ /* [+] 首发: t00ls.net , 转载请注明t00ls */ /* [+] 版本: v1.0 */ /* [+] 功能: web版php木马扫描工具 */

  • php木马webshell扫描器代码

    复制代码 代码如下: <?php /* +--------------------------------------------------------------------------+ | Codz by indexphp Version:0.01 | | (c) 2009 indexphp | | http://www.indexphp.org | +--------------------------------------------------------------------

  • 淘特ASP木马扫描器的代码

    +-----------------+ |淘特ASP木马扫描器| +-----------------+ 本程序可以扫描服务器上的所有指定类型(asp,cer,asa,cdx)的文件,查出可疑的木马程序.系统采用扫描程序与病毒库分离的形式, 以后升级只需像杀毒软件那样升级病毒库就可以了.目前可以查杀所有流行的ASP木马程序. 系统提供了全站扫描.按文件夹和指定文件扫描三种扫描方式,如果网站文件比较少的话,推荐使用"全站扫描",如果文件比较多,推荐 使用按文件夹扫描.扫描过程,系统会记录

  • asp木马代码解密的随机加密webshell

    随机加密webshell,解密还不错,应当免杀 加密源码 复制代码 代码如下: <%@ LANGUAGE = VBScript.Encode %> <%#@~^3A4CAA==@#@& jdDhl/k'r1v2FX!ZFE~,PP,~P,@#@&sHC:'r随机加密 J~P~~@#@&jkDnj"SxE4YY2lJzAhS 4l^0+MRmK:r~P,P~P,P~@#@&ZWazDbotDxEbUn木马随机加密器 rP~P~~,P~P,~P,

  • PHP Web木马扫描器代码分享

    不废话了,直接贴代码了. 代码如下: <?php header('content-type:text/html;charset=gbk'); set_time_limit(0);//防止超时 /** * * php目录扫描监控增强版 * * @version 1.0 * 下面几个变量使用前需要手动设置 * **/ /*===================== 程序配置 =====================*/ $pass="test";//设置密码 $jkdir=&quo

  • ASP下检测图片木马的函数代码

    木马原理:入侵者使用诸如ASP图片木马生成器之类的工具将一张正常的图片与一个ASP木马文件合并成一个图片文件(即将对网站有害的 ASP代码插在图片编码之后,虽然图片仍然可以正常显示,但是文件内容和尺寸已被改变),然后通过网站提供的文件上传功能上传这一张"合 '法的"图片,进而实现了上传ASP木马的目的. ' 防范方法:因为这种木马是图片与木马的二合一,所以需要在上传图片前检查文件内容,若文件内容不合法(即包含有恶意代码在里面), '则禁止上传,从而堵住了木马攻击的源头,这是木马攻击的第

  • 雷客图 站长安全助手 vbs版代码(asp 木马查找)

    均在命令行下使用 AntiIframe.vbs #该脚本是批量挂马程序的逆向,用于批量清除被添加到文件中的恶意代码.记事本打开文件可以修改Pattern参数指定要处理的文件名,文件名之间用|隔开(也支持vbs正则表达式).由于要修改文件,请谨慎的使用(最好先备份文件) #用法: CScript AntiIframe.vbs [处理的路径] [包含清除内容的文件] #例子: CScript AntiIframe.vbs d:\Web d:\lake2.txt -------------------

  • 一款不错的asp木马 黑色界面

    <% Server.ScriptTimeout=999999999 Response.Buffer =true On Error Resume Next UserPass="643617"                           '密码 mName="BY:.尐飛"           '后门名字 Copyright="注:请勿用于非法用途,否则后果作者概不负责"       '版权 Server.ScriptTimeout=9

  • 如何防范ASP木马

    修改三个组件来达到防asp木马攻击.FileSystemObject组件---对文件进行常规操作.WScript.Shell组件---可以调用系统内核运行DOS命令.Shell.Application组件--可以调用系统内核运行DOS命令. 一.使用FileSystemObject组件 1.可以通过修改注册表,将此组件改名,来防止此类木马的危害. HKEY_CLASSES_ROOT\Scripting.FileSystemObject\改名为其它的名字,如:改为FileSystemObject_

  • 两个非常规ASP木马(可躲过扫描)

    hanxiaolian 为了躲避 lake2 ASP站长管理助手而写.. 一.绕过lake2 Asp木马扫描的小马 复制代码 代码如下: <% set c = CreateObject("ADOX.Catalog") c.create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("a.asp")) set c = Nothing c&Serve

随机推荐