DLL劫持原理&防禦方法

1.原理介紹

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

如下圖,LPK.dll是應用程序運行所需加載的DLL,該系統文件默認在C:\Windows\system32路徑下,但由於windows優先搜索當前路徑,所以當我們把惡意LPK.dll放在應用程序同一路徑下,便會被程序成功加載,從而執行惡意操作。
1

2.實例分析

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

查看exe文件的屬性,發現它是一個具有windows數字簽名的合法文件,那麼問題就應該出現在那個dll中。
3

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

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

使用IDA查看該DLL,分析發現該DLL的主要功能爲釋放運行360se.exe和chrome_elf.dll,然後打開一個預先準備好的文檔,用於欺騙用戶打開的確實是一個doc文檔。
6

該文檔是損壞的,沒有顯示內容,至此,wwlib.dll運行結束,作用爲釋放360se、chrome_elf.dll以及打開一個doc文檔用於欺騙用戶。
7

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

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

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

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

3.防禦方法

防禦DLL劫持的方法最好還是程序自己本身的加固,比如,在程序運行後,遍歷當前路徑下的dll,確認MD5和數字簽名安全後,再進行後續的加載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章