这些年做安全服务,被问得最多的问题之一就是:红队渗透测试到底和扫描器扫一遍有什么本质区别。正好借着一次典型的授权攻防验证项目,我把从互联网侧入口一步步打到内网核心区域的完整链路拆开讲清楚。这篇文章会围绕项目整体思路、入口突破、内网横向移动、权限提升、问题排查五个部分展开,重点讲每一步的判断逻辑、工具选型和经验教训,内容偏实战。适合已经掌握基础渗透技术、想理解整条攻击链路如何串联起来的安全工程师,也适合防守方同学反向理解攻击者的决策路径。
1. 项目定位与测试策略设计
1.1 授权测试和常规扫描有本质差别
红队渗透测试不是“扫描器跑一遍出报告”这种层面的事。常规漏洞扫描是“点”的检测,看的是单个资产上有没有已知漏洞,而红队测试是“链”的推演,目标往往是一个业务结果,比如能否进入内网核心服务器区、能否拿到域控权限、能否触达核心数据库。目标不同,决定了整个项目的组织方式完全不同。
打个比方:扫描器是体检报告,告诉你哪里指标异常;红队测试是拿着这份报告,顺着最薄弱的环节真的走进大楼,看看能走到哪一层、能打开哪扇门。所以红队渗透测试更关注攻击路径的组合和影响放大,而不是单纯罗列漏洞。实际项目里,一个中危漏洞可能单独看没什么威胁,但如果能作为入口进入内网,再结合内网配置缺陷一路推进,最终影响面会成倍放大,这就是链路思维。
1.2 授权边界是动手前的第一道关卡
我见过不止一次翻车案例:拿到授权书后没仔细核对范围,对着整个网段扫描,结果把客户未纳入测试范围的业务系统扫出告警,测试直接被叫停。所以项目真正启动前的第一件事不是跑工具,而是确认边界。
一般来说要做好三件事:第一,书面授权范围清单,域名、IP段、系统、账号越具体越好,不在清单里的一律不碰;第二,时间窗口和限制条件,哪些时段可以测试、是否可以触发可能影响业务的敏感操作;第三,应急预案,测试过程中如果发现高危风险,是立即停手还是优先通知防守方,要提前约定。
这里有一条红线原则:没有明确授权的目标,再容易突破也不能碰。红队测试的成熟度恰恰体现在对边界的敬畏上,而不是技术上的炫技。
1.3 全链路测试路线怎么设计
动手之前先画路线图。典型的入口到内网链路可以拆成六个阶段:
- 互联网资产梳理,搞清入口面有哪些。
- 单点突破,通过任意一个可执行代码或命令的弱点进入边界主机。
- 内网立足,确认当前主机位置、网络区域、身份权限。
- 权限提升与凭据获取,从普通用户提升到本机管理员或更高权限域账号。
- 横向移动,扩散到更多主机,逐步接近核心目标。
- 目标达成,验证最终影响,整理证据链。
设计路线的核心是“每一步都为下一步创造选项”,而不是在某一次利用成功上止步。比如拿到一个WebShell之后,马上要思考:当前进程权限是什么?主机能不能出网?机器是否在域内?这些问题的答案直接决定下一步走提权还是走横向。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 入口突破:信息收集与边界打点
2.1 收集信息时我会优先做这三件事
入口突破能否成功,往往不是取决于单个漏洞有多严重,而是取决于信息收集阶段对目标资产的掌握有多完整。我在实战中的信息收集一般分三步走。
第一步是资产测绘。子域名收集用被动方式优先,比如证书透明度日志、公开情报库,再用字典枚举补充。拿到子域名列表后,用 httpx 批量探测存活状态,顺手抓标题和状态码。开放端口和运行服务用 nmap 做一次全端口扫描,定位高价值服务。Web 指纹识别我常用 whatweb,也可以配合 Wappalyzer 直接看目标用的是什么框架、中间件版本,这些信息直接决定后续利用链怎么选。
第二步是目录与接口探测。ffuf 和 dirsearch 是常用的目录扫描工具,重点找后台入口、未授权接口、备份文件、临时文件。很多项目入口不是靠 0day 打进来的,而是靠在目录扫描里找到一个未做访问控制的接口,或者一个存在任意文件读取的调试页面。
第三步是版本漏洞比对。把收集到的中间件、框架版本和公开漏洞信息做一次快速匹配,圈出高价值目标。这里的经验是,不要只信自动化结果,必须到页面上手工确认,因为很多指纹识别会把版本认错,导致后续选择错误的利用方案。
2.2 一个典型 Web 入口利用过程复盘
用一个典型场景来说明:某管理后台使用了一个低版本的中间件,存在文件解析缺陷,文件上传点只校验了文件后缀,没有校验文件内容。整个利用过程可以拆成四步。
第一步先确认上传接口。观察正常上传时的请求格式,记录返回结果里的文件路径。第二步上传一个验证性文件,比如把内容写成纯文本,但文件名改成允许上传的后缀组合之一。第三步访问返回的文件路径,确认文件可以被解析执行,也就是验证文件内容会被服务器当作脚本执行。第四步,确认解析成功后,再上传一个无害的探活脚本,比如输出当前用户和主机名。
这里要特别强调:在授权项目里,如果无法确认上传动作不会破坏目标数据,我不会一上来就上传完整的交互式载荷,而是先写一个不影响业务运行的探活文件。确认环境正常后再推进下一步,尽量把对业务的影响降到最低。这个习惯在真实项目里非常重要,因为客户要的是验证风险,不是制造事故。
2.3 边界服务的弱口令验证不是爆破
很多人听到“弱口令验证”就以为是挂个大字典跑爆破,其实不是。真正高效的做法是先基于目标单位的行业特点和业务属性,整理少量高命中率的口令组合,然后做一次低速度的点验。
常用点验的边界服务类型包括 RDP、SSH、数据库、Redis、运维后台等。Hydra 这类工具可以做低速验证,但关键是控制并发,避免触发锁定策略和告警。另一个容易被忽略的入口是各类管理系统遗留的默认口令,这类入口往往藏在目录扫描发现的角落里。
| 入口类型 | 常见薄弱点 | 验证重点 | 成功标志 |
|---|---|---|---|
| Web 后台 | 未授权接口、默认口令 | 登录逻辑、会话机制 | 获得业务后台操作权限 |
| 中间件 | 解析缺陷、已知漏洞 | 上传解析、命令执行 | 可执行系统命令 |
| 远程管理服务 | 弱口令 | RDP/SSH 登录测试 | 获得远程桌面或命令行 |
| 数据库服务 | 空口令、弱口令 | 远程连接测试 | 可读取业务数据 |
| 缓存/运维组件 | 未授权访问 | 直接连接验证 | 可写入或读取关键数据 |
点验阶段的核心是“先确认,再深入”,一次尝试失败不要反复重试同一策略,而是分析失败原因调整方向。花十分钟确认一个入口,永远比花两小时盲目扫描高效。
3. 内网横向移动全链路实操
3.1 立足后的第一件事:摸清环境
进入内网并不是终点,而是另一个阶段的起点。拿到第一台主机权限后,我通常不会急着横向移动,而是先做扎实的本地信息收集,搞清楚自己站在什么位置。
需要确认的关键信息包括:当前用户是谁,属于哪些本地组,系统是什么版本;本机有几个网卡,连接了哪些网段;主机是否加入域,域控地址是什么;本机的网络连接里有没有正在访问的共享资源;历史命令记录里有没有暴露密码或内网地址;浏览器保存的密码、远程桌面连接记录也值得翻一翻。
内网存活主机探测同样重要,用 nmap 的 -sn 参数快速扫一遍当前网段即可,也可以用内网快速扫描工具做更全面的端口探测。这一步的核心目的是建立一张“内网地图”,就像进入一栋大楼先看楼层图和监控位置,而不是挨个房间踹门。地图越完整,后续的横向路径选择就越从容。
3.2 提权路径的选择:先查配置错误,再查漏洞
提权是内网链路中绕不开的一环。不同系统环境提权路径差异很大,以最常见的 Windows 环境为例,常见提权方向有三类。
第一类是配置错误提权,比如一个以高权限运行的自定义服务,其可执行文件路径指向一个当前用户可写入的目录,那就直接替换该文件,重启服务后就可以拿到高权限。第二类是内核漏洞提权,但这需要先对比系统补丁安装情况,筛选可能有效的漏洞编号。第三类是令牌模拟、UAC 绕过等身份机制层面的利用,要看具体系统配置。
我的习惯是先试配置错误,比盲目打内核漏洞快得多,而且日志噪音小。Linux 环境则优先看 SUID 位文件、sudo 错误配置、可写的计划任务脚本。提权前先评估当前权限和目标需求的差距,如果当前权限已经够用,就不要为了提权而提权,尽量减少不必要的风险暴露。
3.3 凭据获取与复用:为什么哈希也能当密码
Windows 内网环境里有一个非常典型的复用场景:抓取到内存中的认证凭据哈希后,可以直接用哈希完成远程认证,不需要破解出明文密码。原因在于老的认证机制在验证身份时,直接使用哈希作为凭据,这就导致攻击者不需要知道密码原文,就能以该用户身份完成认证。
我在授权项目里验证这个点,重点看的是企业是否启用了必要的凭据保护机制。如果一台机器上缓存了域管理员会话凭据,而系统又未开启相关保护功能,那攻击链路就会大幅缩短。这也是为什么现在防守方都在推动开启凭据保护、限制本地管理员权限、对高权限账号做单独管理。对红队而言,理解这个机制比单纯记住几条命令重要得多。
3.4 横向移动里更推荐系统自带手段
横向移动不一定非要用重量级工具。很多场景下,系统自带的管理机制就足够完成移动,而且日志更接近正常运维行为,暴露风险更小。
常用方式包括:通过 net use 建立到目标主机的连接,访问对方的共享目录;使用 WMI 的远程执行接口或远程计划任务在目标主机上执行命令;远程查询目标主机上的计划任务和运行状态,判断目标是否适合作为下一跳。
举个例子,在已经获得某个域用户凭据的情况下,可以通过一条简单的连接命令尝试访问目标主机的管理共享,如果当前用户在目标主机上属于管理员组,就可以进一步创建计划任务实现命令执行。整个过程不需要往目标机器上传任何额外文件,风险控制得好很多。只有当目标网络存在明显的网段隔离时,才需要通过已控主机作为中转跳板,转发必要的访问流量,逐段推进。
3.5 从域内定位核心目标
如果最终目标是域控或核心服务器,直接在网络里瞎碰效率很低。更聪明的做法是利用域内关系分析工具绘制一张“域内权限地图”,找出从当前立足点通往目标的最短路线。
这类工具可以在目标域内收集用户、组、计算机、会话关系,然后生成可视化分析,比如某个用户对某台服务器有本地管理员权限,某个组可以远程登录某台主机,某台主机的会话里有更高权限用户的令牌。拿到这些关系后,横向路径往往一眼就能看出来。
在实际操作中,数据收集是和被测试目标交互的过程,所以同样需要控制节奏和频率。分析完成后,沿着最短路径逐台验证,走到最终目标后记录证据、整理证据链,然后立刻收手,不扩大操作范围。这一步非常考验分寸感,也是红队测试专业性的体现。
4. 常见问题与排查技巧实录
4.1 信息收集阶段踩过的三个坑
第一个坑是子域名资产遗漏。早期做子域收集时只依赖字典枚举,没有把被动来源纳入流程,结果漏掉了客户核心系统的入口。后来固定流程是:被动情报收集先行,再补字典枚举和接口信息关联,尽可能覆盖完整资产面。
第二个坑是指纹识别误判。曾经在某个项目里把某个框架的版本识别低了一个版本,据此选择了一条完全不适用的利用链,白白浪费了半个多小时。后来凡是遇到版本影响利用方式的场景,一律到官方文档或源码里手工确认,不再盲目相信单一指纹工具的输出。
第三个坑是扫描节奏失控。高并发扫描直接触发目标安全设备把来源 IP 封禁,导致后续所有操作都被动。现在我的原则是:先被动后主动、先低并发后高并发、先确认再深入。信息收集不是越快越好,而是越稳越好。
4.2 Web 利用失败的排查思路
遇到“看起来像漏洞但利用不成功”的情况,我的排查顺序通常是这样。
先看请求是否被安全设备拦截。特征非常明显的恶意请求通常会被直接过滤,这时可以尝试修改请求头、降低请求频率或者改变交互方式,让请求在行为上更接近正常访问。再看中间件版本差异。同一漏洞在不同版本上的利用链可能完全不同,必须先确认版本细节。最后看回连是否被限制。如果反弹连接建立不上,问题可能出在目标出网策略上,需要调整策略,通过已控主机作为中转做迂回,而不是反复尝试同一个方向。
4.3 内网横向过程里容易翻车的几个细节
横向移动阶段的问题往往比入口阶段更多,因为环境更复杂、干扰因素更多。
我整理过一张高频问题表,几乎每次项目都能用上:
| 现象 | 可能原因 | 排查思路 |
|---|---|---|
| 远程连接提示拒绝访问 | 当前用户对目标主机无权限 | 换用更高权限凭据,确认当前用户是否属于目标管理员组 |
| 命令执行了但没有回显 | 执行链路上有安全软件拦截 | 换用系统内置机制重新执行,避免落地文件 |
| 凭据突然失效 | 目标账号已被重置或策略限制 | 回到已控主机重新收集可用凭据 |
| 目标主机响应很慢 | 资源紧张或并发过高 | 降低并发,分批执行,减少探测频率 |
| 中转连接不稳定 | 中间链路超时或端口限制 | 改用系统自带管理服务,减少自定义中转依赖 |
这些细节单拎出来都不是大问题,但在链路中任何一个环节卡住,都可能影响整体节奏。处理这些问题的通用思路是:先确认当前环境状态,再调整策略,不要在一个方向上硬磕。
5. 实战心得与后续扩展建议
5.1 我在大量授权测试里的体会
做了这么多授权测试,我最大的感受是:红队渗透测试最值钱的不是某条命令或某个工具,而是对“下一步该做什么”的判断力。一个入口利用失败,是继续深挖还是换目标?横向移动的凭据失效了,该回退到哪一步重新收集情报?目标已经触手可及,但继续操作可能影响业务稳定性,该不该停手?这些问题没有标准答案,全靠项目经验积累。
另外,记录习惯决定了项目的最终质量。每条命令、每个时间点、每次返回结果都值得记录下来。我见过太多人项目做完了但写报告时回忆不起当时的操作顺序,最后只能含糊带过。好的记录习惯才是高质量交付的根基。
5.2 这条链路还可以往哪些方向延伸
对防守方来说,这条攻击链其实就是一份现成的检测需求清单:进程创建行为、计划任务注册、远程连接请求、凭据访问操作,都可以做成针对性的告警规则。对自动化方向感兴趣的话,可以把入口探测、信息收集、路径分析这几个环节脚本化,减少重复人工操作。
云环境下的思路差异很大,基础设施、权限模型、身份管理完全不同,域名解析、对象存储、云账号体系都有各自的攻防特点,值得单独成篇去写。
最后再分享一个小经验:真正高质量的授权测试,往往不是“打崩目标”,而是每一步都控制风险和噪声,在核心资产上给出可验证、可修复、可追踪的证据链。希望这篇拆解能给你一条可以落地的主线,也欢迎带着你的实战经历来交流。
