在启动时将 DLL 加载到 LSASS 中,提供持久性。
如何?
我们发现 Lsass.exe 在启动时会读取两个注册表项,以便从System32目录中加载 DLL。这两个注册表项分别是:
延伸HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaExtensionConfigInterfaces1001 阅读 lsasrv.dll
延伸HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaExtensionConfigInterfaces1002阅读dpapisrv.dll
我们构建了一个提升到 TrustedInstaller 的程序来编辑其中一个注册表项,并用我们的名称替换原始的 DLL 名称。
笔记
同一个程序会禁止 PPL 将未签名的 DLL 加载到 LSASS 中。否则,我们将陷入启动循环,因为 LSASS 会在启动前崩溃(因为加载了未签名的 DLL)。可以通过加载已签名但存在漏洞的 DLL 并稍后利用它(BYOVDLL - 自带漏洞 DLL)来解决这个问题。
我们正在替换dpapisrv.dllDLL 而不是lsasrv.dllDLL,因为后者 DLL 具有更多的导出变量/函数,这使得代理此类 DLL 不太稳定(相比之下,dpapisrv.dll仅包含 2 个导出函数)。
下次系统启动后,我们的 DLL(Dummy.dll)将被加载到 Lsass.exe 中。
https://github.com/Maldev-Academy/LsassHijackingViaReg
原文始发于微信公众号(Ots安全):通过编辑注册表项值将 DLL 加载到 lsass.exe 中
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论