目前共有5篇帖子。
談新DLL挾持攻防故事,話新老DLL挾持之不同
1樓 巨大八爪鱼 2010-8-31 20:54

一 回顧DLL挾持的發展

2010年08月24日 微軟發布安全公告2269637,提到三方軟體編程不安全存在一個DLL挾持的缺陷可以導致遠程攻擊

2010年08月24日 流行的漏洞信息共享網站exploit-db馬上就爆出多個DLL挾持漏洞涉及的軟體有:Wireshark(免費嗅探器),Windows Live email(郵箱客戶端), Microsoft MovieMaker(視頻編輯處理),Firefox(網頁瀏覽器), uTorrent (BT下載工具),PowerPoint 2010(辦公軟體)等

2010年08月25日-26日 漏洞信息共享網站exploit-db繼續爆出Winamp,Google Earth,Photoshop等軟體存在DLL挾持漏洞,同時發布這個blog之前筆者的電腦中已經發掘存在的流行軟體有,QQ影音,QQ音樂,美圖秀秀,ppstream等

二 新老DLL挾持的攻擊原理分析和防禦

1 動態連結庫文件通常載入順序如下

    windows xp sp2系統以上會默認開啟SafeDllSearchMode,在這麼模式下DLL文件的搜索順序如下所示

(1)可執行程序載入的目錄(可理解為程序安裝目錄比如 C:\Program Files\uTorrent) (2)系統目錄(即 %windir%\system32 ) (3)16位系統目錄(即 %windir%\system) (4)Windows目錄(即 %windir%) (5)當前目錄(運行的某個文件所在目錄,比如C:\Documents and Settings\Administrator\Desktop\test) (6)PATH環境變數中列出的目錄

 

2 老DLL挾持觸發的原理解析和防禦(漏洞觸發在DLL搜索流程的第一層)

   (1)老DLL挾持的特點:

     為了增加觸發的機率,通常會使用usp1.dll,ws2_32.dll,lpk.dll等應用程序所必須的系統dll文件,然後利用DLL搜索第一順位是程序安裝目錄,在程序安裝目錄釋放一個同名DLL文件,搶先載入惡意病毒DLL文件,從而達到破壞的作用。這裡可執行程序相當於惡意dll的載入器

    (2)老DLL挾持病毒利用回顧重現

      2007年羅姆病毒(ws2_32.dll導致很多殺毒軟體無法打開),2009年春節貓癬病毒(usp10.dll導致很多用戶重裝系統都無法解決病毒問題)

      通常使用老DLL挾持的病毒木馬會枚舉電腦裡面的所有exe目錄,然後將惡意的usp10.dll釋放到每個exe所在的目錄。當用戶執行一個應用程序的時候,將會把惡意的usp10.dll文件優先載入從而感染系統

       根據前面介紹的DLL載入順序,運行程序的時候會優先到程序執行的目錄下載入必須文件,下圖顯示了utorrent.exe在安裝目錄下的找到了usp10.dll文件並把它載入到內存中。

2樓 巨大八爪鱼 2010-8-31 20:54
3樓 巨大八爪鱼 2010-8-31 20:54

   (3)老DLL挾持的通用免疫方案

     可以通過編輯HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs來添加需要面議的DLL文件,比如:新建一個ws2_32 指向ws2_32.dll

3  新DLL挾持觸發的原理解析和防禦(漏洞觸發在DLL搜索流程的第五層)

  (1)新DLL挾持的特點:

     應用程序為了擴展或者兼容等目的需要載入相應的DLL文件,但是因為某些原因導致這個DLL文件默認不存在於當前系統,比如plugin_dll.dll文件默認情況下不存在utorrent的安裝目錄,dwmapi.dllxp環境下不存在(Vista以上系統存在),ie6環境下沒有ieframe.dll(ie7以上版本存在)。正是因為程序需要的DLL文件在DLL搜索順序的(1)-(4)中都不可能存在,此時就會嘗試載入文件所在目錄下的惡意dll文件,從而達到破壞的作用。這裡運行的文件(比如mp3)相當於觸發者,根據文件關聯它會啟動一個應用程序去播放mp3文件。而因為應用程序存在DLL挾持漏洞(比如QQ影音),此時QQ影音就會因為設計上的不足導致成為惡意DLL的載入器。相當於老DLL挾持,簡直達到了運行圖片/視頻文件就會執行惡意文件的目的,當然前提是大灰客們能猜中你電腦裡面的默認查看的軟體是否存在DLL挾持漏洞了

 (2)新DLL挾持利用重現

   通常灰客們會先通過DLL挾持挖掘工具尋找存在DLL挾持漏洞的流行應用程序,然後構造相應的文件上傳到網路上供用戶下載(具體的傳播方式請看下一章),如果用戶的電腦存在漏洞那麼運行相應文件的時候就會執行存在漏洞的程序,從而使得惡意dll被不知不覺載入

   根據前面介紹的DLL載入順序和新DLL挾持的特點,程序在前四個流程都沒有找到需要的文件,只能勉為其難的在第五流程-當前文件目錄下載入惡意dll文件,下圖就顯示了uTorrent載入plugin_dll.dll順序(前四個流程都是 name not found)並且載入當前目錄下惡意plugin_dll.dll文件(第五流程顯示的是success )的過程

