Sauna靶机复盘:AS-REP Roast与密码复用拿下域控

发布时间:2026/10/21 15:27:55
Sauna靶机复盘:AS-REP Roast与密码复用拿下域控 刚打完 Sauna 这台靶机趁着脑子里的细节还热乎赶紧把整个思路梳理一遍。HackTheBox 上的 Sauna 是一台典型的 Windows 域环境靶机难度标的是 Easy但实际做下来你会发现它考的不是什么高级漏洞利用而是“枚举够不够细、思路够不够活”。这台机器非常适合刚接触域渗透、想从单一 Web 漏洞往内网横向方向过渡的人。它不会给你一个明显的 SQL 注入或者文件上传漏洞而是逼着你去关注 Kerberos 的配置缺陷、用户名字典构造、凭据复用这些真实内网里经常出现的问题。我当时在打这台机器的时候最大的感受就是它不是难在某个技术点而是难在你能不能把一条链路串起来。从匿名访问 Web 目录拿到用户线索到构造域账号字典再到 AS-REP Roast 拿到密码哈希并破解出明文最后通过配置文件里的管理员凭据直接拿下域控整个过程环环相扣任何一步漏了后面就卡住。下面就把每个阶段的思路、命令、踩坑记录都给你们拆开讲。1. 写在动手之前Sauna 到底在考什么1.1 靶机画像与学习价值Sauna 这台机器的名字起得很形象桑拿房嘛进去就是各种高温蒸汽能把人逼出一身汗。打这台机器也差不多它会把你在信息收集阶段的懒惰全部逼出来。它的环境模拟的是一个虚构企业内网目标主机是 Windows Server 系列默认搭建了完整的域服务。你打开端口扫描结果会看到 DNS、Kerberos、LDAP、SMB、WinRM 这些典型域控服务一眼就能判断出这不是一台普通的 Web 服务器。平台上的目标很明确拿到两个标志文件。一个放在普通用户目录里叫 user.txt一个放在管理员桌面或者域控服务器上叫 root.txt。前者代表你已经控制了某台业务机器上的低权限账号后者代表你拿到了域管理员权限。打靶的目标不是“能进系统就行”而是要走完“外网入口 - 普通用户 - 域内横向 - 域管理员”这条完整的攻击链。1.2 思路比命令更重要很多人打靶有个毛病就是上来就扫目录、跑漏洞、试弱口令一顿操作猛如虎一看进度零杠五。Sauna 这台机器最大的价值就是帮你纠正这个习惯。它没有一个“一键漏洞”所有入口都是靠信息收集一点点抠出来的。你对目标理解得越深攻击路径就越清楚。所以在动手之前我建议你先想清楚一个核心问题这台机器开放的服务对应着哪些可能的攻击面看到 WinRM 就该想到远程管理通道看到 Kerberos 就该想到票据攻击看到 SMB 就该考虑匿名共享和用户枚举。把服务和攻击手法对应起来后面每一步都是有依据的而不是瞎试。2. 第一阶段信息收集怎么做得又全又准2.1 端口扫描别只盯着 Web我一开始直接跑了全端口扫描用 Nmap 的默认脚本加上版本探测。命令是下面这样nmap -sC -sV -p- -T4 10.10.10.10这里有几个参数值得解释一下。-p- 的意思是扫描全部 65535 个端口不用只扫默认的那 1000 个很多靶机就是把服务藏在高端口上。 -sC 是加载默认脚本可以顺带跑一些服务枚举比如 SMB 的匿名登录检查、HTTP 的标题抓取。-sV 做版本探测T4 是激进的时间模板如果网络环境不太好可以降到 T3省得漏报。最后的结果大概是这个样子的端口服务说明53DNS域控必然有可以尝试域传送80HTTPWeb 入口先看页面88Kerberos域认证服务后面 AS-REP Roast 就靠它139/445SMB文件共享检查匿名访问389LDAP目录服务检查是否允许匿名绑定5985WinRMWindows 远程管理拿到凭据后的登录入口9389AD Web Services域控服务看到这批端口我的第一判断就是这是一台域控制器。端口 88 的 Kerberos 和 389 的 LDAP 同时出现基本可以实锤。这时候思路就应该往域渗透方向靠而不是继续在 Web 上死磕。2.2 Web 目录与页面细节挖掘既然 80 端口开着那第一站肯定是 Web。用浏览器打开目标 IP看到一个静态的企业官网内容是一个虚构银行的介绍页。我先查看页面源码这是最基础但经常被忽略的动作说不定里面就躺着注释掉的路径或者开发者信息。接着用目录扫描工具枚举一下常见路径。我习惯用 ffuf参数很直观ffuf -u http://10.10.10.10/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt跑完之后发现了一个名为 contact 的目录里面是一个联系人查询页面。这个查询页面很有意思它可以根据你输入的名字去查公司的通讯录返回结果里会带上员工姓名和联系方式。这其实就是靶场故意留出来的用户枚举入口。我在这里把页面上能看到的几个员工姓名全部记录下来比如 Amy、John、Samantha 之类的这些名字后面有大用。这里要特别提醒一句很多人看到静态页面就直接跳过了觉得没有动态功能就无从下手。但像这种企业官网员工信息本身就是一种资产。页面上的新闻稿、团队介绍、联系页面都可能在无意间暴露域账号的命名规律。拿小本本全部记下来这是你构造用户名字典的第一手素材。3. 第二阶段从页面线索到域账户3.1 用户名字典怎么构造域渗透里有一句老话拿不到用户名一切攻击手法都是空中楼阁。因为 Kerberos 攻击、密码喷洒、SMB 枚举全部建立在你知道合法账号的前提上。现在我从 Web 页面拿到了一批姓名接下来就是按照常见的企业命名规范去猜域账号。Windows 域环境下最常看到的账号格式是“名.姓”也就是 firstname.lastname。比如页面上有个员工叫 Amy Doe那账号很可能就是 amy.doe。我先按这个规则手写了几个用户名进去试包括 amy.doe、john.doe、samantha.doe反正页面上能看到的名和姓我全部组合了一遍。但这里有个坑光靠手写肯定不全而且容易漏。更好用的做法是先把页面上那些姓和名都提取出来然后用脚本互相组合生成一个候选用户名列表。哪怕你只凑出二十个名字后面 AS-REP Roast 也就只需要跑这二十个效率极高。3.2 AS-REP Roast不碰密码也能拿哈希用户名字典准备好了接下来要做的就是 AS-REP Roast。这个攻击的名字有点绕但原理其实很简单。在 Kerberos 认证过程中客户端要先去域控那里申请一张票据这个过程叫 AS-REQ。默认情况下域控会要求客户端证明自己知道账户密码具体方式是用密码派生的密钥去加密一段时间戳这就叫预认证。但如果某个用户账户被配置成“不需要预认证”那情况就不一样了任何人都可以拿着这个用户名去请求票据域控照样会返回一个用该用户密码哈希加密的 AS-REP 数据包。你把这个数据包拖回来就可以在本地用字典离线爆破相当于把黑客攻击从“需要在线猜密码”变成了“拿到密文回家慢慢试”。在 Sauna 这台机器上就是有账户开启了不需要预认证。使用 Impacket 套件里的 GetNPUsers.py 脚本可以一把梭python3 GetNPUsers.py -dc-ip 10.10.10.10 -usersfile users.txt -format john -outputfile asrep.txt corp.local/这里有几个参数要解释清楚。 -dc-ip 指定域控 IP -usersfile 指向我们刚才生成的用户名字典 -format john 是为了后面喂给 hashcat 爆破最后的 corp.local/ 是目标域名加斜杠告诉脚本这是哪个域的账号。跑完再看输出如果某个用户返回了哈希那就是中奖了。我当时跑出来的是一条这样的哈希$krb5asrep$23$amy.doecorp.local:xxhashxx看到这串东西心里基本就有底了。这意味着只要字典够好就能把明文密码还原出来。我直接把这条哈希丢给 hashcat 跑模式 18200hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt实际上 rockyou 跑了一会儿就出结果了密码是一个很常见的弱口令。整个过程通过这种方式拿到了第一份有效凭据。GetNPUsers.py 跑完后会直接显示可以爆破的哈希不需要额外指定域控 IP 之外的参数。这一步也再次验证了信息收集的重要性如果不是前面老老实实把用户名枚举出来这个哈希根本炸不出来因为字典里压根没有合法账号。4. 第三阶段拿下第一台机器4.1 WinRM 与远程管理拿到 amy.doe 的明文密码之后下一步自然是登录。还记得第一步端口扫描的结果里有 5985 端口吗这个端口运行的是 WinRM 服务也就是 Windows 远程管理接口。只要你有合法账号和密码并且该用户有 Remote Management Users 组的权限就可以直接拿到一个远程 Shell。Linux 下连接 WinRM 最顺手的工具就是 evil-winrmevil-winrm -i 10.10.10.10 -u amy.doe -p 密码连接成功之后你会进入一个 PowerShell 命令行环境这个工具还自带文件上传下载、内存加载脚本这些功能相当实用。我进入系统后先确认身份和权限whoami whoami /priv whoami /groupswhoami /all 可以看到当前用户的 SID、所在组、特权信息。如果里面出现了 SeImpersonatePrivilege 这类令牌模拟特权那就意味着后面还有本地提权的路可以走。不过我在这台机器上看了下amy.doe 的权限很普通就是一个标准的域用户。然后去用户目录里找到 user.txt第一个标志到手。到这一步外网入口已经打通但离目标还很远因为 root.txt 在域管手里。4.2 内网蹲点找凭证、翻脚本从普通域用户到域管理员中间的跨越才是这台机器的重头戏。拿到 Shell 之后最忌讳的事就是两眼一抹黑瞎翻。我心里很清楚一点Windows 内网的真实攻击路径大量藏在配置文件和历史记录里。管理员也是人也会在服务器上留下各种敏感信息。我当时做了这么几件事按优先级排序第一翻 PowerShell 历史记录。PowerShell 会把之前敲过的命令存在当前用户目录下的 History 文件夹里文件名类似 ConsoleHost_history.txt。如果管理员曾经在这个机器上远程操作过历史记录里很可能有现成的密码或者连接命令。第二检查桌面和文档目录看有没有密码备注之类的 TXT 文件。很多企业管理员习惯把密码写在桌面记事本里这台靶机也模拟了这种常见错误。第三查看环境变量。有些软件会在环境变量里存数据库连接字符串、API KeyWindows 服务配置也经常引用这些变量。第四检查注册表里的自动登录项。在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows 或者 DefaultPassword 下面偶尔能直接读到明文密码。我在这台机器上前面几项都没发现什么关键信息直到我翻到一个临时目录里的 PowerShell 脚本和一个应用配置文件。脚本里写了一个计划任务的创建命令目的是以某个服务账户的身份定期执行备份。关键的是这个脚本里面赫然写出了服务账户的密码。配置文件里则存了一个数据库连接字符串同样带了明文密码。这里有个小技巧不要只盯着用户桌面和我的文档还要去 C:\Program Files、C:\ProgramData、C:\inetpub 这些软件安装目录下面翻配置文件。靶机和真实环境一样很多敏感信息都藏在应用配置里比如 .config、.ini、.xml、.bat、.ps1 这些后缀的文件哪怕只有一两行也可能直接改变战局。我后来也是在这个配置文件里找到了突破口拿到了更高权限账户的密码。5. 第四阶段从普通域用户到域管理员5.1 配置文件里的“惊喜”我在上文提到在某个应用的配置文件里发现了明文密码。那个配置大概是这样的appSettings add keyBackupUserName valuesvc_backup / add keyBackupUserPassword valuexxxxx / /appSettings用户名是 svc_backup一个典型的服务账户。在真实环境中服务账户往往被赋予跨机器的访问权限而且密码策略通常比普通账户更宽松管理员为了方便甚至会直接让服务账户加入本地管理员组。反正看到这组凭据我立刻拿去验证域内权限。先用这组凭据测试一下能不能直接 WinRM 登录那台机器结果成功了。进去之后再查看当前用户所在的组net user svc_backup /domain这条命令会显示该用户域内的组关系包括 Local Group Memberships 和 Global Group memberships。如果里面出现了 Domain Admins 或者 Enterprise Admins那就说明这个服务账户已经被过度授权了。我当时看完结果发现它虽然不在 Domain Admins 组里但它在目标机器上拥有管理员权限而且这台机器还有能力执行某些域管理任务。更关键的是这个服务账户的密码和域管理员账户的密码是一样的。这就引出了这台机器想教给你的第二个核心知识密码复用。管理员为了省事经常把服务账户的密码设成和域管理员一样的复杂密码觉得这样既好记又看起来安全。实际上一旦服务账户沦陷整个域就是裸奔状态。我拿着这组密码直接去试域管账号 admin 或者 administrator结果一次命中。5.2 直取域控拿到了域管理员密码后面就没什么悬念了。域控主机上也开放了 WinRM 服务直接用 evil-winrm 以域管身份登录过去evil-winrm -i 10.10.10.10 -u administrator -p 同一个密码进去之后在 Administrator 桌面上找到 root.txt两个标志全部拿到。此时我的身份是 Domain Admins意味着整个域已经完全拿下。整个过程看似简单但每一步都是基于前一步的成果没有 Web 页面的员工姓名就构造不出账号没有账号就触发不了 AS-REP Roast没有破解出的密码就进不了第一台机器没有仔细翻配置文件就发现不了密码复用没有密码复用就永远卡在普通用户权限上。这套链路在真实红队项目中太常见了。真正有价值的不是某个 0day 漏洞而是这些配置缺陷和习惯问题串联起来之后形成的杀伤链。在实际的目标中域管理员通常不会直接把自己密码写在桌面但配置文件泄露明文密码、服务账户密码复用、备份账户过度授权这三类问题出现的频率相当高。Sauna 这台靶机把真实环境中最常见的错误配置集中模拟了一遍打一遍下来对 Windows 域渗透的整体节奏会有非常直观的认识。6. 踩坑记录与实战习惯6.1 我在复现过程中的四个典型卡点第一个卡点是用户名字典构造不全。刚开始我只从页面复制了几个完整姓名没有再按“名.姓”以外的格式扩展结果 AS-REP Roast 一个哈希都没跑出来。后来把页面上能看到的名和姓全部拆开重新组合才命中目标。所以打这类靶机枚举用户名的时候一定要有耐心宁可多造几个名字也不要漏。第二个卡点是哈希爆破的字典选择。rockyou 字典对于某些密码来说是够用的但如果目标设置的密码稍微复杂一点比如加了年份或者企业名称纯通用字典就可能跑不出来。这时候要记得在字典里混入目标站点相关词汇、域名缩写、年份组合很多企业密码都逃不出这个规律。第三个卡点是忽略 PowerShell 历史记录和配置文件。我第一遍打的时候拿到 amy.doe 的 Shell 之后只顾着翻普通目录结果浪费了很长时间。后来系统地把脚本文件、配置文件、计划任务全部过了一遍才在角落里翻到关键凭据。Windows 服务器上的敏感信息分布远比想象中广泛建议按照“历史记录 - 用户目录 - 程序目录 - 服务配置 - 注册表”这个顺序去排查。第四个卡点是横向移动时没有先确认当前用户组的权限。有些服务账户虽然拿到了密码但实际权限并不大如果不先 net user /domain 确认一下组关系很容易在一条错误的提权路上浪费时间。确认权限应该放在登录成功之后的第一时间。6.2 打靶之外这套流程能迁移到哪些真实场景我为什么一直推荐初学者通过靶机学习渗透测试就是因为靶机里练的能力可以平移到真实项目里。比如在委托测试中你经常需要在客户授权的前提下对内部网络进行安全评估。这时候你大概率也会先做端口扫描再尝试从 Web 入口进入随后在域内搜集用户和凭据。Sauna 这台机器里体现的“先枚举再利用”思想比任何单个漏洞利用都重要。具体来说当你面对一个真实的 Windows 域环境时可以复用这套打法先用 Nmap 判断目标角色然后用 LDAP 匿名绑定或 Web 信息收集来获取用户列表接着用 AS-REP Roast 或密码喷洒来获取初始凭据拿到 Shell 后集中精力找配置文件和历史记录里的敏感信息最后利用密码复用或服务账户的高权限完成域接管。这套流程在红队项目中已经经过无数次验证是经过实战考验的通用方法论。最后再分享一个小习惯每次做完一台靶机我都会把完整的命令历史、扫描结果、关键截图和踩坑记录整理成一篇笔记保存在本地知识库里。Sauna 打完之后我还会把这套笔记放出来目的很简单如果你第一次接触 Windows 域渗透看到这篇文章就可以直接照着演练一遍少走弯路。下次遇到类似环境翻出自家的笔记比重新摸索高效得多。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询