就裝到果時佢打左尼舊野出黎...姐係點解
★funG×' 發表於 4-11-2009 18:33
來自碎片對象文件(.shs)的威脅
--------------------------------------------------------------------------------
*碎片對象文件*
很多人都應該都見過windows產生的碎片文件,windows中有一種被稱為碎片對象的文件(.shs文件)。如果你在郵件附件中收倒一份這樣的文件,你敢不敢打開它呢。估計很多人都不會覺得這種文件是一個威脅。原因有幾點:
1 碎片對象文件的缺省圖標是一個和記事本文件圖標相類似的圖標,很容易會被誤認為是一些文本的文檔,用戶對他的警惕心理也比較小。
2 .shs是一個無條件隱藏擴展名的文件。即使是在“資源管理器\工具\文件夾選項\查看”屬性中將"隱藏已知文件擴展名"屬性設為不隱藏,.shs文件仍然是隱藏。很多人都喜歡將文件擴展名顯示出來(包括我),這樣對文件的情況了解的更清楚些。可是一個test.txt.shs文件在瀏覽器中顯示依然是test.txt.在你已經習慣了看到文件擴展名的情況下,你會對這樣一個文件起疑心嗎?
3 即使有疑心,你用任何殺毒軟件都不會找到這個文件的一點問題,因為這個文件本身就沒有病毒,也不是可執行的,而且還是系統文件。你會懷疑這樣的文件嗎?
*技術原理*
---- OLE(Object Linking And Embedding)
---- 對象鏈接與嵌入,OLE允許你通過使用來自兩個或多個WINDOWS應用程序的資源來創造複雜的 文本,OLE提供了方便的技術用來將文字和來自不同程序的數字表、圖象和其他類型的數據組合起 來。為此,OLE定義了將對象附屬於宿主文本的兩個基本方法,鏈接與嵌入:
---- 嵌入:一個嵌入對象包含在宿主文本中。要創建或編輯一個嵌入對象的數據時,你可以在不 離開宿主文本的情況下激活源應用程序。此結果對象將保存在宿主文本中,而不是另外其它的文件。例如,你創建了一個字處理文本,其中包含嵌入Excel工作表。為了執行在此工作表上的操作, 你可以在此文本內部激活Excel。在保存了此字處理文件後,你同時也將嵌入的工作表數據保存了下來。
---- 鏈接:相比之下,一個鏈接對象卻保存在外部文件中。宿主文本包含了對數據的引用以及對鏈接對象的映象,而不保存數據本身。在修訂對象數據時,所做的改變顯示在宿主文本中但卻保存在外部文件中。例如,包含一個鏈接Excel工作表對象的字處理文本提供給你對用於編輯工作表數據的Excel資源的完整訪問能力。此文本包含了對分立工作表文件的引用。如果此工作表恰好被鏈接入任何其它文本中則可以從任何一個它的宿主文本中編輯其數據。Windows在需要時可以更新此鏈接關系(簡稱鏈),這樣便可以給每一個宿主文本提供數據的最新版本。
也就是說,我們所輸入的命令作為OLE對象嵌入到對象包裝程序新建的文件中了,而微軟為了能方便的將嵌入到文件的對象進行複制,使用了一種技術Shell Scrap Object(簡稱SHS),就是說,當你在不同文件間複制對象時,windows是將對象包裝成一個碎片對象來進行複制的。因此,一旦我們不是在文件間進行複制粘貼,而是直接將碎片對象粘貼到硬盤上,就會產生一個.shs文件。這個碎片對象文件保存了原來對象的所具備的功能,原來對象包含的命令同樣會被解析執行。
*解決方法*
既然這種文件可能會帶來危險,那麽我們該如何防止來自這種文件的威脅呢?
shs文件既然不是可執行文件,當然需要其他的程序來解析執行了,我們去掉解析執行的關聯就可以簡單防止這種文件中潛伏的威脅了。
打開註冊表編輯器:regedit.exe
在[HKEY_CLASSES_ROOT\.shs]主鍵下,將默認值ShellScrap刪除,然後在雙擊.shs文件,這回不會去執行了,彈出讓我們選擇打開.shs文件需要的程序的對話框。跟徹底一點的辦法是將[HKEY_CLASSES_ROOT\ShellScrap\shell\open\command]下的打開.shs文件的關聯完全去掉,現在即使雙擊.shs文件,連選擇運行的程序也對話框也不打開了,直接要求在控制面板重建文件關聯。
*題外的話*
在windows系統中,還存在其他一些類似的的文件後綴名,如.shb、.lnk等等,例如攻擊者可以在快捷方式文件屬性指向中同樣嵌入惡意命令,對系統造成危害。 |