DLLHijackingScanner是一款功能强大的DLL劫持漏洞和受信目录利用检测工具,该工具本质上来说是一个PoC概念验证,可以帮助研究人员通过DLL劫持技术绕过UAC,来检测目标设备是否容易受到DLL劫持。除此之外,该工具还支持检测针对“受信任目录”的验证滥用。
该工具基于Python开发,因此我们首先需要在主机环境中安装并配置好Python环境。接下来,使用下列命令将该项目源码克隆至本地:
git clone https://github.com/SecuProject/DLLHijackingScanner.git
项目提供的Python脚本-CsvToHeader.py可以用来生成一个Header文件,该工具默认将使用dll_hijacking_candidates.csv。
脚本将会检测每一个PE的下列状态:
1、PE是否存在于文件系统;
2、在PE的manifest中,requestedExecutionLevel是否被设置为了下列其中一个值:
asInvoker
highestAvailable
requireAdministrator
3、manifest中autoElevate的值是否被设置为了true:
<autoElevate>true</autoElevate>
4、用户是否设置了-c参数,脚本将会检测PE表中导入的DLL是否存在DLL劫持;
> python .\CsvToHeader.py -h
usage: CsvToHeader.py -f [DLL_PATH] -c
CsvToHeader can be used to generate a header file from a CSV.
optional arguments:
-h, --help show this help message and exit
-f [DLL_PATH] Path of the csv to convert (default="dll_hijacking_candidates.csv")
-c Enable import dll in PE (default=False)
-v, --version Show program's version number and exit
我们可以使用下列命令可以生成Header文件:
python CsvToHeader.py > dll_hijacking_candidates.h
这个过程需要使用到的文件为DLLHijacking.exe和test.dll。
DLLHijacking.exe用于生成存在漏洞的PE列表,它将会执行下列操作:
1、在C:\windows \system32目录下创建伪造的目录;
2、向新创建的目录中拷贝文件:
C:\windows\system32\[TARGET.EXE] -> C:\windows \system32\[TARGET.EXE]
[CUSTOM_DLL_PATH] -> C:\windows \system32\[TARGET.DLL]
3、触发器:通过C:\windows \system32\[TARGET.EXE]运行可执行文件;
4、清除伪造的目录:删除第一步创建的目录和第二步创建的文件;
5、检查漏洞利用:检查C:\ProgramData\exploit.txt的文件内容,并查看漏洞利用是否成功。
DLLHijacking.exe将使用下列内容生成exploitable.log日志文件:
1、0或1代表漏洞利用(绕过UAC)是否成功。
2、可执行程序名称。
3、DLL文件名,例如:
1,computerdefaults.exe,PROPSYS.dll
0,computerdefaults.exe,Secur*32.dll
DLLHijacking.exe [DLL_PATH]
如果没有指定参数,脚本将直接使用test.dll。
测试平台为Windows 10专业版(10.0.19043 N/A Build 19043):
test.dll是一个简单的动态库,可以用来判断漏洞利用是否成功。DLL将使用下列内容来创建C:\ProgramData\exploit.txt文件:
1、0或1代表漏洞利用(绕过UAC)是否成功。 2、可执行程序名称。 3、DLL文件名。
这个文件将会在漏洞利用成功后被删除。
https://github.com/SecuProject/DLLHijackingScanner