资讯详情

资讯详情

红日靶场vulnstack 8四层内网横向渗透实战:从打点到域控

红日靶场vulnstack这个系列在安全圈里几乎成了内网渗透入门的标配。从第一弹玩到第八弹网络规模一层比一层重到了 vulnstack 8 这个版本直接给你摆了一套四层内网。这篇文章是红日靶场 8 实战全流程的第四篇前面几篇把基础打点和前几层网络的思路讲完之后这篇集中处理四层网络结构下的完整横向链路外网打点进来办公网横向铺开跨隔离网段继续推进最后在域控上收口。四层内网的难点不是单点漏洞有多深而是链路怎么维持、凭证怎么复用、权限怎么跨网段带过去。这篇文章适合两类人。第一类是准备复现 vulnstack 8 的兄弟可以把它当成一份能跟着走的流程记录第二类是蓝队朋友看攻击路径怎么从入口一路摸到核心反过来知道自己该在哪一层设防。下面所有操作都基于授权靶场环境不要搬到真实业务网络上去试。靶场里的每一台主机、每一条命令目标都只是让你理解横向渗透的完整闭环先摸清结构再拿权限最后把权限一路传递到最里层。1. 环境拓扑与攻击面分析1.1 先按层级把内网结构画出来四层内网不是指四台机器而是指四个隔离网段。我这次复现 vulnstack 8 的时候用虚拟机创建了一个多网卡串联的网络结构每一层之间在物理链路层面就是隔离的只有特定主机同时连接着两个网段才可能让流量从一层“跳”到下一层。这个设计思路和真实办公网非常像对外提供一个 Web 入口内部业务系统放在不同网段核心域控放在最后面。下面是我这次复现的简化拓扑不同人部署同一个靶场时 IP 会有差异大家不要死记地址重点是记住每层之间通过双网卡主机串联的这个逻辑。层级主机角色所在网段常见服务攻击机Kali / Win 攻击终端模拟外部网络扫描、漏洞利用、转发链路第一层边界 Web 服务器外部可达 内网 A 段Web 应用、SSH、远程桌面第二层办公 PC / 应用服务器内网 A 段文件共享、远程桌面、Web 服务第三层数据库 / 中间件服务器内网 B 段数据库、业务系统、文件服务第四层域控制器内网 B 段AD 域、DNS、组策略、共享在我这次的环境里第一层边界机的外网口是模拟公网地址第二层网段是 10.10.10.0/24第三层和第四层共用一个 10.10.20.0/24 网段。第三层的数据库服务器是双网卡机器一边连着办公网一边连着核心网段它就是通往第四层域控的那道门。拿到这种多网段靶场第一件事不是拿扫描器一阵猛扫而是先确定每一层网络的边界在哪里。因为四层内网的重点在于控制“由哪台机器做跳板、从哪一层往哪一层转发流量”如果你连哪台主机连着两块网卡都不知道后面大概率会在链路中间断掉。我在第一轮信息收集的时候会先把每台主机的网卡数量、ARP 缓存、路由表全部记下来再决定下一步从哪台机器入手。1.2 四层攻击面的拆解与优先级四层网络每一层的攻击面都不一样优先级也不一样。边界层主要看暴露出来的 Web 应用、中间件和远程管理端口这是第一道入口办公网层主要看 SMB 文件共享、远程桌面、计划任务服务以及本机内存里缓存的凭证隔离网段层主要看数据库弱口令、中间件管理控制台、未授权的内部接口域控层则要依靠 AD 域自身的机制比如域用户凭证复用、组策略脚本、时间同步服务这类能被利用的信息。我的经验是不要试图在每一层把所有漏洞都挖一遍。四层网络横向渗透真正高效的打法是把第一层当成入口后面每一层都尽量复用前面拿到的凭证和权限而不是重新去找一个新的漏洞。这就像你在一栋老办公楼里从一楼往四楼走一楼的钥匙能开二楼的锁二楼的门禁卡能刷三楼的闸机那你就没有必要每次都在楼梯间砸墙。靶场里的玩法也是如此先抓凭证再试复用最后才考虑针对性的新漏洞。2. 第一层突破外网打点与边界通路2.1 Web 入口的识别与指纹判断四层内网的起点必然是先拿到第一层主机的权限。这次 vulnstack 8 的第一层边界机开放了 80 和 8080 等常见 Web 端口还有远程管理相关的端口。我先用扫描器做了一轮全端口识别命令大概是这样的./fscan -h 192.168.100.0/24 -p 1-65535 -o result.txtfscan 这类工具的好处是能一次性把端口、服务、Web 指纹、常见弱口令都扫出来省去很多手工判断的时间。扫完后我注意到 Web 服务响应头里有明显的框架特征页面报错信息也暴露了后台路径。这里我的建议是先访问页面把报错信息、静态资源路径、响应头全部看一遍再用公开的指纹库去对比往往比直接盲打漏洞更快。确认框架之后我开始验证是否存在反序列化这类历史漏洞。这里有一个非常重要的习惯我在本地起了一个同版本的中间件环境先把公开利用链在本地跑通再拿到靶场上试。很多新手喜欢直接在目标上反复试错结果要么把服务打崩要么半天不出结果。先本地复现再上靶场至少能省一半时间。2.2 拿到 Shell 后的三条判断拿到边界机权限后先别急着横向移动。我在这一步会做三件事确认当前用户权限、确认主机出网情况、确认是否存在双网卡。这三件事直接决定了后面用哪种方式搭转发链路。ipconfig /all arp -a route print whoami /all如果当前权限是普通用户我会先看看有没有明显的提权路径如果已经是管理员权限就直接进入凭证收集阶段。出网情况也很关键如果边界机能主动访问攻击机那后面就方便很多如果不能出网就只能靠边界机上的转发功能把流量导进来。双网卡则是判断它能否充当通往下一层的跳板这一点在四层内网里尤其重要。在这一步我通常会选择在边界机上开一个本地转发端口把内网侧流量送到攻击机这边。具体操作是先在攻击机本地监听一个端口再通过边界机上运行的一小段转发程序把目标网段的 TCP 流量导到这个端口上。这样攻击机上的扫描器、连接工具都能直接“隔空”操作第二层内网的主机。2.3 边界突破阶段的踩坑记录这个阶段我踩过的坑有几个第一个是 shell 动不动就掉线。第一层边界机如果是 Linux 系统某些反弹方式容易因为终端交互问题断掉后来我换成更稳定的 payload并且把会话保持时间调长了问题才缓解。第二个坑是中文系统编码乱码命令输出全是乱码后来用chcp 65001切到 UTF-8 编码就好多了。第三个坑是转发端口连通性第一次开转发端口时本地能连通但从攻击机访问总是超时最后发现是边界机防火墙没放行这个端口换到 8443 这类高端口之后流量就通了。还有一个容易被忽略的细节边界机上如果同时存在多张网卡一定要看路由表。有些情况下机器本身不知道目标网段怎么走需要手动加一条静态路由否则后面的扫描流量根本到不了第二层。我的建议是每操作一步就先在边界机上用route print确认当前路由状态再往下走。3. 第二层横向办公网内的凭证与口令复用3.1 横向开始前的信息收集三件事进入第二层办公网之后横向渗透已经变成了主要任务。但不要一上来就试图在所有机器上批量执行命令先把该收集的信息收齐。我会做三件事net view /domain net user /domain net group domain admins /domain第一件确认当前网络环境是否属于域环境如果不是域那后面就不需要考虑域内机制第二件查看当前域内有哪些用户和组尤其是域管理员组这决定了最终目标第三件检查当前主机上缓存的凭据和共享资源有时候隔壁机器开放了 Everyone 可读的共享里面放着密码本或配置文件这就是最简单的路。很多新手在这一步容易陷入“扫到一堆开放端口然后挨个尝试漏洞”的误区。我的观点是办公网内横向最优先做的事情是找凭证而不是打漏洞。因为办公网里的机器配置差异大有些机器补丁很新漏洞不一定打得动但凭证不一样同一个管理员把密码用在多台机器上在真实网络里太常见了。3.2 抓取内存凭证与密码喷洒的核心逻辑在办公网的一台管理员机器上我用凭证抓取工具把内存里缓存的密码和哈希都导了出来。命令还是经典的那套privilege::debug sekurlsa::logonpasswords这里解释一下原理Windows 登录过程中会把用户的明文密码或 NTLM 哈希缓存在系统进程内存里只要拿到了系统权限就能把这些缓存读出来。这也是为什么办公网里的机器不能乱装软件、不能随便插别人的设备——你永远不知道谁曾经在这台机器上登录过。抓到一批凭证之后下一步就是验证这些凭证能不能用。这里我会用密码喷洒的思路拿已知的一个密码去尝试一批用户名而不是拿着一个用户名去爆破无限多个密码。后一种方式很容易触发账号锁定策略把账号锁死以后反而坏事。前一种方式更温和也更贴近真实攻击者的习惯因为他们在拿到一个密码之后最想知道的不是某个特定账号的密码而是“这个密码在多少台机器上还能用”。3.3 用计划任务实现横向移动凭证验证通过之后要考虑怎么在目标机器上执行命令。在靶场里我会优先尝试计划任务的方式命令大概是这样schtasks /create /s 10.10.10.20 /u red8\user /p Password123 /tn update /sc once /st 23:59 /tr cmd /c whoami C:\Windows\Temp\out.txt schtasks /run /s 10.10.10.20 /tn update这条命令的意思是在目标机器 10.10.10.20 上创建一个名为 update 的计划任务用 red8\user 这个账号去执行执行的命令是whoami并把结果写到临时目录里。创建完再手动触发一次。为什么优先用计划任务而不是直接使用远程执行类工具因为计划任务依赖的端口和服务相对简单只要目标开放了对应的远程计划任务接口并且你手里的账号有权限就能执行。而很多远程管理工具要求目标开放 ADMIN$ 这类隐藏共享一旦 IPC$ 被禁用或者共享权限收紧工具就会直接失败。计划任务的另一个好处是执行痕迹相对可控在靶场里更容易复盘。如果计划任务这条路走不通我通常还会换 WMI 的方式再试一次核心思路还是“有凭据就有横向移动的资本”。这一步成功之后第二层办公网基本就在控制范围内了接下来要考虑的是怎么进入第三层隔离网段。4. 第三层跨越隔离网段与多级转发链路4.1 双网卡主机就是天然的通路第三层网络和第二层不在同一个网段正常情况下办公网的机器是访问不到数据库服务器的。我在信息收集阶段发现第二层有一台应用服务器同时连着一个 10.10.20.0/24 网段这就等于告诉我这台机器就是通往第三层的门。我在这台双网卡机器上做的事情和第一层边界机类似开启一个本地转发端口把 10.10.20.0/24 网段的流量导到攻击机这边。此时我的攻击机上已经有一条到 10.10.10.0/24 的转发链路再加上这一条到 10.10.20.0/24 的转发链路就形成了一个跨三层的访问通道。攻击机本地访问 10.10.20.0/24 里的主机时流量实际上是经过“攻击机 - 第一层边界机 - 第二层双网卡机器”这样一段一段传过去的。这种多级转发链路就是四层内网和普通两层内网最大的区别。你在两层网络里只需要一个跳板但在四层网络里可能每一层都要有对应的转发节点而且某个节点一旦下线整条链路就断了。所以我强烈建议在进入第三层之后先不要急着做大量扫描而是在沿途的每一台机器上都保留一个可用的会话并检查转发端口的存活状态。4.2 端口通了不代表能连上受限访问的处理第三层的数据库服务器开放了 1433 和 445 等端口但我第一次通过转发链路去探测时发现结果非常诡异某些主机 ping 不通但 445 端口却是开放的。后来才确认Windows 防火墙默认会拦截 ICMP 协议ping 不通根本不能说明主机不在线必须用 TCP 连接去验证端口。nc -zv 10.10.20.10 445这个命令会尝试与目标的 445 端口建立一次真实的 TCP 连接如果端口开放会立刻返回成功信息。在隔离网段里这种轻量探测比全端口扫描更实用因为跨网段后带宽有限、延迟偏高扫描器一次发太多包反而容易触发安全设备告警。还有一个场景要注意有时候扫描显示所有端口都是 filtered其实不是目标没有开放端口而是防火墙只放行了特定来源 IP。比如数据库服务器可能只允许应用服务器网段的机器访问 1433其他来源一律丢弃。遇到这种情况我的处理方法是丢弃从攻击机直接探测的思路跳到那台被白名单信任的双网卡机器上从它发起连接。内网横向里发起连接的位置往往比目标端口本身更重要。4.3 多级转发链路的维护与保活链路越长越容易出问题。我在这套四层环境里遇到过好几次链路中断的情况原因基本都是某个中间节点的程序被系统回收了、端口被占用或者机器重启。后来我总结了几个保活经验第一个经验沿途每一台中转机器上的转发进程都不要关也不要只挂一个转发端口。我会在每层多开放一个备用端口万一主端口出问题立刻切换。第二个经验不要在一条很长的链路上同时跑太多重量级工具。比如一边挂着大型漏洞扫描器一边又在传文件、跑爆破链路很容易超时。轻量探测用扫描器拿到结果后立刻关掉只保留必要的连接。第三个经验写一个简单的本地端口检测脚本定期检测攻击机这边的转发端口是否还在监听如果发现掉线再通过应急会话把中间节点上的转发进程拉起来。这个脚本本身不复杂但能在关键时刻省下大量排查时间。5. 第四层攻坚域控前的最后一跳5.1 定位域控不要靠猜三层到四层虽然共用同一个网段但第四层的核心目标是域控制器。进入这一阶段后第一步永远是定位域控而不是盲目扫描所有主机。nslookup -typeSRV _ldap._tcp.red8.lab net time /domain echo %logonserver%第一条命令通过查询 DNS 里的服务记录来定位域控因为在正常域环境里域控会注册 LDAP 服务记录第二条命令通过向域控同步时间来判断当前网络是否属于某个域域控会返回当前可信时间源第三条命令直接查看当前登录会话的域控名称。三条结果交叉验证就能确认域控的 IP 和主机名。这种方式比单纯扫描主机名更可靠。有些内网环境里主机名并不包含 DC 字样盲扫很容易错过而 DNS 服务和域控是强绑定的只要域是健康的这个办法基本不会失手。5.2 从核心网段到域控的权限传递定位到域控之后最后一跳的路径通常是这样的先看之前从办公网抓到的域用户凭证里有没有域管理员账号。如果办公网里的某台机器已经被管理员登录过内存缓存里很可能就有域管哈希拿这个哈希可以直接在核心网段验证权限。如果没有域管凭证就退一步看当前拿到的普通域用户有没有委派权限或本地管理员权限再不行就只能用离线弱口令字典去尝试常见弱密码。这一阶段的优先级是“复用 委派 爆破”。因为域控是核心资产任何直接的漏洞利用都容易触发告警而凭证复用是环境里本来就存在的问题不一定会被监控到。靶场里模拟的就是这种最常见的情况管理员在办公网机器上登录过导致域管凭证泄漏最终被横向到域控。拿到域控权限后我习惯做一轮确认net group domain admins /domain set | findstr USERDOMAIN确认当前账户已经属于域管理员组同时确认当前会话所在的域名称无误。到这里四层内网的链路就走通了。5.3 蓝队视角每一层该设什么防一通操作下来对蓝队来说有几个非常明确的设防点。边界层要在 Web 入口前面加 WAF 或反向代理同时隐藏后台管理路径避免指纹泄露办公网层要限制管理员在普通业务机器上的登录行为尤其不能让域管账户在办公 PC 上登录核心网段要用 ACL 白名单控制访问来源而不是只封禁高危端口最后一层要重点监控异常的服务请求和计划任务创建行为。这四层里最值得投入的是蓝队重点监控域控因为从第一层打到第四层链路越长中间环节越多暴露在日志里的痕迹也就越多。进攻方最怕的不是目标漏洞少而是自己的每一步都被记录、被关联、被还原。6. 常见问题与排查技巧实录下面这个表格是我在复现四层内网靶场时遇到的高频问题以及对应的排查思路直接整理成速查表方便以后复盘现象可能原因排查办法目标主机 ping 不通但端口能用ICMP 被防火墙拦截用 nc 或扫描器做 TCP 连接探测刚抓到的密码在下一层网段失效凭证属于另一个域或账户已被改密进入新网段后重新抓取、重新验证计划任务创建失败提示拒绝访问凭据权限不够或目标计划任务服务未启动换用 WMI 方式横向并检查服务状态反弹会话执行命令乱码中英文编码不匹配在会话里切到 UTF-8或改用英文环境命令整条转发链路突然中断中间某个节点进程被清理或端口被封沿链路逐个检查跳板进程启用备用端口某端口扫描全是 filtered防火墙只放行特定来源 IP从被信任的那台跳板机器上发起连接除了表格里的这些问题我再补充一个容易被忽略的经验尽量多依赖系统自带命令少依赖大体积工具。四层内网链路带宽有限一个几十兆的工具传半天还可能被杀软拦住但 Windows 自带的命令、脚本以及系统管理接口往往才是真正可靠的手段。靶场里你可以随便传工具但在真实授权测试里文件落地越少链路越可靠。还有一个经验是关于口令策略的在靶场里我见过有人为了赶进度一次性用同一个账号连续尝试了几百个密码最后把目标账号锁死整个环境都得重置。我的建议是任何批量尝试都要控制频率和并发并且优先采用提前收集到的字典而不是现场随机生成。横向渗透比的是谁能更快找到那条可复用的凭证链不是谁的爆破线程开得多。7. 写在最后这套靶场练完之后的体会这套四层内网靶场我前后完整复现过三遍。第一遍在第三层断了原因是中间那台双网卡机器被我手滑关掉了转发进程整条链路直接瘫痪第二遍在密码喷洒阶段把办公网的一个账号锁了虽然很快解除了但那一步也让我意识到内网横向最忌讳的就是贪快第三遍顺利打穿后我又专门试了一遍全程只用系统自带命令的版本收获反而比第一次更大。我个人的体会是vulnstack 8 这一类四层内网靶场真正训练的不是某一个具体工具的熟练度而是对链路、凭证、权限这三件事的整体掌控力。Shell 拿到手只是开始能不能把它一路安全地传递到域控中间涉及大量决策。希望这篇复盘能让你在开始打红日靶场 8 之前心里有数也祝你能一遍打通、链路不断。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →