接着上文的横向移动完结 开始新的利用AD域

Delegation—————-

环境配置不讲了

利用权限委托(Exploiting Permission Delegation)

这个考察的就是委派

Active Directory 可以通过称为权限委派的功能委派权限和特权(不要与下一个任务中将讨论的 Kerberos 委派混淆)。授权是AD在组织中如此强大的原因。想象一下,我们为一个拥有 50000 名员工的组织工作。由于我们关心安全性,因此我们只有三个用户可以访问 DA 凭据。这三个用户不可能处理来自用户的所有请求,例如重置其密码。使用委派,我们可以将强制更改用户密码的权限委派给支持团队,这意味着他们现在具有此特定功能的委派权限。原则上,为了保证授权的安全,应遵循最小特权原则。然而,在大型组织中,这说起来容易做起来难。在此任务中,我们将研究如何利用一些委派错误配置

权限委派攻击通常称为基于 ACL 的攻击。AD 允许管理员配置填充任意访问控制列表 (DACL) 的访问控制项 (ACE),因此称为基于 ACL 的攻击。几乎任何 AD 对象都可以使用 ACE 进行保护,然后 ACE 描述任何其他 AD 对象对目标对象具有的允许和拒绝的权限。

这里使用的话就是在使用Sharphound.ps1脚本获取道整个域的信息后 然后使用BloodhoundGUI软件进行分析 然后找到可以利用的地方

然后找到了一个IT组被委派了一个能强制修改第二组管理员密码的权限 然后我们就可以利用这一点 不小心获取一个凭证后(要有这个能添加域组的权限的用户) 我们就把我们自己加到这个IT组里 然后强制修改管理员的密码 然后进行破坏

这里使用的是这个能强制修改密码的委派 接下来讲一下这个使用AD验证登录协议之一的Kerberos的协议来进行委派

利用 Kerberos 委派

  • 无约束状态

简单来说就是干啥都行

  • 基于资源的约束委派

这个改变了以前的访问规则 就是不在需要使用AD管理用户登录来访问特定资源了 现在就变成了我们现在熟知的委派某个用户有这个权限能访问了

  • 受约束的委派利用

就是目前我们所了解的委派 被AD管理员授予啥权限就能干啥 不授权就干不了 有个坏处就可以伪造TGT票据来给某个生成TGS来登录到该用户

image-20230912115858258

这里能使用该用户来登录这台计算机的原理

image-20230912115938440

Exploiting Automated Relays(自动化中继攻击)

“Exploiting Automated Relays” 可能是指利用自动化中继的漏洞或弱点来进行攻击。自动化中继是指在网络通信中使用的一种机制,用于自动转发或中继数据包。攻击者可能会利用自动化中继的漏洞或配置错误来获取未授权的访问、窃取敏感信息或执行恶意操作。

这里的话thm讲的不够细致

身份验证中继来获取这个管理员权限的方法

想要使用这个方法的话 必须是要满足四个条件

  1. A valid set of AD account credentials.
    一组有效的 AD 帐户凭据。
  2. Network connectivity to the target’s SMB service.
    与目标的 SMB 服务的网络连接。
  3. The target host must be running the Print Spooler service.
    目标主机必须运行后台打印程序服务。
  4. The hosts must not have SMB signing enforced.
    主机不得强制实施 SMB 签名。

这里的话是thm已经写好了

接下来是讲一下在使用过程中使用的SpoolSample这个工具

1
2
3
4
SpoolSample 是一种工具,旨在利用 Windows 操作系统中的身份验证中继漏洞(也称为 NTLM 中继攻击)来实施攻击。这种攻击利用了 Windows 中的 NTLM(NT LAN Manager)身份验证过程中的设计缺陷,从而使攻击者能够获得受害者的凭据并进一步访问系统。
具体来说,SpoolSample 利用了 Windows 中打印机服务(Spooler)的漏洞。攻击者可以通过在网络上放置恶意的打印机服务器,将受害者的网络流量重定向到攻击者控制的服务器上。当受害者尝试连接到网络上的打印机时,其 NTLM 身份验证流量将被中继到攻击者的服务器,攻击者可以通过该流量获取受害者的凭据。
攻击者获取到受害者的凭据后,可以进一步横向移动在网络中,访问其他系统和资源,甚至获取管理员权限。这种攻击技术对于那些未修补或配置不当的系统来说是一种威胁。
因此,使用 SpoolSample 来利用身份验证中继的目的是获取受害者的凭据,以便进一步滥用其权限并访问系统和数据。这凸显了修补系统漏洞、正确配置身份验证过程以及网络安全的重要性。

