01|凌晨 00:47,领导说:“我先休息了。”
夜已深,整栋办公楼只剩下 SOC 安全运营中心的灯还亮着。值班间的显示器切换着告警面板,交换机的指示灯闪烁着疲惫的节奏,空气中弥漫着泡面、咖啡、和压力一并蒸腾出的味道。
微信群「护网战时群」依旧热闹,每隔几十秒就跳出一条新消息:
-
蓝队:“10.10.3.23 的主机疑似被上线了,看日志不全。”
-
红队(悄悄发给自己人):“我上线成功了,先不说,等蓝队查到。”
-
厂商代表:“我们的系统无异常,建议蓝队先核实策略。”
然后,在所有人都盯着日志和抓包窗口时,突然,一条领导的消息刷了上来:
【领导】:大家今天表现不错,继续保持!我先睡了,明早见。
他还配了一张自拍,一杯柠檬水和身后的沙发—— 仿佛提醒大家:“我在家,不是你们。”
接着群里安静了。
已读:98 回复:0
群静了三秒钟,突然弹出一条点赞:
👍 @演练日报_0619_v4.pdf
那是蓝队小李刚上传的日报,他正在一边写“拦截成功”一边舔掉泡面盖子上的水珠。
他低声嘟囔了一句:
“终于走了……兄弟们,赶紧写真的那一份吧。”
另一边,红队的小王刚打穿了一台资产,正激动地截图准备发群,但手指悬在「发送」键上迟迟没动。
他看了看领导刚发的“晚安”,咽了口气,打开私聊窗口,把截图发给红队主控,说:
“先别群发了,等天亮再演播。”
办公室角落里,一个临时驻场的厂商代表蜷在折叠椅上,悄悄用小音量放着《十点半的地铁》,耳朵还贴着对讲机。看到领导走了,他松了口气,摘下耳机说:
“太好了,至少现在,出点事也不用写邮件给老板 cc 他。”
一楼的自动灯灭了,安保在楼下巡逻。
而楼上的网络还在传输,数据还在跑,攻击还在进行。只是这场攻防,真正的战斗,是在领导说完“我先睡了”之后,才刚刚开始。
02|领导在梦里,系统在梦游
凌晨 01:20, 三屏联动的大屏上突然有点异常——终端安全平台的告警频率断崖式下降。
不是攻击消失了, 而是后台服务挂了。
蓝队的小李敲了两下控制台页面,转圈。刷新,再转圈。 他嘀咕一句:“别是又死锁了吧。”
他连上后端服务器,执行 systemctl status edr-agent,显示:
Active: failed (Result: timeout) since 01:17:23
“靠,又卡死了。”
与此同时,另一个系统管理员在另一台机器上下发封禁策略——拦截一条刚刚出网的可疑连接请求。
他点下“执行”,屏幕弹窗跳出:
❌ “您无权限执行此操作,请联系管理员。”
他打开 OA 系统想申请临时权限, 页面加载 10 秒后提示:「您的会话已过期」。
他转而去联系“系统管理员”,发微信、打电话、@企业微信——无人应答。 最后看到群备注名:“管理员-李(22:30已下班)”
小李骂了一句:“那我们现在是靠缘分封禁了?”
这时驻场厂商代表也终于调试完终端代理,满脸倦容地说:
“我们这边 agent 负载高,跟不上策略下发频率,可能要先手动重启服务。”
他敲了一串命令 kill -9 $(pidof edr-agent),再执行 ./edr-agent restart.sh, 控制台挂住了。
“完了,可能 agent log 滚太大了,启动不了。”
此时,红队那边的 C2 beacon 正在以 400ms 的 jitter 延迟轻巧存活着, 心跳包穿越了厂商那个“零信任看门狗”的边界—— 没人拦它,因为策略卡在缓存区,系统崩在调度里。
红队小王观察着 beacon 链路状态,淡淡一笑:
“竟然还活着,这么多人守着,像在看我表演。”
他随手下发一条命令:screenshot。
与此同时,日志平台也在埋下伏笔。
Splunk 的页面加载缓慢,ES 的索引不断刷出红色告警:disk allocation failure。 蓝队一查,df -h:
/var/log 100% used
ElasticSearch 写不进去,Kibana dashboard 呈现不出来。
可这时候没人注意到它,大家正忙着“临时重启”“策略刷新”“日报补丁”。
驻场厂商叹了口气,说:
“这情况……建议你们日报写成‘系统运行稳定,策略已优化’,别细说了。”
小李抬头,看了看已经沉默 40 分钟的群,问道:
“你说……这些问题要不要报上去?”
厂商笑了笑:
“报了你们蓝队担责任,不报红队明天就上新闻。我建议——报个中间值。”
于是日报最终这么写:
“01:10 至 01:25,终端平台响应延迟,已由厂商配合优化策略,现运行正常。未发现信息泄露行为。”
但他们不知道的是, 就在这个时间窗口内, 红队悄悄从一台报表服务器导出了一份名为 user_auth_bak_2023.xlsx 的文件, 大小:11.2MB 时间:01:17:46 路径:/var/ftp/download/
而日志服务器, 在 01:18:03 的那一刻, 宕机了。
领导在梦里,系统在梦游,日志在溢出,红队在输出。而日报里,一切都运行良好。
03|加班,是为了让日报看起来像没出事
凌晨 02:05, 蓝队小李打开 Word 文档,文件名叫:
护网演练日报_0619_v6最终确认版(真的最后了).docx
他打开历史文件夹,里面一排密密麻麻的文档:
日报_草稿版
日报_领导要的结构版
日报_去掉红队打穿版
日报_厂商反馈版
日报_删掉敏感字眼_v3_final_final.docx
他一边改一边自嘲说:
“我们不是在写日报,我们是在写领导想要看到的世界观设定文档。”
文档第一页,标题赫然写着:
“攻防演练第二天简报(安全体系稳定,攻击防御联动效果良好)”
正文如下:
“本日攻击路径被及时识别,红队未成功入侵关键系统”
“终端平台运行稳定,蓝队快速响应”
“各厂商协同流畅,策略调整及时”
“无信息泄露,所有日志完整留存”
他一边写,一边用脚把纸箱泡面踩扁,然后从地上捡起一张工位外卖单据。
他心里清楚:
红队今天上线了三次,蓝队只识别到一次;
终端平台死过一次,日志服务器宕过一次;
厂商重启了代理三次,谁也没敢告诉甲方那几分钟的空档到底发生了什么。
真正的日报,是另一份存在桌面角落的文件:
护网_实情记录_勿外发.docx
内容朴实无华但血泪斑斑:
“凌晨01:23终端平台挂起,厂商未预警”
“红队成功上线后横向移动至开发环境,拦截失败”
“WAF策略误封CMDB接口4次,业务短暂中断”
“由于权限限制,蓝队封禁措施延迟8分钟”
“日志存储接近满载,暂未扩容,预计明早爆盘”
这份报告写得像手术病历, 但只给安全团队内部阅读, 并在文档属性中偷偷设置了「不计入审阅历史」。
厂商代表坐在对面敲键盘,一边敲一边笑:
“哥几个,我们不是防攻击的,我们是防情绪的。”
红队主控在群里发来一句:
“你们是不是又把我那条上线写成‘异常登录’了?”
蓝队老哥回他一句:
“别生气,你上线了我们就下线了。”
写到凌晨 03:50, 日报终于成稿,上传前再三检查:
删掉了“攻击成功”
改掉了“数据导出” → “疑似扫描”
把“日志缺失”改成了“日志存储状态需优化”
最后再加一句总结:
“整体联防联控能力较去年提升,建议持续投入保障体系建设。”
这时候,领导的群头像还是灰色的,没亮。
小李点了发送,长舒一口气。 他说:
“终于写完了,今天这班……又是一场成功的演练幻觉构建任务。”
厂商代表笑着补刀:
“哥,这不叫护网,这叫PPT前置式安全运营。”
你以为你在加班,是为了应对攻击;
其实你在加班,是为了让第二天的演练总结不出事。
你守的不是网络安全,
你守的是报表里的面子、安全口号的逻辑自洽、和明天不会被点名的会议顺序。
彩蛋 · 打工安全人自嘲金句合集:
“我们的工作目标不是防止黑客,是防止领导被黑。”
“我们不是安全工程师,我们是安全剧本编辑。”
“日志是演练的记忆,而我们负责删减片段。”
“我们不输出防御,我们输出摘要。”
04|复盘会上,锅从 PPT 开始飞
护网结束第二天上午 9 点整,复盘会准时召开。
会议室气压很低, 比昨晚系统的 CPU 占用还高。
全体参演人员坐在长桌边:
蓝队在左,眼神游离;
红队在右,抱臂冷笑;
厂商代表靠墙,手边放着厚厚一沓《产品优势介绍手册》。
领导坐中间,翻着 PPT,语气平静而致命:
“请解释一下这个攻击路径,为什么没有在第一时间发现?”
锅一号:红队打穿路径
蓝队小李起身,试图解释:
“我们在日志里确实发现了 beacon 信号,但当时终端策略下发失败,导致没有及时封禁。”
厂商A接口负责人立刻接话:
“我们系统是弹出告警了的,你们没响应啊。”
“而且你们也没加我们那台审计设备的微信通知群。”
蓝队安全负责人皱眉:
“你们告警弹窗在你们自己系统里,我们压根没权限登录。”
“你们配置了告警,但没配通知,这是闷声出事的自闭式联动。”
厂商A代表冷笑:
“我们设备不背锅,提醒在日志里写得明明白白。”
红队主控看不下去了,补刀一句:
“日志你们确实写了,就是没人看。我们上线两个小时,差点都下班了。”
锅二号:策略误封业务系统
领导翻到下一页:
“这里写 CMDB 被 WAF 拦了三次,影响了业务上线,谁来讲一下?”
厂商B代表抢答:
“那是蓝队自己配的策略规则,我们只提供能力。”
蓝队愣住:“我们?我们连下发入口都进不去。”
红队笑出声:“这波啊,这波是手动精确误杀。”
厂商B继续强调:“我们系统有提示风险,只是没有强提醒功能,这是客户自定义的问题。”
蓝队安全工程师终于忍不住了,开麦:
“你们能不能别老把锅写进‘功能设计’里?你们产品不行还要我们背设计哲学?”
锅三号:日报和告警不一致
领导再往下翻,说:
“日报里写系统运行稳定,怎么现在又说日志丢了、封禁失败?”
空气凝固了三秒。
厂商C代表赶紧补充:
“日报是我们协助整理的,基于蓝队提供的素材,可能语言表述偏向正面。”
红队掏出截图:
“来,我们看看‘表述偏向正面’长啥样——系统失联写成了‘响应延迟’。”
蓝队咬牙:
“你们建议的措辞是‘平台状态需持续观察’,我们就照抄了,现在也怪我们?”
厂商C代表露出职业笑容:
“我们只是给建议,最终用词是贵方决定的。我们尊重客户的表达自由。”
红队点头冷笑:“你们这个自由,真是用起来不留活口。”
全场高能时刻:口吐芬芳
领导沉默地看着大家互相甩锅,终于抬起头来,语气平静:
“所以你们的意思是……没有人负责。”
此时,一位蓝队小哥终于爆了:
“我们通宵写日报不是为了掩盖问题,是没人给我们权限、没人给我们支撑!”
厂商代表耸耸肩:“我们不是没给支撑,是你们凌晨两点才@我们。”
红队接口人咬着牙说:
“说白了,你们就是想在 PPT 里赢,现实里输。”
厂商代表回怼:“我们能不能先搞清楚谁上线的主机是你们演练名单里都没报备的?”
蓝队接口人忍无可忍:
“你踏马不就是那个凌晨推了个死策略导致所有主机断网的人?”
红队补刀:
“我当时上线完了还反手扫了你们审计端口,差点以为你们是 honeypot,结果是无人值守。”
会议室陷入短暂沉默。
终于,有人轻声感慨:
“这不叫复盘会,这叫多方互掐联动实战演练。”
会议最后谁赢了?
当然是 PPT。
所有锅都在 PPT 里被悄悄重写了措辞:
“策略响应需优化”
“告警提示尚不敏感”
“日志可用性需提升”
“权限体系尚待完善”
领导满意地点头:“下周把这版 PPT 汇报给主管部门吧。”
大家心照不宣,散会。
背后群聊里刷出一句:
“今天这场仗,不是演练,是搏命争夺‘锅的归属权’。”
05|安全日报生成器 v8.0:输入“没事”,自动生成300字演练战果
护网演练第四天,蓝队实在扛不住了。
三天三夜不眠不休,一边拦攻击一边写日报, 写着写着小李怒摔鼠标:
“能不能搞点自动化,别再让我写‘联动顺畅’了!”
于是,安全日报生成器 v8.0横空出世—— 一个由蓝队某位 Python 工程师深夜怒肝 2 小时、缝合 本地 API、结合三年护网总结语料、调用公司老版日报模板实现的“神兵利器”。
使用方法非常简单:输入: "没事" 输出:
“今日演练期间,检测到多起可疑攻击行为,蓝队快速联动响应,结合各安全厂商提供的可视化分析能力,成功封禁相关攻击源,未造成信息泄露。整体防护体系运行稳定,联动机制顺畅,日志留存完整,演练目标顺利达成。”
再输入: "差点出事" 输出:
“演练过程中出现数次高强度攻击尝试,在多方协同下及时阻断。部分系统响应略有延迟,已联合厂商完成策略优化,整体演练过程达到预期效果,展现出体系韧性与快速响应能力。”
输入: "被打穿了" 输出:
“演练过程中红队路径深入核心系统,测试我方在实战条件下的应对能力。蓝队迅速感知并追溯源头,第一时间联合厂商封堵,验证体系在极端场景下的防控效能。建议持续加强攻击面管理与自动化联防能力。”
小李调试好之后,晚上 11 点准时上线。
领导在群里问:“日报写完了吗?”
小李轻敲回车,生成器啪一下 spit 出一整页:
“演练态势整体受控,人员在岗在位,体系运行正常,攻击链条及时感知,风险点迅速处置,联动厂商及时响应,成效显著。”
他复制粘贴到 Word 中,字体统一改成仿宋,页边距 2.5cm,插入昨天的截图三张。
领导回了两个字:
“可以。”
蓝队小李瘫在椅子上,摘下眼镜,喃喃自语:
“我不是工程师了……我是一个自动生成幻觉的模版搬运工。”
彩蛋功能: 生成器还有隐藏 Easter Egg:
输入: "PPT太空洞"输出:
“为增强展示效果,已添加雷达图与三维柱状图。”
**输入: "报告太长"输出: **
“已精简为高层可读的三段式总结。”
**输入: "领导不懂"输出: **
“加入‘三点建议’格式,结尾附‘需领导重视’。”
06|结算工资时,他们说我不是正式参演人员?
护网结束的那天下午, 蓝队小李终于可以松一口气了。
他顶着三天没合眼的黑眼圈、坐公交回了家, 一边在地铁里刷朋友圈,一边翻着手机计算器:
“按照每晚值班、每日报告、每场演练、每份复盘…… 这次怎么也得结个 6000 多吧,能补下上个月的房租。”
他点开群里的那位“项目负责人”的头像,发了一句:
“哥,这边费用什么时候结啊?”
对方两分钟后回复:
“啊你是哪个单位的?”
他一下子头皮发麻,说:
“我是你们演练蓝队外包协助那边啊,从1号进场干到30号,一直在现场。”
对方回复一行字:
“啊?名单里没有你。你是不是临时增补的?我们现在只结正式参演人员。”
小李沉默了几秒,缓缓打下一行字:
“那我是不是这几天在梦里加的班?”
后来他找上合同联系人,对方说:
“你是厂商带来的临协吧?可能结款要他们走流程。”
他找厂商,厂商说:
“你不是我们这边的啊,是谁带你进来的?”
他问红队对接人,红队说:
“你不是蓝队的吗?你找我们干嘛?”
最后他问自己:
“那我算是什么?安全行业的临时用后即弃战略资源?”
群已经被解散。 原来叫【护网攻防专班演练群】的群改名为:
“资料归档勿扰✅”
他打电话给 HR,HR一接听说:
“我们结款只认名单,不认人。”
他翻开那份 Excel,发现名单最后一列写着:
“协助类人员(不计薪酬,仅发纪念证书)”
小李怒了。
他当场录了一段语音,开麦就是三连发:
“你🐎在演练现场没我人你们都下不来电梯!”
“攻防全靠我调策略、写日报、拉厂商、扛攻击,你说我不算参演?”
“你🐎演练拿了省里优秀,你发稿子的时候怎么不写‘其中一部分人员属不计薪酬背景志愿参与’?!”
他发完默默撤回。
然后改成一句话:
“哥,有没有办法补录我进正式名单?我可以不署名。”
最后,厂商群里发了一张合影: 大家笑得很开心,PPT背景写着:
“协同共筑安全长城,圆满完成护网任务”
他看着照片,圈出中间几个熟面孔, 心里默默说:
“你们拿绩效,我拿失眠;你们拿奖金,我拿经验值;你们睡觉的时候,我在线演练;你们结工资的时候,我在问我是谁。”
你不是没干活, 你只是不在他们的系统里。
你不是没参演, 你只是在他们的结算表之外。
你不是没价值, 你只是被视为“临时调剂资源”,用完就丢,绩效不留,记录不提。
“我不是安全工程师,我是护网演练的临时魂体。”
“我不是参演人员,我是你们成功路上的看不见的工蚁。”
“这个行业不缺人,只缺预算;不是不给你钱,是没打算承认你。”
07|最后,我成了红队战报里的背景板、蓝队日报里的模糊人、工资表里的缺失行
演练结束那周, 红队的公众号发了总结推文。
标题是:
“我们如何在72小时内拿下核心业务系统”
配图是红队核心队员围在白板前复盘, 我就站在右下角,手里还拿着一张临时画的攻击路径图。
但那张图没拍到, 拍到的只有我模糊的脸,和评论区里的一句:
“红队太牛了,打穿太狠了。”
蓝队也发了日报合集,汇报演练成果。
那一页 PPT 写着:
“蓝队成员快速响应、协同溯源、成功拦截多条攻击路径。”
图中标注着“应急响应组”“日志分析组”“封禁处置组”, 但没有我的名字,只有一张合照里的背影。
我站在打印机前刚拉出来那天凌晨上传的日志, 穿着拖鞋,披着外套,眼神跟夜色一样空。
厂商则直接出了官方案例报告:
“本次演练中,我司产品成功预警多个攻击行为,并协助客户完成全流程联防闭环。”
我那天凌晨三点配合他们排查规则误报、手动清除日志缓存、重启 agent 的事—— 一句没提。
他们最后写了一句:
“客户团队配合良好,响应迅速。”
我去翻了工资表,想看看至少有没有“协助奖金”。
发现自己的那一行,被命名为:
“临时协助人员-待确认”
右边备注写着:
“身份不明,待补充合同。”
再往下一行,是我前桌的那位哥们,备注是:
“已发放绩效激励 3000(参演PPT展示者)”
我那天也在现场,只是我没出现在 PPT 里。 因为我那台机器正在写崩溃恢复策略,谁拍照都没喊我。
有人说,工作没留下名字没关系,能力会留下印象。 但后来我问厂商对接,他说:
“你是哪个来的?哦……你是那个通宵协助调 WAF 的那个谁吧?”
我点头,他回我一句:
“辛苦了。你技术不错,下次有活再叫你。”
“下次”两个字,比“结算”更遥远。
我突然意识到, 这场演练里,我从没真正“存在”过。
在红队的战报里,我是静默的背景板;
在蓝队的日报中,我是“团队协助”里的无名群像;
在厂商的汇报材料中,我是“客户侧值守人员”;
而在工资表中,我连“临时”都不是,只是一行“待确认”。
牛马的身份终究被格式化成空白行
你不是没人看见, 你只是没人想记得。
你不是没贡献, 你只是没在截图里。
你不是透明的, 你只是恰好——不在名单上、照片里、合同中、绩效评语里。
你可以删我的证件、撤我的记录、砍我的预算、抹我的工时, 但你不能否认:
我也曾在这场虚拟战争里,用生命换来你日报里的‘一切稳定’四个字。
原文始发于微信公众号(攻防SRC):护网奇谈 · 牛马实录篇——日报写我拦截成功,工资说我没来过
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论