當前位置:編程學習大全網 - 源碼下載 - 如何防止dll劫持

如何防止dll劫持

DLL劫持利用系統未知DLL的搜索路徑,使程序在當前目錄中加載同名的系統DLL。所以妳可以說出系統DLL的位置,改變加載系統DLL的順序不是在當前目錄,而是直接到系統目錄。

這個想法可以通過修改註冊表來實現。

在註冊表項值:HKEY _本地_機器\系統\當前控制集\控制\會話管理器\ knowndells。

是調用系統DLL的主目錄。例如,如果有壹個RE_SZ類型的ntdll=ntdll.dll項,系統將直接從系統目錄加載ntdll。

因此,加上LPK=LPK。DLL可以防止LPK被劫持,同樣,它也可以防止其他壹些DLL被劫持,比如USP10。

在Windows NT系統中,XP默認只有這個鍵值下的幾個關鍵DLL,而Win7下的鍵值相當完整,所以Win7系統下DLL劫持的概率比XP小很多。

動態鏈接庫劫持的發展綜述

2010年8月24日,微軟發布安全公告2269637,其中提到三方軟件編程不安全,存在DLL劫持缺陷,可能導致遠程攻擊。

2010年8月24日,熱門漏洞信息* * * exploit-db隨即爆出多個DLL劫持漏洞,涉及Wireshark(免費嗅探器)、Windows Live email(郵件客戶端)、Microsoft MovieMaker(視頻編輯處理)、Firefox(網頁瀏覽器)、uTorrent (BT下載工具)、PowerPoint 2000等軟件。

2065438+2000年8月25日-26日漏洞信息* * * exploit-db持續揭露Winamp、Google Earth、Photoshop等軟件存在DLL劫持漏洞。同時,在發表這篇博客之前已經在作者電腦中發現的熱門軟件有QQ影音、QQ音樂、美圖秀秀、ppstream等。

兩種新舊DLL劫持攻擊原理的分析與防禦

1 DLL文件通常按以下順序加載。

windows xp sp2系統以上會默認開啟SafeDllSearchMode,安全dll搜索模式下DLL文件的搜索順序如下。