这样的话我们就可以强行对管理员账户进行身份验证 这样的话我们就可以获取到管理员的NTLM—hash值

image-20230912171139557

这个设置的话是搭建一个恶意的SMB服务器

image-20230912171415684

这个的话是强制使其THMSERVER2开启打印后台处理程序服务 然后向我们构造的这个恶意SMB服务器进行身份验证

image-20230912171511946

然后恶意服务器这边就会收到THMSERVER2的hash值及其他信息

这个获取到账号的hash值后 可以使用evil-winrm来远程登录该用户 不需要进行用户hash密码的破解

winrm这个工具的作用

1
2
3
4
5
WinRM(Windows Remote Management)是一种用于在 Windows 操作系统上进行远程管理和操作的协议和服务。它允许管理员通过网络远程管理和控制 Windows 主机,而无需直接物理访问或登陆到每台主机上。
WinRM 提供了一种安全的远程通信机制,基于标准的 Web Services 协议(SOAP)和 HTTP/HTTPS。它允许管理员使用命令行工具、脚本或管理工具通过网络远程执行命令、配置设置、获取系统信息、安装更新、监视事件日志等操作。WinRM 还支持通过 PowerShell 进行远程管理,使管理员能够使用 PowerShell 脚本来批量管理远程主机。
WinRM 是在 Windows Server 2003 和 Windows Vista 之后的操作系统中默认安装的,并且可以通过配置和启用相应的服务来支持远程管理功能。它提供了一种方便、高效和安全的方式来管理和操作远程 Windows 主机,特别适用于大规模部署、远程服务器管理和自动化任务。
需要注意的是,使用 WinRM 进行远程管理需要确保适当的安全配置,包括使用安全的通信协议和身份验证机制,限制访问权限,以及监控和审核远程管理活动,以确保系统的安全性和保密性。

简单来说就是可以远程通过命令行来操作计算机

Exploiting AD Users(利用AD用户)

这个就是在拿下一台计算机后 我们可以挨个在这几个用户之间切换来查看 看看也没有啥有用的信息 这里的话是获取到了一个数据库信息 下载到本地 然后使用keepass进行查看

这里有个骚操作就是通过弹shell 然后使用mterpreter来执行键盘操作记录 来获取到用户的密码

Exploiting GPOs

对GPO进行解释

image-20230912190812631

就是可以给某个用户赋予权限 想让其能干啥就干啥

没啥想写的了 这里的话就是直接查看thm就行了

利用证书

这里的话是我们可以利用错误的证书模板来进行权限提升和横向移动

AD Certificate Services 广告证书服务

AD 证书服务 (CS) 是 Microsoft 的公钥基础结构 (PKI) 实现。由于AD在组织中提供了一定程度的信任,因此它可以用作CA来证明和委托信任。AD CS用于多种用途,例如加密文件系统,创建和验证数字签名,甚至用户身份验证,使其成为攻击者的有前途的途径。

重要的是这个用户身份验证这一点 这一点的话是可以利用错误的模板配置来进行利用的

由于 AD CS 是一项特权功能,因此它通常在选定的域控制器上运行。这意味着普通用户无法真正直接与服务交互。另一方面,组织往往太大,无法让管理员手动创建和分发每个证书。这就是证书模板的用武之地。AD CS 的管理员可以创建多个模板,这些模板可以允许具有相关权限的任何用户自行请求证书。这些模板具有指示哪个用户可以请求证书以及所需内容的参数。SpecterOps发现,这些参数的特定组合可能具有难以置信的毒性,并被滥用于权限提升和持久访问。

image-20230913095606719

可以恶意利用的模板

image-20230913095644596

在此模板中,我们可以看到THMSERVER2的计算机帐户可以为模板颁发CSR,该模板允许我们指定主题备用名称(SAN)并可用于客户端身份验证

就是因为这一点 所以就是会进行横向移动到AD管理员账户

因为这里的话是我们已经拿下这个THMSERVER2这台电脑了 并且就是已经开启了RDP 于是我们进行登录 然后请求证书

在请求证书的时候要记得一点就是

image-20230913095945573

因为我们的目的是为了登录到AD管理员账户 于是我们就得模拟用户的名字写上去

然后我们在使用私钥导出我们生成好的证书

使用证书进行用户模拟

现在我们终于可以模拟用户了。要执行此操作,需要两个步骤:

  • Use the certificate to request a Kerberos ticket-granting ticket (TGT)
    使用证书请求 Kerberos 票证授予票证 (TGT)
  • Load the Kerberos TGT into your hacking platform of choice
    将 Kerberos TGT 加载到您选择的黑客平台中

