前 言 殺毒軟件風靡全球的今天,各式各樣的病毒仍然在網絡上橫行,其形式的多樣化,自身之隱蔽性都大大的提高。其中,網頁病毒、網頁木馬就是這個新型病毒大軍中危害面最廣泛,傳播效果最佳的。之所以會出此篇,也是在考慮到太多的人都在網頁病毒中“應聲倒下”,卻不知自己是如何中毒,以及中毒後如何去處理。就此問題,我們開始以下,對網頁病毒、網頁木馬這一“新概念”做個詳細的剖析。 注:為什麼會用這麼大的篇幅去介紹網頁病毒、網頁木馬的常識和運行機理,而非機械地去介紹如何如何做,大家在通讀全文後便有個新的了解。 第一章 惡意網頁的基本常識 第一節 什麼是網頁病毒 網頁病毒是利用網頁來進行破壞的病毒,它存在於網頁之中,其實是使用一些SCRIPT語言編寫的一些惡意代碼利用IE的漏洞來實現病毒植入。當用戶登錄某些含有網頁病毒的網站時,網頁病毒便被悄悄激活,這些病毒一旦激活,可以利用系統的一些資源進行破壞。輕則修改用戶的注冊表,使用戶的首頁、浏覽器標題改變,重則可以關閉系統的很多功能,裝上木馬,染上病毒,使用戶無法正常使用計算機系統,嚴重者則可以將用戶的系統進行格式化。而這種網頁病毒容易編寫和修改,使用戶防不勝防。 目前的網頁病毒都是利用JS.ActiveX、WSH共同合作來實現對客戶端計算機,進行本地的寫操作,如改寫你的注冊表,在你的本地計算機硬盤上添加、刪除、更改文件夾或文件等操作。而這一功能卻恰恰使網頁病毒、網頁木馬有了可乘之機。 而在我們分析網頁病毒前,先叫我們知道促使病毒形成的罪魁禍首:Windows 腳本宿主 和Microsoft Internet Explorer漏洞利用 第二節 Windows 腳本宿主,Internet Explorer漏洞以及相關 WSH,是“Windows Scripting Host”的縮略形式,其通用的中文譯名為“Windows 腳本宿主”。對於這個較為抽象的名詞,我們可以先作這樣一個籠統的理解:它是內嵌於 Windows 操作系統中的腳本語言工作環境。 Windows Scripting Host 這個概念最早出現於 Windows 98 操作系統。大家一定還記得 MS-Dos 下的批處理命令,它曾有效地簡化了我們的工作、帶給我們方便,這一點就有點類似於如今大行其道的腳本語言。但就算我們把批處理命令看成是一種腳本語言,那它也是 98 版之前的 Windows 操作系統所唯一支持的“腳本語言”。而此後隨著各種真正的腳本語言不斷出現,批處理命令顯然就很是力不從心了。面臨這一危機,微軟在研發 Windows 98 時,為了實現多類腳本文件在 Windows 界面或 Dos 命令提示符下的直接運行,就在系統內植入了一個基於 32 位 Windows 平台、並獨立於語言的腳本運行環境,並將其命名為“Windows Scripting Host”。WSH 架構於 ActiveX 之上,通過充當 ActiveX 的腳本引擎控制器,WSH 為 Windows 用戶充分利用威力強大的腳本指令語言掃清了障礙。 WSH也有它的不足之處,任何事物都有兩面性,WSH 也不例外。應該說,WSH 的優點在於它使我們可以充分利用腳本來實現計算機工作的自動化;但不可否認,也正是它的這一特點,使我們的系統又有了新的安全隱患。許多計算機病毒制造者正在熱衷於用腳本語言來編制病毒,並利用 WSH 的支持功能,讓這些隱藏著病毒的腳本在網絡中廣為傳播。借助WSH的這一缺陷,通過JAVASCRIPT,VBSCRIPT,ACTIVEX等網頁腳本語言,就形成了現在的“網頁危機”。 促使這一問題發生的還有問題多多Internet Explorer 的自身漏洞。比如:“錯誤的MIME?Multipurpose Internet Mail Extentions,多用途的網際郵件擴充協議頭”,“Microsoft Internet Explorer浏覽器彈出窗口Object類型驗證漏洞”。而以下介紹的幾個組件存在的問題或漏洞或是在安全問題上的過濾不嚴密問題,卻又造成了“網頁危機”的另外一個重要因素。 l Java語言可以編寫兩種類型的程序:應用程序(Application)和小應用程序(Applet)。應用程序是可以獨立運行的程序,而Applet不能獨立運行,需要嵌入HTML文件,遵循一套約定,在支持Java的浏覽器(如:Netscape Navigator 2.02版本以上,HotJava,Microsoft Internet Explorer 3.0版本以上)運行,是Java一個重要的應用分支,也是當時Java最令人感興趣的地方(它一改網頁呆板的界面),就是在WWW網頁(Home Page / Pages)設計中加入動畫、影像、音樂等,而要達到這些效果使用最多的是Java Applet和Java Script (這是一種Java的命令語言)。 l JavaScript是一種基於對象(Object)和事件驅動(Event Driven)並具有安全性能的腳本語言。使用它的目的是與HTML超文本標記語言、與Web客戶交互作用。從而可以開發客戶端的應用程序等。它是通過嵌入或文件引用在標准的HTML語言中實現的。它的出現彌補了HTML語言的缺陷,它是Java與HTML折衷的選擇,具有基於對象、簡單、安全、動態、跨平台性等特性。 l ActiveX是Microsoft提出的一組使用COM(Component Object Model,部件對象模型)使得軟件部件在網絡環境中進行交互的技術。它與具體的編程語言無關。作為針對Internet應用開發的技術,ActiveX被廣泛應用於WEB服務器以及客戶端的各個方面。同時,ActiveX技術也被用於方便地創建普通的桌面應用程序。在Applet中可以使用ActiveX技術,如直接嵌入ActiveX控制,或者以ActiveX技術為橋梁,將其它開發商提供的多種語言的程序對象集成到Java中。與Java的字節碼技術相比,ActiveX提供了“代碼簽名”(Code Signing)技術保證其安全性。 第三節 網頁病毒的攻擊方式 既然是網頁病毒,那麼很簡單的說,它就是一個網頁,甚至於制作者會使這個特殊網頁與其他一般的網頁別無他樣,但在這個網頁運行與本地時,它所執行的操作就不僅僅是下載後再讀出,伴隨著前者的操作背後,還有這病毒原體軟件的下載,或是木馬的下載,然後執行,悄悄地修改你的注冊表,等等…那麼,這類網頁都有什麼特征呢? § 1.美麗的網頁名稱,以及利用浏覽者的無知. 不得不承認,很多惡意網頁或是站點的制作者,他們對浏覽者的心理分析是下功夫的,對域名的選擇和利用絕對是很到位的。很多上網的男性網民大都對MM照片感興趣,5自學網,這就是他們利用的一個渠道。如你看到了一個域名:,或是等等. 你會動心去看麼。如果不會,再看這個域名:/Article/UploadFiles/200603/20060301160330179.gif 這個地址你會去看麼?很顯然,咋一看,圖片!一張可能是MM的圖片,又有懂點安全知識的人說了,放心它不可能是BMP圖片木馬,你用這個地址打開一定是張.GIF格式的圖片。好,你可以去嘗試一下。再看另外一個域名,很顯然是經過構造的。/Article/UploadFiles/200603/20060301160331961.gif 你還能“火眼金睛”嗎?不知道結果是什麼,那你就放心的去點擊它看看。
§ 2.利用浏覽者的好奇心 在這裡我要說一句,這樣的人中毒也是自找。對什麼都要好奇這可不是個好習慣。有些東西不是你想看就可以去看的。[作者注]有這個習慣的都改改.^_^! § 3.無意識的浏覽者 這類人,對他們的同情,我們表示遭遇。^_^! 在我們基本了解了網頁病毒、網頁木馬的運行機體環境後,讓我們開始重點分析一下網頁病毒是如何對我們的計算機進行攻擊,並染毒,並自我保護的。 第二章 網頁病毒、網頁木馬機理深度剖析 第一節 網頁病毒、網頁木馬的制作方式 Ⅰ.Javascript.Exception.Exploit 利用JS WSH的完美結合,來制作惡意網頁的方法幾乎是所有惡意站點必有的“功能”。 Ⅱ. 錯誤的MIME Multipurpose Internet Mail Extentions,多用途的網際郵件擴充協議頭. 幾乎是現在網頁木馬流行利用的基本趨勢,這個漏洞在IE5.0到IE6.0版本中都有,對這麼一個全能的漏洞,大家怎能不重視? Ⅲ..EXE to .BMP Javascritp.Exception.Exploit 具體的.EXE轉化到.BMP的文章我想大家都見到過,而且不只一次。應用方法很簡單:誘騙浏覽者上當。 Ⅳ. iframe 漏洞的利用 當微軟的IE窗口打開另一個窗口時,如果子窗口是另一個域或安全區的話,安全檢查應當阻止父窗口訪問子窗口。但事實並非如此,父窗口可以訪問子窗口文檔的frame,這可能導致父窗口無論是域或安全區都能在子窗口中設置Frame或IFrame的URL。這會帶來嚴重的安全問題,通過設置URL指向javascript協議,父窗口能在子域環境下運行腳本代碼,包括任意的惡意代碼。攻擊者也能在“我的電腦”區域中運行腳本代碼。這更會造成嚴重的後果。 Ⅴ.通過安全認證的CAB,COX 此類方法就是在.CAB文件上做手腳,使證書.SPC和密鑰.PVK合法 原理:IE讀文件時會有文件讀不出,就會去“升級”這樣它會在網頁中指定的位置找 .cab 並在系統裡寫入個CID讀入.cab裡的文件。 方法:.cab是WINDOWS裡的壓縮文件,我們知道IE裡所用的安全文件是用簽名的CAB也不例外,所做的CAB是經過安全使用證書引入的。也就是說IE認證攻擊,只所以每次都能入侵我的腦,是因為它通過的是IE認證下的安全攻擊,這樣不管我怎麼做都沒辦法。 Ⅵ.EXE文件的捆綁 現在的網頁木馬捆綁機幾乎是開始泛濫了,多的數不勝數。再將生成的MHT文件進行加密,好,這樣一來,連我們最信任的殺毒軟件也無效了。 第二節 網頁病毒、網頁木馬的運行機理分析 Ⅰ.Javascript.Exception.Exploit 精華語句: Function destroy(){ try { //ActiveX initialization 初始化ActiveX,為修改注冊表做准備 a1=document.applets[0]; //獲取applet運行對象,以下語句指向注冊表中有關IE的表項 a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}"); a1.createInstance(); Shl = a1.GetObject(); a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}"); a1.createInstance(); FSO = a1.GetObject(); a1.setCLSID("{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}"); a1.createInstance(); Net = a1.GetObject(); try { 開始做壞事 } } catch(e) {} } catch(e) {} } function do() { //初始化函數,並每隔一秒執行修改程序 setTimeout("destroy()", 1000); //設定運行時間1秒 } Do() //壞事執行函數指令 全部是JS編寫,沒有什麼高深的技術,但它卻可以