凌晨两点,攻防演练群里突然炸了锅。蓝队监控大屏弹出一条高危告警,一台被标记为“低风险”的闲置业务系统在凌晨一点四十分出现了来自外部的异常登录,三分钟后开始向内网发起扫描。红队只用了一个几乎没人维护的边界接口,就完成了打点。这不是电影情节,是我在多次攻防演练中见过至少五次的剧本。
所谓打点,就是红队拿下第一个立足点的过程;所谓断后,是蓝队在被突破之后如何识别、遏制和反制。一句话概括攻防胜负的走向:打点决定进攻的起点,断后决定防守的底线。这篇文章不聊书面理论,只拆解实战里真正决定成败的内网攻防技战术——红队如何选目标、破边界、横向移动、藏持久化,蓝队如何看告警、捞日志、做隔离、清残余。适合刚接触红蓝对抗的初学者,也适合已经参加过多轮演练的中级从业者用来对照自己的打法盲区。
1. 打点前的信息侦察:资产暴露面与交战规则
打点不是从发一个payload开始的,而是从决定“打谁”开始的。红队真正强的地方,往往不是某一个漏洞利用写得有多漂亮,而是能在茫茫资产中找到那个“蓝队自己都不知道”的入口。这一步叫资产测绘,也叫暴露面分析。
1.1 红队眼里的资产清单和蓝队手里的资产台账
先说一个我在多次演练里的体感:红队手里的资产清单往往比蓝队手里的还要全。
为什么?因为红队的测绘逻辑和蓝队的台账逻辑完全不同。蓝队的资产台账来源是制度化的——上线审批、IP地址申请、域名备案、设备入网登记,听着很规范,但攻防演练开始的时候,总会有几台无人认领的临时服务器、几个废弃的子域名、一套为了赶项目临时搭建的测试环境没进台账。这些就是典型的“影子资产”,也是红队打点的首选目标。
红队做资产测绘,通常从四个维度出发:
- 域名与子域名:通过证书透明日志(CT Log)、子域名爆破、DNS历史记录收集目标公司的所有域名入口。
- IP与端口:对收集到的域名解析出的IP段、以及目标公司公开的IP段进行全端口探测,识别开放的高危服务和端口。
- Web指纹:对每一个Web资产做指纹识别,确定中间件、框架、CMS、版本号,快速筛选出有已知漏洞的组件。
- 云资产与第三方接口:目标公司在公有云上的存储桶、对象存储、CDN源站、以及和第三方供应商对接的外网接口,这些经常是防守方覆盖的盲区。
这个阶段属于纯粹的“看”,不需要触发任何攻击动作。但蓝队如果平时不建立自己的暴露面清单,红队在这个阶段就已经赢了一半。
1.2 实战里最高效的测绘组合拳
我不建议一上来就拿着Nmap对全端口做重量级扫描,容易触发流量侧的告警,而且在攻防演练这种时间紧张的场景下,效率太低。我更习惯分三步走。
第一步,域名资产收集。用子域名枚举工具做一轮全量收集,再配合证书透明日志网站交叉验证,能拿到相当可观的子域名列表。拿到子域名之后,不要急着全部扫描,先看域名解析记录,那些解析到测试环境、内部系统、或者非标准端口的域名要重点关注。
第二步,端口服务识别。对筛选后的存活IP做端口探测,重点关注那些常见业务端口之外的高端口服务——比如8080、8443、8888、9000、7001这类管理后台和中间件控制台的端口。用下面的命令组合就能完成一轮快速的存活和服务识别:
bash复制subfinder -d target.com -all -silent | tee subdomains.txt
nmap -sV -sC -Pn -p 80,443,8080,8443,3389,445 -iL subdomains.txt -oA web_scan
第三步,指纹批量识别。在确认端口开放之后,对Web服务做指纹识别,把中间件版本、开发框架、后端语言、前端框架全部标记出来。这个过程可以有意识地用指纹识别工具来做,效率和准确率都比较高。识别完指纹之后,对照公开的已知漏洞库和PoC,就能快速圈定一批“大概率能打下来”的目标。
红队在这里有一个实战心得:优先看那些既暴露在公网、又使用了老版本组件的系统,比如还在跑Structs2、老版本Shiro、未授权访问的Nacos、以及管理后台暴露在公网的业务系统。这些目标的特点就是“防守方天天见,但没人想着去修”。
1.3 打点前必须想清楚的三个问题
很多红队新人拿到目标清单之后,第一反应就是对着最像核心系统的地址猛打,这是一个典型的错误。打点之前,至少要回答自己三个问题。
第一,这个目标打下来之后,蓝队多久能发现?如果目标在核心业务区,且流量审计和安全设备覆盖得很严密,攻击过程容易被实时捕获,那即便打下来了也很难深入开展后续动作。反之,那些边缘的、老的、没人盯的系统,打下来之后反而能安静地待很久。
第二,这个目标在内网里处在什么位置?打点不只是为了拿权限,而是为了通过这个权限进入内网,进而横向移动。如果一台边界服务器和核心业务区网络隔离,那它作为跳板的价值就大打折扣。
第三,目标的稳定性怎么样?攻防演练期间,红队打的不是一锤子买卖。如果选中的目标经常重启、有自动化巡检、或者有应用白名单控制,打完之后很快就会被发现或失效,整个攻击链就得从头再来。
所以,打点本质上是选择“一片可以持续作战的区域”,而不是单纯选择一个漏洞。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 边界突破:高概率入口与蓝队告警的捕捉窗口
资产测绘完成后进入实际突破阶段。边界突破的方式千变万化,但在真实攻防演练里,真正高频成功的入口其实就那么几条:远程接入入口的弱口令、Web组件的高危漏洞、以及钓鱼攻击。这几条路我们一条条拆。
2.1 弱口令和默认口令为什么至今没过时
先说一个很反直觉的事实:在攻防演练中,弱口令仍然是边界突破成功率最高的方式之一。不是因为红队只会用弱口令,而是因为企业边界的远程接入系统、运维管理后台、邮箱系统,这类资产的账号密码策略往往是最薄弱的。
典型的几个场景:
- 远程接入网关的管理后台使用默认账号,比如admin/admin或admin/123456。
- 运维人员为了自己方便,给某个测试账号设置了永不失效的简单密码。
- 开放的邮件系统用的是统一的初始密码规则,且长期未通知用户修改。
红队通常的做法是,先通过信息收集阶段获取到的员工姓名、手机号、工号来生成社工字典,再对远程入口做针对性爆破。很多人以为爆破会触发锁定策略,但实际上很多系统的账号锁定策略设置得非常宽松,甚至根本没开。
蓝队在这条线上的防御,核心不是加一个“强制强密码”的横幅,而是要真正去查日志。每一次失败的登录尝试都会留下认证日志,如果蓝队平时不关注这些日志,只在告警平台上等“爆破”类告警,就很容易漏掉低速率的、慢节奏的定向口令尝试。这里的关键坑在于:防火墙或者WAF只对单一来源IP的短时间高频访问敏感,而红队完全可以控制速率、变换IP来绕过。蓝队真正要看的是账户维度——某个账号在非工作时间段的登录记录、某个账号的登录来源IP是否和历史行为一致。
2.2 Web组件漏洞:从Shiro到FastJSON的攻防对抗
如果说弱口令是“碰运气”,那Web组件漏洞就是“确定性攻击”。凡是公网暴露的老版本组件,在红队手里基本等于门没锁。
以Shiro为例,只要识别到目标使用了Shiro框架,就能直接通过特定漏洞探测AES密钥。如果使用的是默认密钥,那就是一个可以直接执行远程命令的入口。类似的情况还有FastJSON的autotype漏洞、老版本反序列化漏洞、以及各种开源中间件控制台的未授权访问。红队在指纹识别阶段做过筛查后,对这些目标的攻击几乎是“按图索骥”。
蓝队在这条线上的防守,重点不在于签名库更新得有多勤——因为签名库永远慢于攻防技术迭代——而在于行为侧的检测。举个例子,一段反序列化利用的流量可能经过了编码和混淆,WAF的签名规则不一定认得出来,但当攻击者在目标上执行命令、木马上线、写入文件的时候,在行为层面会留下明显的痕迹。这些痕迹只有端点侧的安全产品才能捕捉到。
所以蓝队不要过度依赖WAF的拦截率,而是要把WAF的拦截日志、终端EDR的进程告警、以及漏洞利用后的行为日志做关联分析。我看到过多次蓝队复盘,最后发现EDR其实早就告警了,但告警在队列里躺了一整夜没人处理,等到第二天上班手工复核的时候,红队已经在内网里待了十个小时。
2.3 蓝队视角:告警是终点还是侦察起点
这是我想重点强调的一个观念转变。很多蓝队成员看到一条告警弹出来,第一反应是“怎么办,封不封IP、断不断网”。但成熟的蓝队不是这么干活的——他们把每条告警当成一次侦察的起点。
举个例子:凌晨一点有一条远程登录告警,来源IP是一个从未见过的地址,登录的用户名是一个两年没登录过的离职员工账号。初级蓝队会直接禁用账号、封禁IP,完事。高级蓝队会顺着这条告警继续挖:
- 这个账号上一次登录是什么时候?登录成功后执行了什么命令?
- 登录来源IP是否关联到其他账号的登录记录?
- 目标主机在登录前后的进程列表有没有异常变化?
- 目标主机对内网发起过哪些连接请求?
为什么这么做?因为告警本身往往只是攻击链的第一步,真正的问题在于攻击者登录之后做了什么。如果只封IP不查后效,红队换一个入口照样能进来。攻防演练中最精彩的攻防回合,往往就发生在蓝队从一条看似普通的告警里挖出了红队整个攻击链的时候。反过来,蓝队如果只会逐条响应告警,那永远只是被动接招,谈不上“断后”。
3. 横向移动:内网里每一次跳板都是一次暴露
打点成功只是拿到了入场券,真正决定攻防深度的,是从边界主机向内网核心目标移动的过程,也就是横向移动。这个阶段红队最怕的其实不是蓝队的能力强,而是蓝队在第一时间把边界入口封死,然后再以边界主机为据点做全面排查。所以横向移动的每一步,都在和蓝队的响应时间赛跑。
3.1 内网信息收集的优先级排序
拿到一台主机权限之后,红队第一步不是急着去扫网段,而是先做“安静的信息收集”。这一步的目标是搞清自己在内网里的位置,同时不制造明显的攻击噪声。
优先级最高的几件事:
- 确认当前用户权限:是普通用户、本地管理员还是域用户?有没有本地管理员权限直接影响后续提权和横向移动的方式。
- 获取网络配置:当前主机的IP地址、网段、DNS服务器、网关、域信息,判断所在网段是否接近核心区域。
- 查看本机连接:当前主机上还有哪些到其他主机的活跃会话和连接,本地ARP缓存里有哪些内网IP,这些都是潜在横向目标。
- 排查本机敏感信息:浏览器保存的密码、远程桌面连接记录、本地保存的脚本和配置文件,经常能直接翻到更高权限主机的账号密码。
这套收集动作建议用系统自带的命令完成,尽量避免一上来就传一堆工具到目标机器上,否则文件落地之后很容易触发EDR的文件扫描告警。只有在需要更详细的信息时,才考虑用一些体积小、免杀能力好的工具完成收集。
3.2 横向工具链与流量特征
横向移动的技术选型,往往取决于目标内网的具体环境:操作系统版本、开放端口、杀软类型、网络隔离策略。没有一套通吃的方案,但有几条路径在实战里最常用。
- 基于SMB的远程执行:通过SMB共享配合计划任务或服务创建在远程主机上执行命令,经典手法之一。优点是稳定方便,缺点是特征明显,尤其是创建服务这个动作,Windows会记录事件ID 7045,蓝队只要开了对应日志策略就很容易发现。
- 基于WMI的远程调用:通过WMI命名空间在远程主机上执行命令,不落地文件,相对更隐蔽,但需要目标开启WMI服务。
- 基于WinRM的远程管理:如果目标环境开启了WinRM,红队可以用现有凭据通过远程管理接口执行命令,流量特征和正常管理操作很接近,蓝队难察觉。
- 远程桌面协议:拿到账号密码之后直接远程登录,交互性强,适合需要人工操作目标的场景,但多个登录会话本身可能触发蓝队的登录告警。
下面是一张我经常在红队方案里看到的横向技术对比表,也方便蓝队反向理解自己需要监控什么:
| 横向方式 | 依赖端口 | 关键事件 | 蓝队监控点 |
|---|---|---|---|
| SMB+计划任务 | 445 | 计划任务创建、IPC连接 | 事件ID 4698/5145 |
| SMB+服务控制 | 445 | 服务创建、服务启动 | 事件ID 7045 |
| WMI远程执行 | 135 | WMI活动、远程WMI调用 | WMI日志、事件ID 5857 |
| WinRM | 5985/5986 | 远程PowerShell会话 | PowerShell日志、事件ID 4104 |
| RDP | 3389 | 远程登录、会话创建 | 事件ID 4624/4778 |
3.3 域环境下的关键路径与权限提升
横向移动的最终目标,在绝大多数攻防演练里都是同一个:域控权限。因为拿下域控,就等同于拿下了整个内网的控制权。
红队在域环境下的核心思路是“先出图,再走路”。拿到一个域用户的凭据之后,用血淋淋的工具做一次域内关系分析,把域内的高权限用户、计算机、组策略、信任关系全部拉出来,生成攻击路径图。这个图会明确指出:从当前用户到域管之间可能存在哪些路径——可能是某个域用户属于本地管理员组、可能是一台服务器上存着域管的明文密码、也可能是某个服务账号的密码与域管密码一致。
关键决策点在于:红队需要在“效率”和“隐蔽”之间做出选择。如果只追求速度,可以直接在域内全网段扫描、批量抓取哈希,但制造的大量流量和失败登录很容易被蓝队识别。如果追求隐蔽,就得依赖信息收集阶段拿到的线索,精确打击个别高价值主机,比如运维管理机、备份服务器、DNS管理服务器,逐步逼近域控。
蓝队在这个阶段的防守,核心阵地是特权账号和凭据保护。一定要部署专门的凭据保护方案、为本地管理员账号配置随机独立密码、限制域管账号的登录范围、关闭不必要的LM哈希和降级认证。演练里最可惜的情况是:蓝队布了很好的流量侧检测,结果域管账号的明文密码就静静地躺在某台跳板机的内存里,红队一路上没有触发任何流量告警,直到拿下域控蓝队才反应过来。
4. 免杀对抗与隐蔽持久化:打点之后怎么活下去
很多红队拿下一个边界主机之后,以为万事大吉,结果第二天连上C2一看,会话没了。为什么?因为忘了准备“活下去”的手段。一边是免杀,让木马和利用工具能绕过杀软和EDR;另一边是持久化,保证目标重启、进程清理之后,还能再次拿到权限。这俩是打点之后维持作战能力的双保险。
4.1 免杀的层次划分
一谈到免杀,很多新人第一反应是找一款“免杀工具”一键生成,然后上传到VT看查杀率。真实的免杀对抗远比这复杂,而且过度依赖网络扫描器来判断查杀率本身就是个坑,因为不同的企业环境和不同的终端产品配置,对同一个样本的查杀结果可能完全不同。
我习惯把免杀分成三个层次:
- 文件免杀:目标是让样本文件在落地时不触发杀软的文件扫描。常见思路包括加壳、编码、加密、分离加载器。但现在的EDR已经不是单纯查文件特征了,文件免杀只能算最基础的一层。
- 内存免杀:目标是让样本在加载进内存后不触发行为检测。很多EDR会对内存中的shellcode做特征扫描,所以直接用原版payload的“裸奔”行为几乎必死,必须做内存层面的混淆、加密、或者无文件加载。
- 行为免杀:目标是让样本的整个运行行为不要触发行为检测规则。比如在权限允许的情况下禁用某些日志记录、规避常见API的 hook、在调用敏感API之前先做无害的调用垫底。这一层的难度最高,但效果也最持久。
这里就必须提醒红队一个关键点:免杀不是做一次就一劳永逸的。演练期间终端安全产品的规则会动态更新,红队的样本也得持续迭代。我见过最稳的做法是维护一个“样本生产线”——一个自动化的构建环境,可以在几分钟内基于模板生成新的变体,保证在样本被查杀后有快速替换的能力。
4.2 持久化的常见位置与取舍
持久化的本质是“在目标机器上留一个后门,能让你随时回来”。持久化的位置选得好不好,直接决定蓝队在排查时能不能发现你。
常见持久化位置包括:
- 计划任务:创建一个定时执行的任务,周期性地拉取执行指令。
- 服务:注册一个伪装成系统服务的自启动项。
- 注册表自启动项:在Run键下写入启动命令。
- WMI事件订阅:绑定系统事件(比如开机、用户登录)触发执行,隐蔽性更强。
- 启动文件夹:对用户级持久化来说最简单直接。
选择哪种持久化方式,取决于目标的防护强度和使用频率。如果目标是蓝队重点监控的服务器,改注册表和服务这类常见位置很容易被巡检脚本扫出来;但如果目标长期无人问津,用最简单的方式反而是效率最高的。红队需要在实际操作中结合环境动态权衡。
蓝队这边,针对持久化的排查要做到“基于异常而不是基于已知”。别只盯着注册表Run键和计划任务,那些只是入门级。需要把各类自启动位置全部纳入巡检范围,对系统目录下的可疑文件、WMI事件订阅、服务名称和路径的异常变化保持敏感。
4.3 蓝队EDR的检测盲区
聊完红队视角,再从蓝队视角看看EDR这类终端安全产品的真实检测能力边界。
现实中很多蓝队把EDR当作救世主,以为装了EDR就能实时发现所有的攻击行为,这个预期是不现实的。EDR的检测逻辑本质上还是基于规则和模型的:它知道“正常”大概长什么样,但企业环境的正常行为实在太繁杂了,EDR在量产规则时必然要往“少误报”方向倾斜,这就留下了很多可以走通的缝隙。
举几个典型的检测盲区:
- 大量使用系统自带工具和脚本进行管理操作时,EDR很难区分这是运维行为还是攻击行为。
- 脚本执行时,如果代码被拆分多次、实时加载,单次行为都可能落在检测阈值以下。
- 已经具备合法凭据的攻击者,只要在权限范围内做操作,很多检测规则会直接放行。
蓝队要补这些盲区,不能只靠EDR本身,还得靠日志和人的判断。把EDR告警、Windows事件日志、DNS日志、网络流量日志一起拉通分析,做交叉验证。攻击者无论怎么隐藏行为,总会在某一个维度留下痕迹,关键是蓝队有没有建立“多数据源串联”的分析习惯。
5. 实战复盘:一次标准的红蓝攻防时间线
前面讲的都是技战术的零件,最后我用一次完整的内网攻防演练时间线把它们串起来。这个案例的细节做了脱敏,但过程框架在两个团队之间非常有代表性。
5.1 第一阶段:打点(Day 1 白天到凌晨)
红队在演练第一天上午开始资产测绘。公共资产测绘平台上扫到了目标公司三个子域名,其中一个是部署在某云厂商上的旧版协作系统。指纹识别确认该系统使用了一个存在已知反序列化漏洞的Java框架,且系统从未更新过补丁。
下午两点半,红队对该系统发起利用,成功获取到了Web服务组件的权限。因为系统运行在高权限用户下,红队直接拿到了当前主机的管理员权限。随后使用内网快速探测工具对目标本机的网络信息做了收集,确认了当前主机处于一个连通性很好的网段。红队没有急着继续横向移动,而是先落地了一个持久化任务,再通过内存加载方式直接运行了内网扫描工具。
凌晨一点,红队利用收集到的域用户凭据尝试访问内网一台备份服务器,成功。备份服务器上找到了一个包含大量账号密码的备份运维文档。红队使用这些凭据尝试登录域内的一台应用服务器,顺利拿下。此时,红队已经站在了内网的关键位置。
5.2 第二阶段:断后(Day 2 早上开始)
蓝队第二天早上开始例行查看夜间告警。最初只看到了一条关于异常登录的提醒,来源IP指向那台旧版协作系统。蓝队没有直接封禁IP,而是调取了登录前后那台主机上的进程执行日志,发现有一个从未见过的进程在短时间内对多个内网IP发起了连接。
蓝队立即对那台旧版协作系统做了隔离,同时撤销了相关账号的登录权限,并开始全网排查类似的可疑登录行为。半小时后,蓝队在前一天就失陷的备份服务器上发现了红队留下的持久化计划任务。蓝队没有直接清理任务,而是先收集了完整的证据链,然后才做了处置。
当天下午,蓝队通过排查域控的登录日志,发现凌晨有一个域管账号出现了非常规登录。蓝队迅速确认域管账号已被攻击者获取,于是在域控上强制重置了域管账号密码,并启用了额外的登录告警策略。红队失去了对域管凭据的控制,攻击链被迫中断。
5.3 红蓝双方的决策失误与教训
复盘的时候,两边都能找出自己的问题。
红队这边的失误很明显:第一,对内网扫描过于激进,凌晨时段的异常流量直接暴露了自己的行踪;第二,拿到域管账号后没有立刻更换密码或者保留后门凭据,导致蓝队发现并重置密码后,红队瞬间失去了所有高权限入口;第三,在备份服务器上的持久化任务执行痕迹太明显,被蓝队顺着计划任务直接摸到了后门位置。
蓝队这边也有问题:第一,资产台账不完整,导致红队发现的旧版协作系统根本不在蓝队的有价值资产清单里,暴露了蓝队对自身暴露面认知的缺失;第二,夜间告警响应机制不完善,机器虽然记录了告警,但没有安排实时值班人员,错过了在攻击早期遏制红队的机会;第三,账号管理策略过于宽松,备份服务器上长期存放明文口令文档,等于把红队的燃料提前备好了。
5.4 可复用的攻防技战术清单
最后整理一张我在多轮演练里反复验过的清单,按红队和蓝队分别列出来,方便大家对照自己的团队现状做查漏补缺。
红队侧:
| 阶段 | 关键动作 | 常见失误 |
|---|---|---|
| 资产测绘 | 优先找影子资产和边缘系统 | 只盯着核心系统,暴露面分析不全 |
| 边界突破 | 弱口令、老组件漏洞、钓鱼多路并进 | 单一路径被堵后没有备选方案 |
| 横向移动 | 先收集后行动,精确打击高价值主机 | 扫描太激进,流量侧被蓝队揪住 |
| 持久化 | 落多个不同位置的持久化点 | 只留一个后门,被清理后无路可退 |
| 免杀 | 样本持续迭代,内存行为免杀为主 | 一个样本用到死,被查杀后手忙脚乱 |
蓝队侧:
| 阶段 | 关键动作 | 常见失误 |
|---|---|---|
| 资产梳理 | 持续摸清影子资产,建立完整台账 | 只登记正式资产,忽略测试环境和废弃系统 |
| 告警处理 | 告警当成起点,拉长时间线分析攻击链 | 只看单条告警,封IP完事 |
| 横向对抗 | 重点监控特权账号和凭据使用 | 凭据保护缺位,域管账号无限制 |
| 持久化排查 | 多位置巡检,多数据源交叉验证 | 只查注册表和计划任务,不查内部脚本 |
| 应急响应 | 先取证后处置,避免打草惊蛇 | 发现痕迹就清,导致证据链断裂 |
我个人的真实体会是,红队打点之前要想好“怎么断后”,蓝队断后的时候要倒推“红队是从哪个入口打进来的”。攻防从来不是单边的技术表演,而是双方对同一张资产地图的理解速度之争。谁更早看清对方的行为模式,谁就掌握了主动权。希望这篇拆解能帮你在下一场演练里少踩一点别人踩过的坑。
