0%

域渗透维权之SSP

0x00前言

咱今儿来看看单纯的维权,如果拿到了目标机器的system权限,可以利用SSP进行维权。其基础环境如下:

IP 描述 系统
192.168.221.139 DC windows server 2019(x64)
192.168.221.140 域管/域成员 windows 10(x64)

0x01 简介

概念:

SSP:Security Support Provider,直译为安全支持提供者,注册表中为Security Package.SSP就是一个用来实现身份认证的DLL

SSPI:Security Support Provider Interface,直译为安全支持提供程序接口,是Windows系统在执行认证操作所使用的API。SSPI是SSP的API接口

lsass.exe :作为Windows的系统进程,用于本地安全和登录策略;系统启动时,SSP 将被加载到lsass.exe进程中

LSA :Local Security Authority,用于身份验证; 且可进行扩展。

原理:

因为LSA是可扩展的,所以可以自定义恶意dll,在系统启动时加载到lsass.exe进程中,就可获取lsass.exe中的明文密码。即使用户更改密码并重新登录,攻击者依然可以获取其新密码。

主要有两种攻击方式,体现于0x02和0x03

0x02 memssp加载到内存:

原理:主要通过往lsass进程注入代码来patch其加载的msv1_0.dll中的SpAcceptCredentials函数来恢复凭据信息。

功能:在登录的过程中获取用户的明文密码并存储在system32的mimilsa.log中。此攻击不会在二进制系统中留下二进制文件,一旦域控重启,注入代码就会失效。

1
2
privilege::debug
misc::memssp

系统重启再次进行身份验证的时候,会在System32目录下创建mimilsa.log

0x03 SSP中加载mimilib.dll

原理:mimikatz自带mimilib.dll也实现了SSP功能,mimikatz利用AddSecurityPackage此API来加载SSP,可在不重启的情况下添加mimilib.dll。

该dll包含SpLsaModelntialize导出函数,lsass.exe会使用该函数来初始化包含多个回调函数的一个结构体,其中回调函数SpAcceptCredentials用来接收LSA传递的明文凭据

操作:

添加SSP

将mimikatz提供的mimilib.dll复制到c:\windows\system32,与lsass进程位置相同,以便获取访问受感染主机的任何用户的登陆凭证

设置SSP

修改DC注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages\

1
2
3
4
#修改注册表项
reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
#查看注册表项是否注入恶意dll
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages

重启系统,当域用户再次进行身份验证时-锁屏并打开,将System32目录下创建kiwissp文件,记录用户账户及明文密码

0x04 总结

  • 加载到内存:必须重新登录,重新启动后不会存在
  • ssp中加载dll:必须重启,永久有效

0x05 检测及清理

1.检测

memssp:

  • 只能通过sysmon监控到mimilsa.log创建的日志

    sysmon检测创建文件事件-事件11

SSP中加载mimilib.dll:

  • sysmon4622事件:记录了lsass进程加载mimilib的过程

  • sysmon11事件:mimilib落盘

  • sysmon13事件:注册表修改

  • sysmon7事件:dll加载

2.防御清除:

memssp:

  • 查看Windows\System32下是否有mimilsa.log文件
  • 使用ARK工具查看msv1_0.dll是否已经被inlinehook(修改函数体实现)

mimilib.dll加载:

  • 检测此位置是否加载恶意dll
1
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages\ 
  • 检测Windows\System32是否有kiwissp.log

Autoruns可用来检测LSA,报告出dll的位置

参考:

  1. 创建的域用户本身拥有登录权限。登录用户名记得是域名\创建用户名

  2. winver查看系统版本

  3. ARK:https://openark.blackint3.com/

  4. 主要参考:https://wooyun.js.org/drops/%E5%9F%9F%E6%B8%97%E9%80%8F%E2%80%94%E2%80%94Security%20Support%20Provider.html

  5. https://yanmie-art.github.io/2021/03/01/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F%E4%B9%8B%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81/

  6. https://www.cnblogs.com/xiaozi/p/11834327.html

  7. sysmon:https://www.sysgeek.cn/sysmon/

你想在文章末尾对读者说的话