红队测试这行干久了,你会发现一个有意思的现象:很多企业觉得自己的安全防护做得不错,等真正被红队模拟真实攻击者打一轮,往往撑不过两周。我印象最深的一次项目,目标是互联网上一家成熟的软件公司,防守方部署了终端检测与响应、下一代防火墙、主机安全类产品,理论上覆盖很全。结果是红队渗透测试切入的入口,既不是主站也不是办公系统,而是有人从云上拉起来的一个临时影印服务,弱口令加未授权访问,一天不到就成了跳板。接着就是内网横向,最终在域环境里拿到了目标系统的控制权限。
这篇文章我想把一次比较完整的红队渗透测试链路拆开讲,从入口突破、权限建立,到内网横向的关键动作和路径选择,同时结合防守方告警信息的视角,复盘哪些操作容易暴露、哪些时机适合冲锋。内容适合三类人看:正在做红队方向的安全工程师、需要理解攻击链条的蓝队防御人员,以及想评估自身安全水位、搞清楚红队到底是干什么的企业安全负责人。写的东西不求大而全,只讲实战中真实管用的那部分。
1. 红队项目启动前,先搞清楚游戏规则
1.1 红队测试和普通渗透测试的本质差异
很多刚入行的朋友容易把红队渗透测试和普通的漏洞扫描、渗透测试混为一谈,这个认知偏差会在项目里吃大亏。普通渗透测试更像一次合规体检,范围固定、目标明确、时间窗口短,大家按Checklist逐项验证,找到中高危漏洞就交差。红队测试完全不同,它的核心是模拟真实攻击者的完整行为链,不预设“这里有漏洞你去挖”,而是从攻击者视角重新审视整个企业:哪些资产被遗忘、哪些人容易上钩、哪些安全设备形同虚设。
举个例子,普通渗透测试里你拿到一个后台弱口令,上报“弱口令风险”可能就算完事。但红队拿到这个弱口令后,会继续思考能不能登录后台、后台里有没有上传点、能否借助这个点拿到服务器权限、这台服务器能不能通内网、内网里能不能找到更高价值的系统。这就是单点和链路的区别。红队考验的不只是技术水平,更是对攻击全局的掌控力,以及面对真实网络环境时随机应变的经验。
另外,红队项目通常有时间跨度,可能是两三周甚至更久,需要把“持续对抗”这个因素考虑进去。防守方不是木头,你今天扫了一波端口,明天可能就被封了IP;你今天挂了一个免杀马,后天可能就被终端安全软件提特征。所以红队打法里天然包含节奏控制和路线调整,这也是为什么红队测试对人员的要求比普通渗透测试高不少。
1.2 授权范围决定了打法的边界,红线必须画清楚
不管外界把红队描述得多玄乎,实际操作上第一件事永远是确认授权范围。合法的红队项目必须有明确的合同、授权书和具体的测试范围,这是所有后续动作的前提。作为红队工程师,应当在项目启动会上就问清楚几个问题:测试目标是否有明确的资产列表?允许使用的攻击手法边界在哪里?哪些系统属于绝对不能碰的核心业务?是否允许社工钓鱼?时间窗口和每日测试时间段有没有限制?
我见过一些新人拿到授权后兴奋过头,顺手测了范围外的资产,结果引发客户投诉甚至法律风险。红队的“红”不代表可以无边界行动,恰恰相反,红队人员必须对授权边界极度敏感。有些客户会明确在范围外标注某些系统,即使这些系统看起来明显存在漏洞,也不能去碰。这种纪律性不是保守,而是行业生存的基本素养。
除了合法的攻击预算,红队在开始前还需要和客户确认防守方的介入时机。有些项目允许全程真刀真枪,有些项目要求点到为止,发现关键路径即可停止;还有些项目会提前通知蓝队有红队入侵,但不告诉具体时间。不同的规则会直接影响打法,比如需要隐蔽推进时,每一步都要考虑会不会触发告警;而如果目的是测试防守方的应急响应能力,则可以适当高调地制造动静,观察蓝队的发现速度和响应流程。
1.3 全链路视角下的攻击路径设计
红队的价值在于完整链路,因此动手前我会习惯画一张攻击路径草图,把整个项目的推进逻辑理清楚。一条典型的红队攻击链是:外网信息收集、入口突破、权限建立与维持、内网信息收集、横向移动、核心目标控制、影响验证、报告复盘。看上去是老生常谈,但很多人做项目时容易陷在局部里,忘了最终目标是什么。
举个例子,有一次项目最终目标是验证能否获取客户核心系统的数据访问权限,但客户资产规模很大,公网入口足足有上百个。如果每个入口都花时间深入测试,一个月都不够用。正确的做法是从目标反推路径:核心系统在内网哪个网段?能访问它的前置系统有哪些?这些前置系统是否暴露在公网?有没有运维跳板机?从外网打进来后,先拿哪台主机,再横向到哪个区域,最后如何接近目标系统。所有在入口阶段的判断,都应该为最终目标服务。
这种反推思维在红队项目里至关重要。还有一点容易被忽略的是备选路径设计。真实的红队测试里,一条路往往走不通,比如你以为某台跳板机可以到达核心网段,结果网络策略拦了一道。提前设计两条以上互不依赖的路径,可以有效避免项目中期卡死。
2. 入口突破:从外网资产梳理到拿下一台主机
2.1 攻击面收敛,先画一张资产地图
红队项目启动后,第一个动作不是去某个IP上扫端口,而是做资产测绘。把目标企业暴露在网络上的资产全部摸一遍,才能真正找到突破口。这一步做得细不细,直接决定后面是轻松还是硬啃。
我会优先用空间测绘工具搜索目标主体的IP段、域名和证书信息,再结合子域名接口、证书透明日志、主域名解析记录做交叉验证。这些工具在安全圈里都很常见,关键是会搜索。很多人拿了一个主域名就开扫,扫了半天发现都是同一个CDN节点;真正有用的做法是顺着证书、子域名、历史解析、邮箱头、移动App包、甚至GitHub泄露的配置等多维度去扩展资产范围。
资产地图画完后,我会对每个资产打标签:是否暴露管理后台、是否采用了常见框架和组件、是否使用了默认端口、是否关联核心业务。打标签的过程其实是排序的过程,后面决定先打哪个目标,依据就在这张表上。我见过不少红队项目,前期资产测绘花了整个项目1/3的时间,看起来进展缓慢,实际上后续每一步都走得很顺,因为目标已经足够清晰。
2.2 入口点的筛选验证:同一个入口,后续成本完全不同
红队视角下,入口分为三六九等。同样是拿下一台主机,入口类型决定了后续横向的难易程度、暴露风险和操作成本。我通常从四个维度评估一个入口的“质量”:稳定性、权限深度、隐蔽性、连接复杂度。
先说稳定性。有些入口是通过漏洞利用拿下的,比如一个远程命令执行漏洞,如果目标系统补丁周期很短,可能第二天漏洞就被修复,入口随即失效。相比之下,通过弱口令进入的系统往往更稳定,除非管理员主动改密码。再说权限深度,拿到系统权限和普通用户权限,在后面的内网操作里是天壤之别。系统权限意味着能加载驱动、抓取内存中的凭据、读取敏感文件;普通用户权限则要绕很多弯路。
隐蔽性也很关键。使用公开的漏洞利用框架去攻击目标,容易产生明显特征,而利用业务系统自身的合法功能去操作,就隐蔽得多。连接复杂度则是指拿到入口后能否方便地继续访问内网,比如某些系统有严格的外连策略,即使你拿到了权限,也没法从目标机器主动往外连,这会极大限制后续操作。
综合这些维度,我在项目中会优先寻找以下几类入口:一是互联网上暴露的管理后台相关弱口令,二是历史遗留或未知的组件和代码漏洞,三是不需要认证就能操作的数据接口或未授权访问,四是运维相关人员复用办公密码的情况。每一类入口在实际项目中都有对应的验证思路,红队工程师要根据现场情况动态调整优先级。
2.3 从单点漏洞到系统权限,中间还有几步硬活
假设你已经找到一个入口,接下来要做的事情远不止“弹个shell”这么简单。从入口到稳固的系统权限,中间涉及几个关键动作,每一步都有讲究。
第一步是权限落地。通过漏洞或弱口令进入系统后,你需要确认当前账户的权限级别。比如通过后台弱口令登录,可能只拿到了一个Web应用层的账号,需要进一步利用文件上传、命令注入、模板注入等方式提升到操作系统层。这一步我在项目里常用的是先看目标系统运行的应用中间件版本,再确认服务器操作系统类型,然后选择合适的利用方式和权限提升手段。
第二步是权限维持。红队项目周期往往不止一天,入口打通后如果第二天就丢了,后半段没法打。常见的权限维持方式包括建立远程管理通道、创建隐蔽账号、植入计划任务、注册服务等。但我不建议一股脑全上,因为埋点越多,暴露面越大。很多时候一个可靠的通道加一个备用方式,足够支撑整个项目周期。
第三步是信息收集与数据传输。入口机器的角色、网络配置、本机口令、远程桌面连接记录、浏览器保存的密码、部署脚本里的数据库凭据,这些信息收集得越充分,后续内网横向就越有底气。红队实战里经常出现靠一台入口机的信息收集直接就拿到了域管理员的凭据,根本不需要复杂的内网攻击手段。
整个入口突破阶段,我个人最深的体会是:不要爱上一台主机,不要耗在单一技术上。如果某个入口超过预期时间仍未突破,果断切换方向,效率在红队项目里比“死磕精神”重要得多。
3. 内网横向:从立足点到目标系统的移动路线
3.1 横向开始前,内网信息收集到底优先看什么
拿到第一台内网主机后,很多新手会急着东点点西看看,实际上应该冷静下来,先回答几个关键问题:这台主机在哪个网段?当前运行的操作系统版本、域环境还是工作组?本机有没有域管理员或高权限账号的凭据缓存?这台机器可以访问哪些网段和主机?有哪些共享资源对外开放?当前账户属于哪些本地组或域组?
回答这些问题的过程,就是内网信息收集的核心。说得直白一点,红队的横向移动本质上就是“拿着钥匙开锁”的过程,而信息收集的使命就是找到钥匙和对应的锁。我常用的命令都很基础:ipconfig /all 看网络配置和DNS后缀,route print 看路由表,net user 和 net group 看账号与组关系,netstat -ano 看当前网络连接,arp -a 看最近的邻居缓存。这些命令单独看没什么,组合起来能帮你在短时间内拼出内网的基本拓扑。
除了命令采集,我还会关注文件系统里的那份“宝藏”:工作目录里的运维文档、连接记录文件、密码本、数据库连接配置文件、远程桌面客户端里的历史连接、云厂商的安全凭据文件等。这些文件往往是比命令输出更加可靠的信息来源,因为它们是业务人员在日常工作中留下的真实痕迹,红队可以直接站在业务人员的视角理解整个内网的结构。
3.2 横向移动的常用手法与适用场景对照
内网横向前提是拿到了目标机器的账号密码或哈希,横向手法本质上就是“用凭据去远程执行命令或访问资源”。我整理了一下红队和攻击者在内网横向阶段最常用的手段,以及它们适用的场景,供大家评估自己的防护水位时参考:
远程桌面协议RDP是最直观的一种横向方式。拿到目标机器的账号密码后直接远程登录,操作体验好,但流量特征明显,容易在登录日志里留下大量审计记录。WMI远程执行和计划任务远程执行这两种方式不需要开额外端口,利用系统自带的135端口和计划任务服务,适合快速执行单条命令。SMB远程执行和PsExec类工具,这两者本质上都是通过SMB的进程管理服务实现远程命令执行,适合批量操作,但会创建相应的远程服务日志,防守方如果关注该服务创建行为,很容易定位。
还有一类是面向域环境的攻击方式,比如Kerberoast、AS-REP Roasting等获取服务账号口令的方式,以及通过域控卷影副本提取域内账号哈希的方式。这类手法的共同特点是目标直指域控或高权限账号,成功后可以直接控制整个域环境,但触发告警的风险也很高。不同横向手法的选择,要结合目标环境的系统版本、网络连通性、端口开放情况和现有权限灵活决定。
有一点特别值得强调,横向移动不是越复杂越好。能用系统自带命令完成的事情,尽量不用外部工具;能用现成的合法管理工具完成的事情,不要引入带有明显特征的攻击工具。红队操作的精髓是“藏在合法流量里”,比如管理员平时用远程桌面登录服务器,你也用远程桌面,管理员用计划任务部署脚本,你也用计划任务执行命令,这样就能最大程度降低被安全设备识别的概率。
3.3 路径决策:拿哪台、走哪条、为什么
内网里目标主机往往成百上千,但红队的横向路径绝不应该是遍地开花。无头苍蝇式地横冲直撞,一方面容易被防守方发现,另一方面会消耗大量时间和精力。正确的做法是根据最终目标倒推路径,哪台主机距离目标最近、哪台主机拥有通往目标区域的网络权限,就走哪条路。
路径选择时我会考虑三个因素:网络区域可达性、账号凭据复用率和主机价值。网络区域可达性是指当前持有的主机能否访问目标网段,如果中间有防火墙隔离,就需要找一台同时能访问两个区域的跳板主机;账号凭据复用率是指当前掌握的口令能否在多台主机上使用,实际内网环境里普遍存在口令复用问题,一个办公网管理员账号可能同时能登录运维区的跳板机,这种复用关系就是天然的横向路径;主机价值则是指目标的身份,比如域控、核心数据库服务器、运维堡垒机、邮件服务器等,价值最高。
实际项目里我常用的策略是先收集当前域内账号和组信息,找到高权限账号所属的组,再看这些账号在哪里登录过,然后沿着账号登录过的机器一步步移动。这样一来路径清晰可追溯,每一步都有理由,写报告的时候也能把攻击链路讲得很透彻。这个思路总结起来就是“站在管理员的角度思考”,因为管理员怎么操作,横向路径就是怎样的。
4. 从告警信息反推横向渗透的检测与对抗
4.1 横向渗透会触发哪些典型告警特征
很多人一谈到红队就只关注攻击手法,忽略了对防守方告警信息的理解。事实上,一名优秀的红队工程师必须懂蓝队的检测思路,否则在真实对抗中活不过三天。这里我把横向渗透过程中最容易触发告警的特征点列出来,这既是给蓝队朋友做检测参考,也是给红队朋友提个醒。
先说Windows事件日志层面的典型告警。横向移动中常见的远程登录行为,对应的安全日志是登录事件类型3,如果在短时间内出现大量来自同一来源主机对多台目标主机的该类型登录记录,这就是很标准的横向移动信号。另一个高价值日志是计划任务创建事件,攻击者通过远程方式在目标上创建计划任务执行命令时会产生相应审计日志。还有服务创建事件,PsExec类工具需要在远程机器上创建服务,这个动作同样会被记录。域控上的Kerberos服务票据请求日志是多类域攻击的共同信号,尤其是短时间内出现大量服务票据请求时,极可能有人在批量获取服务账号哈希。
除了主机日志,网络层面的告警也值得关注。内网主机之间突然出现的低频大量连接,某个主机短时间内尝试访问多台主机的445、3389等管理端口,或者出现使用了可疑远程服务访问工具的网络流量特征,都可能是横向渗透的前兆。一个成熟的安全团队通常会把“主机日志分析”和“网络流量分析”结合起来,单独看某一层的告警都很容易被绕过,合起来看就能形成交叉验证。
4.2 红队如何通过控制节奏降低暴露风险
理解了告警特征之后,红队就可以针对性地控制攻击节奏,避免在横向移动阶段被快速发现。这其实是一个攻防博弈的过程,红队的操作越接近正常运维行为,被发现的概率就越低。
第一点是控制扫描和连接的速度与规模。不要一次性对几十台主机跑大范围扫描,而是把目标收敛到特定网段、特定主机,逐台验证。内网扫描的速度要比外网扫描慢得多,道理很简单,外网扫描可以解释为互联网上的噪音,内网里的异常扫描往往会被当成明确的攻击信号。第二点是减少非常规工具的落地痕迹。持久化工具、提权工具、横向工具尽量走内存加载或白名单程序,不要在内网机器上留下一堆文件,安全团队查杀可疑文件时,落盘本身就是高风险行为。第三点是利用合法的运维时间窗口。如果目标企业的运维团队习惯在夜间批量部署补丁和重启服务,红队选择在这个时间窗口操作,被注意到的概率会低不少。
当然,这些操作不是让红队去教攻击者如何躲避检测,而是从防御测试的角度还原真实攻击者的行为模式。真实攻击者在一个内网环境里待得越久,留下的痕迹就越多,红队要做的是在没有被防守方发现之前完成测试目标,这是红队测试的基本要求。
4.3 攻防双方的博弈复盘:告警信息如何反向指导横向操作
我通常会在红队项目的中期做一次“攻防视角切换”的复盘。操作一段时间后,主动站到防守方的视角,模拟蓝队在事件监控后台会看到什么:当前有哪些已经触发或者可能触发的告警?哪些操作如果在日志里被串联起来会形成一条清晰的可疑链路?如果蓝队已经开始调查,他们会优先排查哪些机器?这个复盘能帮红队纠正很多隐蔽性不足的问题。
有一次项目就是这个复盘救了整个后半程。我们前期通过入口机器在内网里连续操作,已经拿下了两台主机,正准备向域控方向推进。切换视角一看,发现那两台主机在短时间内都出现过非正常时间段的登录事件,而且是同一账号。如果蓝队按照账号关联去查,几乎等于直接找到了我们。后来我们马上调整策略,改用另一条路径,绕过这个账号,才没有提前暴露。这个复盘的价值不在于“教红队怎么躲”,而在于验证当前操作是否符合一个真实攻击者长时间潜伏的特征,如果不符,就说明打法需要调整。
对蓝队来说,这个视角同样有启发意义。不要只盯着单个告警,要把多个看似无关的告警串起来看,比如“异常登录事件+计划任务创建+多台主机同时出站连接”,这样的组合才更像真实的攻击链路。
5. 实战避坑:入口和横向阶段容易踩的坑
5.1 入口明明已经拿下了,却连不上内网
这是项目中出现频率极高的一类问题。外部入口拿下后,发现目标机器并不能主动访问内网,或者虽然能访问但在入口机上无法执行后续命令,整个链路卡在原地。出现这个问题的原因通常有几个:目标机器存在严格的外联访问控制策略,入口机器被限制在隔离区网段,只能访问特定的白名单地址;或者你拿到的入口权限不是操作系统的完整权限,而是一个受限的应用权限,只能在Web容器内操作。
解决思路是先摸清入口机当前的网络访问能力,确认它到内网哪些网段是通的。然后用入口机做跳板,把内部流量转发出来,在本地分析后再决定下一步。如果入口机确实无法访问目标内网,也不要硬扛,回到资产列表继续找其他入口。红队项目里经常出现“第一入口只起到了侦察作用,真正进入内网靠的是第二入口”的情况,这很正常。
5.2 横向工具被安全软件拦截,怎么办
内网里几乎都有终端安全产品,红队植入的横向工具很容易被杀软拦截或者触发行为告警。面对这种情况,千万不要在目标机器上一个接一个地换工具硬试,那是找死。我会先检查目标机器的安全软件类型和拦截日志,了解它到底拦了什么特征,然后调整方案:要么改用目标机器上已有的合法管理工具,要么把工具做内存加载,要么放弃工具的“通用姿势”,改用更贴合目标环境的方式执行命令。
很多时候,比工具本身更重要的是执行命令的方式。比如你可以通过计划任务调用系统的脚本程序,或者利用系统自带的远程管理接口执行命令,这些动作和正常运维行为差别很小,安全软件很难一概拦截。另外要记住一个原则:能不往目标机器传文件,就不要传文件。红队横向阶段的操作,尽量做到“命令来、结果回”,文件只存在于内存里,这样攻击面就小很多。
5.3 权限丢失后的快速恢复策略
权限维持做得再好,也有翻车的时候。管理员改了密码、安全产品清除了后门、防火墙调整导致通道中断,这些都是红队项目中的家常便饭。遇到权限丢失,我的建议是不要慌张,也不要马上用同一个手法重新尝试,那样容易被防守方守株待兔。
先检查权限丢失的原因,是账号被禁用、密码被修改,还是网络通道被断开。如果是账号问题,回到收集到的凭据库里寻找备用账号,或者利用之前建立的备用持久化通道;如果是网络问题,调整转发方式,换端口、换协议重新建立连接。如果整个入口都失效了,那就回到最初的资产地图,从其他入口重新开始。红队项目里没有“不可失去”的主机,只有“还没想到的路径”。
有一回项目就是在最后阶段丢了内网主力机器的权限,当时已经接近交付节点。我们冷静下来,沿着之前收集到的运维人员习惯,在另一台很少被安全团队关注的文件服务器里找到了新的凭据,绕了个弯重新回到了目标网络。那次经历让我彻底相信:红队真正的核心竞争力不是单一技术的熟练度,而是面对意外时的路径重构能力。
从我个人做了这么多年红队项目的体会来看,最容易被低估的往往不是技术难度,而是对整个攻击生命周期的掌控力和对防守方动作的敏感度。一个红队项目做到最后,考验的是你在海量信息里找关键路径的能力,是你在意外频出时保持冷静的素质,也是你在报告里能否把一条攻击链讲得让防守方心服口服的沟通水平。红队渗透测试这件事,技术一定是基础,但比技术更值钱的,是那些由时间和踩坑沉淀下来的“项目手感”。
如果你正准备入行红队,或者在做防守方想提升对攻击链路的理解,你可以从拆解一个简单的攻击闭环开始,比如从一台外网弱口令主机到内网文件服务器的完整路径。不要一上来就追求复杂的域渗透手法,先把基础链路走通、走熟,再逐步增加变量和对抗场景。这个内容后面还可以继续扩展的方向包括:域环境下不同攻击路径的日志关联分析、红队报告里攻击路径的可视化表达,以及对特定行业(比如金融、制造业)差异化攻击面的专项研究。每个方向都够写好几篇,后面有机会再慢慢展开。