DLL劫持原理&防御方法

1.原理介绍

DLL劫持指的是,病毒通过一些手段来劫持或者替换正常的DLL,欺骗正常程序加载预先准备好的恶意DLL。

如下图,LPK.dll是应用程序运行所需加载的DLL,该系统文件默认在C:\Windows\system32路径下,但由于windows优先搜索当前路径,所以当我们把恶意LPK.dll放在应用程序同一路径下,便会被程序成功加载,从而执行恶意操作。
DLL劫持原理&防御方法_第1张图片

2.实例分析

下面以APT32攻击样本为例作讲解。APT32的钓鱼文件为一个名为《2019年第一季度工作方向附表》的压缩包,解压缩后的文件如下。其中包含一个伪装的exe(word文档图标)和一个dll文件。
DLL劫持原理&防御方法_第2张图片

查看exe文件的属性,发现它是一个具有windows数字签名的合法文件,那么问题就应该出现在那个dll中。
DLL劫持原理&防御方法_第3张图片

wwlib.dll是OFFICE WORD运行必备的dll,正常情况在C:\Program Files (x86)\Microsoft Office\Office16路径下。
DLL劫持原理&防御方法_第4张图片

如上所述,由于在程序同一路径下具有同名的“wwlib.dll”,所以应用程序优先加载该DLL。
DLL劫持原理&防御方法_第5张图片

使用IDA查看该DLL,分析发现该DLL的主要功能为释放运行360se.exe和chrome_elf.dll,然后打开一个预先准备好的文档,用于欺骗用户打开的确实是一个doc文档。
DLL劫持原理&防御方法_第6张图片

该文档是损坏的,没有显示内容,至此,wwlib.dll运行结束,作用为释放360se、chrome_elf.dll以及打开一个doc文档用于欺骗用户。
DLL劫持原理&防御方法_第7张图片

释放的360se.exe和chrome_elf.dll在C:\ProgramData\360seMaintenance路径下。可以猜测到,这两个文件用了相同的手法,360se.exe是合法的360浏览器程序,通过加载chrome_elf.dll执行恶意操作。
DLL劫持原理&防御方法_第8张图片

360se.exe会加载调用chrome_elf.dll的SignalInitializeCrashReporting函数,从名字可以猜测,该函数原本应该是用来作崩溃处理的。
DLL劫持原理&防御方法_第9张图片

由于伪装的chrome_elf.dll在程序的同一路径,所以优先被加载。我们发现该dll刚好又一个SignalInitializeCrashReporting导出函数用来劫持360se.exe。
DLL劫持原理&防御方法_第10张图片

该函数的功能为从https://officewps.net/ultra.jps下载后门payload并执行,至此,病毒的核心攻击手法已经显现出来了,通过dll劫持使两个合法程序做了恶意操作是,达到下载执行后门的目的,看来DLL劫持也是一个绕过杀软的好方法。
DLL劫持原理&防御方法_第11张图片

3.防御方法

防御DLL劫持的方法最好还是程序自己本身的加固,比如,在程序运行后,遍历当前路径下的dll,确认MD5和数字签名安全后,再进行后续的加载。

你可能感兴趣的:(恶意软件分析)