(1)加載可執行程序的目錄(可以理解為程序安裝目錄如C: \ program files \ utorent) (2)系統目錄(即%windir%\system32 )(3)16位系統目錄(即%windir%\ System)(4)Windows目錄(即%windir%)(5)文件運行的目錄,如C:\ documents and settings \ administrator \ desktop \ test中列出的目錄(path環境變量。

2舊DLL劫持觸發器原理分析與防禦(漏洞觸發器在DLL搜索過程的第壹層,運行程序時加載病毒)

(1)舊DLL劫持的特征:

為了增加觸發的概率,系統應用程序必需的dll文件如usp1.dll、ws2_32.dll、lpk.dll等。通常都會用到,然後利用DLL第壹個順序就是程序安裝目錄,在程序安裝目錄中釋放壹個同名的DLL文件,讓惡意病毒DLL文件先加載,從而達到破壞的效果。這裏的可執行程序相當於惡意dll的加載器。

(2)回溯再現舊的DLL病毒。

2007年Roma病毒(ws2_32.dll導致很多殺毒軟件打不開),2009年春節貓癬病毒(usp10.dll導致很多用戶重裝系統未能解決病毒問題)。

通常舊DLL劫持的病毒特洛伊會枚舉電腦中所有的exe目錄,然後將惡意的usp10.dll釋放到每個exe所在的目錄中。當用戶執行某個應用程序時,會先加載惡意的usp10.dll文件,從而感染系統。

按照前面介紹的DLL的加載順序,在運行程序時,需要的文件會先加載到程序執行的目錄下。下圖顯示,utorrent.exe在安裝目錄中找到了usp10.dll文件,並將其加載到內存中。

(3)舊DLL的壹般免疫方案。

可以編輯hklm \ system \ current control set \ control \ session manager \ known dells來添加壹個需要協商的DLL文件,比如新建壹個ws2_32指向ws2_32.dll的文件

3新型DLL劫持觸發器的原理分析與防禦(漏洞觸發器在DLL搜索過程的第五層,圖片運行時加載病毒)

(1)新DLL劫持的特征:

應用為了擴展或者兼容需要加載相應的DLL文件,但是由於某些原因,這個DLL文件默認不存在於當前系統中。比如plugin_dll.dll文件默認不存在於utorrent的安裝目錄中,不存在於dwmapi.dllxp環境中(Vista以上系統存在),不存在於ie6環境中(以上版本(ie7存在)。正是因為程序所需要的dll文件不能存在於DLL搜索順序的(1)-(4)中,這時,它就會試圖將惡意的DLL文件加載到文件所在的目錄中,從而達到破壞的效果。這裏運行的文件(比如mp3)相當於壹個觸發器,它會根據文件關聯啟動壹個應用來播放mp3文件。但由於應用程序(如QQ影音)存在DLL劫持漏洞,QQ影音由於設計的缺失,會成為惡意DLL的加載器。相當於老的DLL劫持,基本達到了運行圖片/視頻文件時執行惡意文件的目的。當然前提是大灰客能猜到妳電腦裏的默認查看軟件是否存在DLL劫持漏洞。目前,已發現的DLL劫持缺陷主要有以下幾類。

(1)特定系統環境中的文件

典型的有dwmapi.dll文件,xp環境不存在,vista以上版本存在,也就是說需要觸發該漏洞的系統環境只能是XP系統。

(2)特定軟件版本下的文件

典型的有:ieframe.dll,IE6下不存在,ie7以上存在,也就是說觸發漏洞的電腦IE必須是IE6版本。

③特定的庫文件

典型:mfc80chs.dll。

(4)程序本身需要的dll文件可能是為了功能擴展或者兼容性。

典型的有:plugin_dll.dll

⑤其他未知

(2)新的DLL被保存並再次使用

通常灰色客戶會先通過dll劫持挖掘工具尋找存在DLL劫持漏洞的熱門應用,然後構造相應的文件上傳到網絡供用戶下載(具體傳播方式見下壹章)。如果用戶的電腦存在漏洞,那麽在運行相應文件時就會執行存在漏洞的程序,這樣就會不知不覺地加載惡意DLL。

根據DLL的加載順序和新DLL的特點,程序在前四個進程中沒有找到需要的文件,只好在第五個進程——當前文件目錄中勉強加載惡意DLL文件。下圖是uTorrent加載plugin_dll.dll序列(前四個進程是name not found)和加載當前目錄下惡意plugin_dll.dll文件的過程(第五個進程顯示成功)。

(3)新DLL擁有的豁免權

目前,微軟沒有提供有效的免疫程序來使用。建議將您常用的軟件升級到最新版本。

三種新的DLL劫持可能的攻擊模式

Exploit-db發布了大量帶有DLL劫持的常用軟件,包括視音頻播放器、形象設計瀏覽軟件、IM聊天工具、文字處理軟件、網頁瀏覽器、下載軟件、殺毒軟件等。依我拙見,如果病毒作者想利用這個漏洞實現廣泛傳播,主要有幾種途徑。

1 BT下載大片傳播

挖掘支持BT下載的流行軟件(如Utorent)的dll劫持漏洞,然後構造壹個惡意dll文件(估計設置了隱藏屬性,解壓後就看不到這個文件了)和BT種子文件成壓縮包上傳到網上供用戶下載。壹旦用戶下載了這個壓縮包,雙擊BT種子文件時就會調用Utorent打開它。當Utorent運行時,種子將按照dll加載的順序位於目錄中。

2美圖分享與交流

挖掘流行的圖片瀏覽工具(如美圖秀秀)中dll劫持的漏洞,然後構造壹個惡意的dll文件(估計會設置隱藏屬性,這樣解壓後就看不到這個文件了)和壹個圖片文件打包成壓縮包上傳到網上供用戶下載。用戶壹旦下載了這個壓縮包,在解壓和瀏覽精美照片時,可能會調用照片瀏覽工具打開,從而觸發漏洞加載惡意DLL文件。

3.軟件下載中包含的網絡文件的傳播

挖掘流行的網頁瀏覽工具(如firefox)中dll劫持的漏洞,然後構造壹個惡意的DLL文件(估計會設置隱藏屬性,這樣解壓後就看不到這個文件了)。將應用、htm等Web文件打包成軟件壓縮包,上傳到互聯網供用戶下載。壹旦用戶下載了這個軟件壓縮包,解壓縮後,運行壹個網頁文件如。htm會調用網頁瀏覽工具打開,從而觸發漏洞加載惡意dll文件。

4流行的視頻和音頻文件傳播

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

5目前已發布的部分軟件列表

谷歌地球

Nullsoft Winamp 5.581

媒體播放器經典版6.4.9.1

Mozilla雷鳥

Microsoft Office PowerPoint 2007

Adobe InDesign CS4

Nvidia驅動程序

Adobe Illustrator CS4

Adobe Premier Pro CS4

Skype & lt= 4.2.0.169

TechSmith Snagit 10

Safari v5.0.1

尤特朗特

Microsoft Visio 2003

Adobe Photoshop CS2

avast!& lt= 5.0.594

Adobe Dreamweaver CS5

Opera v10.61

火狐& lt= 3.6.8

四個DLL被安全地編程以避免DLL卡住的問題。

(1)調用與模塊加載相關的函數時,如LoadLibrary、LoadLibraryEx、CreateProcess或ShellExecute,請指定DLL加載的完整路徑。好像應該有API獲取當前程序運行的目錄。

(2)考慮使用DLL重定向或清單文件來確保您的應用程序使用正確的DLL。

HKEY _ LOCAL _ MACHINE \ SYSTEM \ current Control set \ Control \ Session Manager \ known dlls

(3)確保DLL安全搜索模式已激活。如果不使用安全搜索設置,則第二個加載項是當前目錄。

HKLM \系統\當前控制集\控制\會話管理器\安全搜索模式

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

  • 上一篇:餐飲管理系統的系統選擇
  • 下一篇:什麽郵件app最好用?
  • copyright 2024編程學習大全網