|
DLL劫持利用系統(tǒng)未知DLL的搜索路徑方式,使得程序加載當(dāng)前目錄下的系統(tǒng)同名DLL。所以可以告訴系統(tǒng)DLL的位置,改變加載系統(tǒng)DLL的順序不是當(dāng)前目錄,而是直接到系統(tǒng)目錄下查找。
這個(gè)想法可以通過修改注冊(cè)表實(shí)現(xiàn)。 在注冊(cè)表鍵值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 是調(diào)用系統(tǒng)DLL的首要查找目錄。例如里面有RE_SZ類型的"ntdll"="ntdll.dll"項(xiàng),則系統(tǒng)載入"ntdll"時(shí)會(huì)直接從系統(tǒng)目錄加載。 由此,添加"LPK"="LPK.DLL"即可防止LPK被劫持,同理可以阻止一些其他DLL被劫持,例如"USP10"。 在Windows NT系統(tǒng),XP默認(rèn)只有少數(shù)關(guān)鍵DLL在此鍵值下,Win7下面此鍵值已經(jīng)相當(dāng)齊全,在Win7系統(tǒng)下發(fā)生DLL劫持的概率要比XP小很多。 一 回顧DLL挾持的發(fā)展 2010年08月24日微軟發(fā)布安全公告2269637,提到三方軟件編程不安全存在一個(gè)DLL挾持的缺陷可以導(dǎo)致遠(yuǎn)程攻擊 2010年08月24日流行的漏洞信息共享網(wǎng)站exploit-db馬上就爆出多個(gè)DLL挾持漏洞涉及的軟件有:Wireshark(免費(fèi)嗅探器),Windows Live email(郵箱客戶端), Microsoft MovieMaker(視頻編輯處理),Firefox(網(wǎng)頁瀏覽器), uTorrent (BT下載工具),PowerPoint 2010(辦公軟件)等 2010年08月25日-26日漏洞信息共享網(wǎng)站exploit-db繼續(xù)爆出Winamp,Google Earth,Photoshop等軟件存在DLL挾持漏洞,同時(shí)發(fā)布這個(gè)blog之前筆者的電腦中已經(jīng)發(fā)掘存在的流行軟件有,QQ影音,QQ音樂,美圖秀秀,ppstream等 二新老DLL挾持的攻擊原理分析和防御 1 動(dòng)態(tài)鏈接庫文件通常加載順序如下 windows xp sp2系統(tǒng)以上會(huì)默認(rèn)開啟SafeDllSearchMode,安全dll搜索模式下DLL文件的搜索順序如下所示 (1)可執(zhí)行程序加載的目錄(可理解為程序安裝目錄比如 C:\Program Files\uTorrent)(2)系統(tǒng)目錄(即 %windir%\system32)(3)16位系統(tǒng)目錄(即 %windir%\system)(4)Windows目錄(即 %windir%)(5)運(yùn)行某文件的所在目錄,比如C:\Documents and Settings\Administrator\Desktop\test)(6)PATH環(huán)境變量中列出的目錄 2 老DLL挾持觸發(fā)的原理解析和防御(漏洞觸發(fā)在DLL搜索流程的第一層,運(yùn)行程序即加載病毒) ?。?/span>1)老DLL挾持的特點(diǎn): 為了增加觸發(fā)的概率,通常會(huì)使用usp1.dll,ws2_32.dll,lpk.dll等應(yīng)用程序所必須的系統(tǒng)dll文件,然后利用DLL搜索第一順位是程序安裝目錄,在程序安裝目錄釋放一個(gè)同名DLL文件,搶先加載惡意病毒DLL文件,從而達(dá)到破壞的作用。這里可執(zhí)行程序相當(dāng)于惡意dll的加載器 ?。?/span>2)老DLL挾持病毒利用回顧重現(xiàn) 2007年羅姆病毒(ws2_32.dll導(dǎo)致很多殺毒軟件無法打開),2009年春節(jié)貓癬病毒(usp10.dll導(dǎo)致很多用戶重裝系統(tǒng)都無法解決病毒問題) 通常使用老DLL挾持的病毒木馬會(huì)枚舉電腦里面的所有exe目錄,然后將惡意的usp10.dll釋放到每個(gè)exe所在的目錄。當(dāng)用戶執(zhí)行一個(gè)應(yīng)用程序的時(shí)候,將會(huì)把惡意的usp10.dll文件優(yōu)先加載從而感染系統(tǒng) 根據(jù)前面介紹的DLL加載順序,運(yùn)行程序的時(shí)候會(huì)優(yōu)先到程序執(zhí)行的目錄下加載必須文件,下圖顯示了utorrent.exe在安裝目錄下的找到了usp10.dll文件并把它加載到內(nèi)存中。 (3)老DLL挾持的通用免疫方案 可以通過編輯HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs來添加需要面議的DLL文件,比如:新建一個(gè)ws2_32 指向ws2_32.dll 3 新DLL挾持觸發(fā)的原理解析和防御(漏洞觸發(fā)在DLL搜索流程的第五層,運(yùn)行圖片即加載病毒) ?。?/span>1)新DLL挾持的特點(diǎn): 應(yīng)用程序?yàn)榱藬U(kuò)展或者兼容等目的需要加載相應(yīng)的DLL文件,但是因?yàn)槟承┰驅(qū)е逻@個(gè)DLL文件默認(rèn)不存在于當(dāng)前系統(tǒng),比如plugin_dll.dll文件默認(rèn)情況下不存在utorrent的安裝目錄,dwmapi.dllxp環(huán)境下不存在(Vista以上系統(tǒng)存在),ie6環(huán)境下沒有ieframe.dll(ie7以上版本存在)。正是因?yàn)槌绦蛐枰?/span>DLL文件在DLL搜索順序的(1)-(4)中都不可能存在,此時(shí)就會(huì)嘗試加載文件所在目錄下的惡意dll文件,從而達(dá)到破壞的作用。這里運(yùn)行的文件(比如mp3)相當(dāng)于觸發(fā)者,根據(jù)文件關(guān)聯(lián)它會(huì)啟動(dòng)一個(gè)應(yīng)用程序去播放mp3文件。而因?yàn)閼?yīng)用程序存在DLL挾持漏洞(比如QQ影音),此時(shí)QQ影音就會(huì)因?yàn)樵O(shè)計(jì)上的不足導(dǎo)致成為惡意DLL的加載器。相當(dāng)于老DLL挾持,簡(jiǎn)直達(dá)到了運(yùn)行圖片/視頻文件就會(huì)執(zhí)行惡意文件的目的,當(dāng)然前提是大灰客們能猜中你電腦里面的默認(rèn)查看的軟件是否存在DLL挾持漏洞了,目前已經(jīng)發(fā)現(xiàn)的存在DLL挾持缺陷的主要有以下幾類 ① 特定系統(tǒng)環(huán)境下的文件 典型的有dwmapi.dll文件,xp環(huán)境下不存在,vista以上版本存在,也就是說需要觸發(fā)這個(gè)漏洞的系統(tǒng)環(huán)境只能是XP系統(tǒng) ② 特定軟件版本下的文件 典型的有:ieframe.dll,IE6下不 存在,ie7以上版本有,也就是說觸發(fā)漏洞的電腦IE必須是IE6版本 ③ 特定的庫文件 典型的有:mfc80chs.dll ④ 程序自己需要的dll文件,可能是為了功能擴(kuò)展或者兼容 典型的有:plugin_dll.dll ⑤ 其它未知 ?。?/span>2)新DLL挾持利用重現(xiàn) 通常灰客們會(huì)先通過DLL挾持挖掘工具尋找存在DLL挾持漏洞的流行應(yīng)用程序,然后構(gòu)造相應(yīng)的文件上傳到網(wǎng)絡(luò)上供用戶下載(具體的傳播方式請(qǐng)看下一章),如果用戶的電腦存在漏洞那么運(yùn)行相應(yīng)文件的時(shí)候就會(huì)執(zhí)行存在漏洞的程序,從而使得惡意dll被不知不覺加載 根據(jù)前面介紹的DLL加載順序和新DLL挾持的特點(diǎn),程序在前四個(gè)流程都沒有找到需要的文件,只能勉為其難的在第五流程-當(dāng)前文件目錄下加載惡意dll文件,下圖就顯示了uTorrent加載plugin_dll.dll順序(前四個(gè)流程都是 name not found)并且加載當(dāng)前目錄下惡意plugin_dll.dll文件(第五流程顯示的是s?ss )的過程 ?。?/span>3)新DLL挾持的免疫 目前微軟沒有提供有效的免疫方案可以使用,建議升級(jí)你常用軟件到最新版本. 三 新DLL挾持可能存在的攻擊方式 exploit-db公布了存在DLL Hijacking的大量常用軟件,這些軟件里面有視頻音頻播放器,圖像設(shè)計(jì)瀏覽軟件,IM聊天工具,文字處理軟件,網(wǎng)頁瀏覽器,下載軟件,殺毒軟件。根據(jù)在下的一點(diǎn)拙見如果病毒作者想要利用這個(gè)漏洞來實(shí)現(xiàn)廣泛傳播的話主要有幾種方式。 1 BT下載大片傳播 挖掘出支持BT下載的流行軟件(比如uTorrent )的DLL Hijacking漏洞,然后構(gòu)造一個(gè)惡意dll文件(估計(jì)會(huì)設(shè)置隱藏屬性,這樣你解壓以后將不會(huì)看到這個(gè)文件)和BT種子文件打包成壓縮包上傳到網(wǎng)上供用戶下載,用戶一旦下載了這個(gè)壓縮包雙擊BT種子文件的時(shí)候會(huì)調(diào)用uTorrent 打開,uTorrent 運(yùn)行的時(shí)候由于設(shè)計(jì)上的不河蟹根據(jù)dll加載的順序最后會(huì)將種子所在目錄的惡意dll加載 2 美女圖片分享傳播 挖掘出流行圖片瀏覽工具(比如美圖秀秀)的DLL Hijacking漏洞,然后構(gòu)造一個(gè)惡意dll文件(估計(jì)會(huì)設(shè)置隱藏屬性,這樣你解壓以后將不會(huì)看到這個(gè)文件)和圖片文件打包成壓縮包上傳到網(wǎng)上供用戶下載,用戶一旦下載了這個(gè)壓縮包,解壓瀏覽美女靚照的時(shí)候可能會(huì)調(diào)用圖片瀏覽工具打開從而觸發(fā)漏洞加載惡意dll文件 3 軟件下載包含的網(wǎng)頁文件傳播 挖掘出流行網(wǎng)頁瀏覽工具(比如firefox)的DLL Hijacking漏洞,然后構(gòu)造一個(gè)惡意dll文件(估計(jì)會(huì)設(shè)置隱藏屬性,這樣你解壓以后將不會(huì)看到這個(gè)文件),應(yīng)用程序和htm等網(wǎng)頁文件打包成軟件壓縮包并上傳到網(wǎng)上供用戶下載。用戶一旦下載了這個(gè)軟件壓縮包,解壓以后運(yùn)行安裝必看.htm之類的網(wǎng)頁文件會(huì)調(diào)用網(wǎng)頁瀏覽工具打開從而觸發(fā)漏洞加載惡意dll文件 4 熱門視頻音頻文件傳播 挖掘出流行視頻音頻播放工具(比如QQ影音)的DLL Hijacking漏洞,然后構(gòu)造一個(gè)惡意dll文件(估計(jì)會(huì)設(shè)置隱藏屬性,這樣你解壓以后將不會(huì)看到這個(gè)文件)和rmvb等視音頻文件打包壓縮包并上傳到網(wǎng)上供用戶下載。用戶一旦下載了這個(gè)壓縮包,解壓播放相應(yīng)視頻的時(shí)候從而觸發(fā)漏洞加載惡意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安全編程,避免產(chǎn)生DLL挾持問題 (1) 調(diào)用LoadLibrary, LoadLibraryEx, CreateProcess的,或者 的ShellExecute 等涉及到模塊加載的函數(shù)的時(shí)候,指定DLL加載的完整路徑,貌似應(yīng)該有API可以獲取當(dāng)前程序運(yùn)行的目錄的 ?。?/span>2)考慮使用 的DLL重定向 或 Manifests文件 ,以確保您的應(yīng)用程序使用正確的DLL。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs (3)確保DLL安全搜索模式被激活。未使用安全搜索設(shè)置的話,第二加載項(xiàng)就是當(dāng)前目錄。 HKLM\System\CurrentControlSet\Control\Session Manager \ SafeDllSearchMode (4)從搜索列表中取消當(dāng)前目錄,可以通過調(diào)用SetDllDirectory 參數(shù)設(shè)置為一個(gè)空字符串 |
|
|