4樓 巨大八爪鱼 2010-8-31 20:54
5樓 巨大八爪鱼 2010-8-31 20:55

 (3)新DLL挾持的免疫

   目前微軟沒有提供有效的免疫方案可以使用,建議升級你常用軟體到最新版本,同時可以嘗試使用金山毒霸dll劫持漏洞免疫工具減少風險

 三 新DLL挾持可能存在的攻擊方式

     exploit-db公布了存在DLL Hijacking的大量常用軟體,這些軟體裡面有視頻音頻播放器,圖像設計瀏覽軟體,IM聊天工具,文字處理軟體,網頁瀏覽器,下載軟體,殺毒軟體。根據在下的一點拙見如果病毒作者想要利用這個漏洞來實現廣泛傳播的話主要有幾種方式。

1  BT下載大片傳播

     挖掘出支持BT下載的流行軟體(比如uTorrent )的DLL Hijacking漏洞,然後構造一個惡意dll文件(估計會設置隱藏屬性,這樣你解壓以後將不會看到這個文件)和BT種子文件打包成壓縮包上傳到網上供用戶下載,用戶一旦下載了這個壓縮包雙擊BT種子文件的時候會調用uTorrent 打開,uTorrent 運行的時候由於設計上的不河蟹根據dll載入的順序最後會將種子所在目錄的惡意dll載入

2  美女圖片分享傳播

    挖掘出流行圖片瀏覽工具(比如美圖秀秀)的DLL Hijacking漏洞,然後構造一個惡意dll文件(估計會設置隱藏屬性,這樣你解壓以後將不會看到這個文件)和圖片文件打包成壓縮包上傳到網上供用戶下載,用戶一旦下載了這個壓縮包,解壓瀏覽美女靚照的時候可能會調用圖片瀏覽工具打開從而觸發漏洞載入惡意dll文件
3  軟體下載包含的網頁文件傳播

    挖掘出流行網頁瀏覽工具(比如firefox)的DLL Hijacking漏洞,然後構造一個惡意dll文件(估計會設置隱藏屬性,這樣你解壓以後將不會看到這個文件),應用程序和htm等網頁文件打包成軟體壓縮包並上傳到網上供用戶 下載。用戶一旦下載了這個軟體壓縮包,解壓以後運行安裝必看.htm之類的網頁文件會調用網頁瀏覽工具打開從而觸發漏洞載入惡意dll文件
4  熱門視頻音頻文件傳播

    挖掘出流行視頻音頻播放工具(比如QQ影音)的DLL Hijacking漏洞,然後構造一個惡意dll文件(估計會設置隱藏屬性,這樣你解壓以後將不會看到這個文件)和rmvb等視音頻文件打包壓縮包並上傳到網上供用戶 下載。用戶一旦下載了這個壓縮包,解壓播放相應視頻的時候從而觸發漏洞載入惡意dll文件

5  目前公布的部分軟體列表

Google Earth
Nullsoft Winamp 5.581
Media Player Classic 6.4.9.1
Mozilla Thunderbird
Microsoft Office PowerPoint 2007
Adobe InDesign CS4
Nvidia Driver
Adobe Illustrator CS4
Adobe Premier Pro CS4
Skype <= 4.2.0.169
TechSmith Snagit 10
Safari v5.0.1
uTorrent
Microsoft Visio 2003
Adobe Photoshop CS2
avast! <= 5.0.594
Adobe Dreamweaver CS5
Opera v10.61
Firefox <= 3.6.8

四  DLL安全編程,避免產生DLL挾持問題

更多信息請訪問http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx

  (1) 調用LoadLibrary, LoadLibraryEx, CreateProcess的,或者 的ShellExecute 等涉及到模塊載入的函數的時候,指定DLL載入的完整路徑,貌似應該有API可以獲取當前程序運行的目錄的

(2)考慮使用 的DLL重定向 或 Manifests文件 ,以確保您的應用程序使用正確的DLL。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

(3)確保DLL安全搜索模式被激活。未使用安全搜索設置的話,第二載入項就是當前目錄。
HKLM\System\CurrentControlSet\Control\Session Manager \ SafeDllSearchMode

 (4)從搜索列表中取消當前目錄,可以通過調用SetDllDirectory 參數設置為一個空字元串

轉載請註明: 轉載自金山毒霸官方博客|Kingsoft Security Blog
本文連結地址: 談新DLL挾持攻防故事,話新老DLL挾持之不同

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2025 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。