使用的是这个工具 Rubeus来进行TGT证书的生成

现在我们可以使用Mimikatz加载TGT并向THMDC进行身份验证:

这样的话就是可以拿下域控了

Exploiting Domain Trusts(利用域信任)

这里的话将会讲到我们之前听说过但是没怎么研究过的黄金 白银票据

这个模块的基于子域向根域移动的操作

(因为要获取这个krbtgt-hash只能在AD域管理员上获取)

(在上一个模块中 我们拿到的仅仅是这个za子域的域控权限 我们的目的是想拿下整个域的权限 就是TRYHACKME.LOC)

因为这里的话子域和根域的信任是双向的 所以我们就可以通过子域来直接访问根域

可以在域之间配置两种主要类型的信任:

  • Directional - The direction of the trust flows from a trusting domain to a trusted domain
    定向 - 信任的方向从信任域流向受信任域
  • Transitive - The trust relationship expands beyond just two domains to include other trusted domains
    可传递 - 信任关系从两个域扩展到包括其他受信任域

解释一下这两种信任关系的区别

1
2
3
4
5
6
7
在域(Domain)环境中,定向信任(One-Way Trust)和传递信任(Transitive Trust)是两种不同类型的信任关系。它们的主要区别在于信任的方向和传递性。
定向信任(One-Way Trust): 定向信任是指在两个域之间建立的单向信任关系。其中一个域(称为信任源域)信任另一个域(称为信任目标域),但反过来不一定成立。这意味着,信任源域中的用户可以访问信任目标域中的资源,但信任目标域中的用户无法访问信任源域中的资源。
例如,假设有域 A 和域 B,域 A 信任域 B。这意味着域 A 中的用户可以访问域 B 中的资源,但域 B 中的用户不能访问域 A 中的资源。这种信任关系通常用于实现跨域访问的场景,其中一个域的用户需要访问另一个域中的资源。
传递信任(Transitive Trust): 传递信任是指在多个域之间建立的相互信任关系,信任关系在域之间传递。当两个域之间存在传递信任时,信任可以在域之间传递,形成一个信任路径,从而实现跨域访问。
例如,假设有域 A、域 B 和域 C,域 A 信任域 B,域 B 信任域 C。由于信任是传递性的,域 A 也会信任域 C。这意味着域 A 中的用户可以访问域 C 中的资源,即使直接的信任关系只存在于域 A 和域 B 之间。
传递信任的优点是能够实现多个域之间的灵活访问,减少了信任配置的复杂性。然而,需要注意的是,信任关系的传递性也可能增加安全风险,因此在配置和管理信任关系时需要谨慎处理。
总结起来,定向信任是单向的,只允许一个域信任另一个域,而传递信任是相互的,允许多个域之间形成信任路径,实现跨域访问。选择使用哪种信任关系取决于具体的需求和安全考虑。

KRBTGT和黄金门票

krbtgt这个东西大家的话应该都很熟悉 就是在这个Kerberos进行身份验证的流程的时候讲过

但是,如果我们想生成自己的 TGT 来授予我们访问所有内容的权限怎么办?这被称为黄金票证攻击。在黄金票证攻击中,我们完全绕过KDC并创建自己的TGT,本质上成为票证授予服务器(TGS)。为了伪造TGT,我们需要以下信息:

  • The FQDN of the domain
    域的 FQDN
  • The Security Identifier (SID) of the domain
    域的安全标识符 (SID)
  • The username of the account we want to impersonate
    我们要模拟的帐户的用户名
  • The KRBTGT password hash KRBTGT 密码哈希

前三个通常很容易恢复。最后一个需要域泄露,因为 KRBTGT 密码哈希仅存储在域控制器上。幸运的是,我们刚刚使用伪造证书破坏了第 0 层管理员组,因此我们能够恢复 KRBTGT 密码哈希。

我们将再次使用带有 DC Sync 的 Mimikatz 来恢复 THMSERVER2 上的 KRBTGT 密码哈希:

Sync的话就是如上面所说 就是绕过KDC来自己生成TGT

由于我们是要利用子域和根域之间的双向信任 所以我们的话就会想要伪造这个 Inter-Realm TGT (这个就是跨域的TGT)

