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文件並把它加載到內存中。