本文是对以下文章的学习、记录
- https://book.hacktricks.xyz/windows/active-directory-methodology/custom-ssp
- https://wooyun.js.org/drops/域渗透——Security Support Provider.html
- https://xz.aliyun.com/t/10167
0x01 介绍
SSP 可以简单理解为 DLL,我们可以自己写一个SSP来实现操作系统的更多身份验证,也能实现我们的后门。
LSA 全称Local Security Authority
,Windows里面用于身份认证,常见进程为lsass.exe,LSA的特别之处在于LSA是可扩展的,在系统启动的时候SSP会被加载到进程lsass.exe中。前面说了,我们SSP相当于系统的DLL文件,我们能够自己去写一个SSP,实现更多身份验证,那么相当于我们写的SSP在系统开启的时候会被加载到lsass.exe里面。
0x02 Mimikatz SSP 利用
mimikatz
早以支持这个功能,该文件为为mimilib.dll
。mimikatz的poc为:
1 |
|
将mimilib.dll复制到%windir%\System32
目录下,注意系统位数,Mimikata提供了32位和64位版本的。
打开注册表,修改HKLM:\System\CurrentControlSet\Control\Lsa\SecurityPackages
,添加mimilib.dll。
命令行快速添加:
1 | reg add hklm\system\currentcontrolset\control\lsa\ /v "Security Packages" /t REG_MULTI_SZ /d kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimillb.dll |
添加好,重启系统后,可在%windir%\System32
目录下面找到和POC代码中记录的kiwissp.log
文件。
Mimikatz提供了一个内存更新的方法(注:重启后失效)
1 | mimikatz.exe "privilege::debug" "misc::memssp" |
0x03 防御和检测
Regedit
检查HKLM:\System\CurrentControlSet\Control\Lsa\SecurityPackages
项有无异常
查询注册表命令:
1 | reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages" |
默认值为:
1 | kerberos |
DLL
检测%windir%\System32
是否有可疑dll文件
Event
日志中会出现ID:4657对注册表HKLM:\System\CurrentControlSet\Control\Lsa\SecurityPackages
的修改记录。
0x04 总结
本文简单介绍了Mimikatz利用SSP方法和其检查思路。那么我们有没有办法能够不重启、又可以不修改注册表,不放恶意dll在system32目录下的方法呢。除了这个,我们能不能在lsa.exe加载ssp直接连接我们的后门呢?