当我们构建黄金票证来执行此漏洞时,我们将包含来自其他域的额外帐户 SID。Mimikatz可以协助解决这个问题,允许我们设置Kerberos TGT KERB_VALIDATION_INFO结构的ExtraSids部分。ExtraSids 部分描述为“指向KERB_SID_AND_ATTRIBUTES结构列表的指针,这些结构包含与主体所属帐户域以外的域中的组对应的 SID 列表”。

这里的关键是,我们将通过将企业管理员 (EA) 组的 SID 作为额外的 SID 添加到子域域控制器的伪造票证中,来利用父域与子域的信任。EA 组属于父域,该组的成员身份实质上授予对整个林的管理权限!此组的默认 SID 为 S-1-5-21—519。

在进行利用之前,我们首先需要恢复两个 SID:

  • The SID of the child domain controller (THMDC), which we will impersonate in our forged TGT
    子域控制器 (THMDC) 的 SID,我们将在伪造的 TGT 中模拟它
  • The SID of the Enterprise Admins in the parent domain, which we will add as an extra SID to our forged TGT
    父域中企业管理员的 SID,我们将将其作为额外的 SID 添加到伪造的 TGT 中

然后就使用mimikazt进行生成黄金票据 因为我们分别使用了两个域管理员的SID 所以我们就可以利用双方的双向信任 就可以互相访问了

1
kerberos::golden /user:Administrator /domain:za.tryhackme.loc /sid:S-1-5-21-3885271727-2693558621-2658995185-1001 /service:krbtgt /rc4:<Password hash of krbtgt user> /sids:<SID of Enterprise Admins group> /ptt

这样的话我们就可以通过这个黄金票据实现横向移动 权限提升了

白银票据

白银票据

这里先讲一下PAC是啥 (因为下面会用到)

1
2
3
4
5
6
7
8
9
10
11
在 Active Directory (AD)域环境中,PAC 指的是 Kerberos 预身份验证票据(Privilege Attribute Certificate),也称为票据包(Ticket Granting Ticket)。

PAC 是一种包含有关用户或计算机身份验证和授权信息的数据结构。它是由域控制器颁发给经过身份验证的主体(如用户或计算机)的安全令牌。PAC 中包含了一些重要的信息,如用户的组成员身份、授权信息、委派权限等。

PAC 的主要作用是在 Kerberos 认证过程中验证和授权用户的访问请求。当用户进行身份验证时,域控制器会为用户生成一个 TGT(Ticket Granting Ticket),其中包含了用户的身份信息和授权信息。该 TGT 会被包装在 PAC 中,然后发送给用户,用户将 PAC 中的 TGT 用于获取服务票据(Service Ticket)以访问特定服务。

PAC 在 Kerberos 认证过程中起到了重要的作用,它确保了用户的身份和授权信息的安全性和完整性。它还为用户提供了一种验证其身份的方法,并授权其访问特定资源的权限。

需要注意的是,PAC 是由域控制器生成和管理的,并且在用户进行身份验证时动态生成。由于 PAC 包含了敏感的身份和授权信息,所以需要在传输和存储过程中进行适当的保护和加密,以防止信息泄露和篡改。

总之,PAC 是 Active Directory 域中用于包含用户身份验证和授权信息的数据结构。它在 Kerberos 认证过程中起到了重要的作用,确保用户的身份和访问权限的安全和完整。

简单来说就是用户或者计算机的身份令牌

制作银票条件

1
2
3
4
5
1.域名称
2.域的SID值
3.域中的Server服务器账户的NTLM-Hash
4.伪造的用户名,可以是任意用户名.
5.目标服务器上面的kerberos服务

白银票据的服务列表

1
2
3
4
5
6
7
8
服务名称                    同时需要的服务
WMI HOST、RPCSS
PowerShell Remoting HOST、HTTP
WinRM HOST、HTTP
Scheduled Tasks HOST
Windows File Share CIFS
LDAP LDAP
Windows Remote Server RPCSS、LDAP、CIFS

伪造白银票据

1
2
3
4
5
6
7
/domain:当前域名称
/sid:SID值,和金票一样取前面一部分
/target:目标主机,这里是OWA2010SP3.0day.org
/service:服务名称,这里需要访问共享文件,所以是cifs
/rc4:目标主机的HASH值
/user:伪造的用户名
/ptt:表示的是Pass TheTicket攻击,是把生成的票据导入内存,也可以使用/ticket导出之后再使用kerberos::ptt来导入
1
kerberos::golden /domain:0day.org /sid:S-1-5-21-1812960810-2335050734-3517558805 /target:OWA2010SP3.0day.org /service:cifs /rc4:125445ed1d553393cce9585e64e3fa07 /user:silver /ptt

klist可以查看是否成功导入