天天看點

DLL劫持原理&防禦方法

1.原理介紹

DLL劫持指的是,病毒通過一些手段來劫持或者替換正常的DLL,欺騙正常程式加載預先準備好的惡意DLL。

如下圖,LPK.dll是應用程式運作所需加載的DLL,該系統檔案預設在C:\Windows\system32路徑下,但由于windows優先搜尋目前路徑,是以當我們把惡意LPK.dll放在應用程式同一路徑下,便會被程式成功加載,進而執行惡意操作。

DLL劫持原理&防禦方法

2.執行個體分析

下面以APT32攻擊樣本為例作講解。APT32的釣魚檔案為一個名為《2019年第一季度工作方向附表》的壓縮包,解壓縮後的檔案如下。其中包含一個僞裝的exe(word文檔圖示)和一個dll檔案。

DLL劫持原理&防禦方法

檢視exe檔案的屬性,發現它是一個具有windows數字簽名的合法檔案,那麼問題就應該出現在那個dll中。

DLL劫持原理&防禦方法

wwlib.dll是OFFICE WORD運作必備的dll,正常情況在C:\Program Files (x86)\Microsoft Office\Office16路徑下。

DLL劫持原理&防禦方法

如上所述,由于在程式同一路徑下具有同名的“wwlib.dll”,是以應用程式優先加載該DLL。

DLL劫持原理&防禦方法

使用IDA檢視該DLL,分析發現該DLL的主要功能為釋放運作360se.exe和chrome_elf.dll,然後打開一個預先準備好的文檔,用于欺騙使用者打開的确實是一個doc文檔。

DLL劫持原理&防禦方法

該文檔是損壞的,沒有顯示内容,至此,wwlib.dll運作結束,作用為釋放360se、chrome_elf.dll以及打開一個doc文檔用于欺騙使用者。

DLL劫持原理&防禦方法

釋放的360se.exe和chrome_elf.dll在C:\ProgramData\360seMaintenance路徑下。可以猜測到,這兩個檔案用了相同的手法,360se.exe是合法的360浏覽器程式,通過加載chrome_elf.dll執行惡意操作。

DLL劫持原理&防禦方法

360se.exe會加載調用chrome_elf.dll的SignalInitializeCrashReporting函數,從名字可以猜測,該函數原本應該是用來作崩潰處理的。

DLL劫持原理&防禦方法

由于僞裝的chrome_elf.dll在程式的同一路徑,是以優先被加載。我們發現該dll剛好又一個SignalInitializeCrashReporting導出函數用來劫持360se.exe。

DLL劫持原理&防禦方法

該函數的功能為從https://officewps.net/ultra.jps下載下傳後門payload并執行,至此,病毒的核心攻擊手法已經顯現出來了,通過dll劫持使兩個合法程式做了惡意操作是,達到下載下傳執行後門的目的,看來DLL劫持也是一個繞過殺軟的好方法。

DLL劫持原理&防禦方法

3.防禦方法

防禦DLL劫持的方法最好還是程式自己本身的加強,比如,在程式運作後,周遊目前路徑下的dll,确認MD5和數字簽名安全後,再進行後續的加載。