【起】
星环科技的防火墙在试点城市上线后的第四天,安全信道收到了一条新消息。
消息的格式和之前回声留下的协议完全一致——同样的加密层、同样的中继节点、同样在传输完成后自动销毁的临时会话。但发送者不是回声。回声的代号已经永久静默了,安全信道的协议标签用十六进制留着她最后一次上传的时间戳,林哲把它刻进了深网节点的根目录,一直没有删。但这条消息也不是来自之前那个复现过回声协议的未知ID。那条消息的源头至今无法溯源,NullPointer用三个月前的审计传输日志做反向碰撞都没有找到匹配的物理节点。
这条新消息的发送者署了名。
署名只有四个字——“十二楼的人”。
林哲看着那行署名,把手机放在会议桌上。围坐在桌边的核心成员同时看到了屏幕上的内容。秦慕云首先俯身过来,苏晚晴从她的位置绕到这一侧,NullPointer从工作间方向大步走过来,手里还拿着一块拆了一半的硬盘。
消息正文很短,措辞直接,没有任何多余的修饰:
“下一组目标城市清单:三个已部署网关,两个预留端口。预留端口网络配置未激活,可以抢在崔氏之前物理拆除。网关的部署位置在附件。再送你们一条消息——崔昊辰已经批准‘先知·初态’第三阶段的核心模块扩容。这个模块的名字叫‘归心’。9月15日是它的启动日期,但测试环境已经上线。你们在试点城市拆掉的那个子模块,只是它的外围探针。”
下面附了一张表。六个城市的名称、网关所在IDC机房的精确楼层和机柜号、预留端口的物理位置,以及一组技术名词——林哲一眼认出那是“先知·初态”三阶段核心模块的代号,和回声用性命换回来的那份数据资产清单上的条目完全吻合。
会议室里没有人说话。NullPointer放下硬盘,用手背擦了一下额头上沾的灰尘,凑近了屏幕逐条核对上面的IDC机房地址。秦慕云拧开保温杯的盖子但没有喝,苏晚晴把那张城市清单抄到自已的笔记本上,笔尖划过纸面的声音在安静的会议室里格外清晰。
林哲看着那行署名。十二楼的人。崔氏总部十二楼,那间铺满蓝色扫描光的机房。秦慕云曾经在那里用不到二十分钟拷贝出防火墙参数降级方案的内部备忘录,回声渗透新系统时在同一个机房的服务器底层发现了那个早在系统架构设计时就内置的物理账号。现在这个账号的操作者终于主动露面了。
“他是怎么知道这些的?”秦慕云把保温杯放在桌上,“网关的具体部署位置、预留端口的物理坐标,这些信息不在同一个系统里。要全部掌握,需要同时接入三个不同的权限域。”
“不止三个。”NullPointer调出附件里的数据结构和信息分类,迅速点开网关机柜编号对应列表,“这组数据涵盖的网络端口覆盖、IDC物理地址和设备序列号的分布精度,至少跨了四套独立权限系统。这个人要么有最高管理权限,要么在每套系统里都埋了后门。”
苏晚晴放下笔,抬起头:“他选在这个时间点露面。为什么不是上个月,不是定稿会期间?”
“因为上个月他没有把握我们会信任他。”林哲站起来,走到白板前,把四个字——“十二楼的人”——写在崔氏总部大楼旁边,和之前写下的“行业商会”“审计条款”“外部仲裁网关”并列,“定稿会期间他只通过物理账号转发了一行模糊的预警,没有署名,没有提供任何可验证的技术数据。现在他发来的是一份完整的部署清单,精确到机柜号和预留端口的工作电压。这不是告密,是投诚。”
“也可能是诱饵。”秦慕云说,“如果这份清单里有一半是真实的,另一半是陷阱呢?”
“所以要先验证。”林哲转向NullPointer,“选一个预留端口,查它的物理设备是否和清单一致。”
NullPointer已经在动手了。他选取了清单上的第一个预留端口——某省会城市商业区IDC机房七楼F区——然后通过政务内网的节点映射表做外部特征比对。几分钟后,他抬起头:“IDC机房的物业方信息和清单一致,机柜号的租赁记录没有公开。但我找到了一个间接证据——该机柜的供电改造申请三个月前提交,预留功率恰好匹配网关设备的额定功率。与清单上的网络配置未激活状态吻合。时间戳和清单上的设备序列号批次一致。”
“所以至少这一个是真的。”林哲收回视线,“其他节点还需要逐一核对,但现在我们有了一个起点。”他拿起马克笔,在那行署名下面划了一道,然后加上备注:“已验证”。接着他在签名旁边写下三个字:可协作。
“接下来要决定怎么用这份情报。”他把笔放回凹槽,转向所有人,“他给了三个已部署网关和两个预留端口的具体位置。已部署的网关需要走正式排查流程,预留端口可以提前拆除。更重要的是——他提到了‘归心’的测试环境。如果测试环境已经上线,那么‘归心’的核心模块架构可能已经在崔氏内部网络上运行了一段时间。我们需要了解它的运行结构。”
秦慕云把保温杯端起来喝了一口,然后开始写邮件草稿。她的打字速度比平时更快,键盘声密集而均匀。苏晚晴用城市分布图和已掌握的数据中台升级节点做起了交叉比对,她的铅笔在纸面上一行一行地画着连线,每一条连线都标注着排查优先级和时间窗口。
林哲把目光从那份名单上移开,重新看着安全信道的界面。
署名静静地挂在对话框里,简单得看不出任何情绪。他心里清楚,“十二楼的人”这四个字背后藏着的不仅是一个身份。它藏在崔氏最核心的服务器底层多年,先于回声的脚本发现后门,先于秦慕云在凌晨机房拷贝出内部备忘录。而在此刻之前,没有人知道他的存在。
这是第一次,在暗处替他们守着背面的人,露出了他的名字。
NullPointer显然也想到了同一层。他靠回椅背,对着屏幕轻轻吹了一声口哨:“上次秦慕云从十二楼拷贝回来的源凭证,从物理接入点看,出口路径经过一个我们当时无法解释的权限跳板。现在回头看——八成是他替我们放的梯子。”
秦慕云打字的手停了一下。她没有抬头,只是说:“那就回他一条,确认已收到。告诉他预留端口今天开始排查。”
“还有。问他知不知道‘归心’测试环境的具体入口。”林哲对NullPointer说。NullPointer点点头,手指落在键盘上,加密消息瞬间生成,自动附加了只可验证一次的签名指纹。
发送。
然后就是等待。
【承】
十二楼的人的消息来得很快。关于“归心”测试环境的回答比林哲预期的更详细,详细到让他意识到这个内线不仅仅是在送情报,而是在给他们上崔氏核心系统的解剖课。
“归心”的测试环境不在崔氏总部,甚至不在崔氏任何一处登记的办公场所里。它挂在一个公共云计算平台的企业级租户下面,租户身份用的是第三方的名义——一家做智能物流的科技公司,但实际上早已被崔氏收购控股。测试环境的功能模块分三部分:行为预测引擎、风险评分模型、干预建议系统。三套系统共同构成一个完整的预测性社会控制链条——行为预测引擎负责从海量数据中标记“潜在风险个体”,风险评分模型把这些标记转换成可排序的分数,干预建议系统则自动生成处理方案,从限制消费到冻结账户,从限制出行到建议约谈。
“这套系统如果正式部署,就不再需要人工审核干预建议。算法直接从预测到执行,中间不经过任何法律程序。这就是‘归心’的最终形态——用数据预测替代法律判断。”
林哲把这条信息逐字逐句读完之后,秦慕云的手放在键盘上久久没有动。苏晚晴靠在椅背上,把眼镜摘下来,用拇指和食指轻轻捏着鼻梁。NullPointer转向林哲,他的眼神里不再有刚才破解网关位置时的兴奋感。
“‘归心’不是监控系统。监控系统是看已经发生的事。‘归心’是在事情还没发生之前就做出裁决。”
林哲没有接话。他站起来走到窗边。此刻的窗外阳光明亮,城市正在照常运转。但在某处公共云的服务器集群里,一套能够绕过法律直接干预个人生活的系统正在测试中,距离启动日期还有不到三个月。
秦慕云已经在核对“归心”的测试环境入口和外部仲裁网关的物理位置是否同属一个通信域。她很快发现测试环境入口所用的传输协议和网关的通信协议在应用层共享了同一个加密证书。
“如果我们的防火墙截获了网关的通信请求,就能顺藤摸瓜定位到‘归心’测试环境的数据流。”秦慕云边说边把通信域图谱推送到会议屏幕上。
“那就能做反向渗透。”NullPointer立刻接上,“我不需要进它的核心。只要能截获行为预测引擎的样本输出,就能把它的预测模型特征提取出来,写进防火墙的拦截规则库。”
苏晚晴把眼镜重新戴上,打字的频率明显加快:“如果能在预言模型和干预执行之间插入一道动态验证——不是简单拦截,而是让防火墙在每一组行为预测请求发起的同时自动生成大量不可区分的混淆样本——‘归心’的预测结果就会被稀释到不具备可执行精度。它仍然能做出预测,但它永远不敢确定哪个预测是对的。”
“要多久?”
“具体要看测试环境的数据流规模和混淆算法的复杂度。我现在就可以把已经在试运行的混淆生成模型做针对性修改,针对行为预测引擎的输出特征做并行处理。回头同步给你。”
林哲听着这些对话,听完之后没有直接说“做吧”,而是先用手指在屏幕旁边轻轻敲了一下。他想起那行在深网节点底层文件里压了很久的简短文字——“星环二号的轨道倾角与加密策略”,还有伊万画在手绘图纸上的那句话:“不是为了战争,是为了不被锁住。”这一切的防线——防火墙、轨道节点、伦理审查、政策博弈——都是在筑堤。但筑堤只能让水绕开。要真正阻止洪水,必须在源头把堤坝变成一座能自我加高的活体结构。
他转向NullPointer:“开始准备反向渗透的环境。把测试环境入口的信息转给伊万一份。如果星环一号能抢在‘归心’启动之前完成在轨标定,就从轨道上对测试环境的通讯链路做物理隔离——从源头切断它的广域网同步能力。地面防火墙做混淆,轨道端做物理阻断,两套机制互为备份。”
秦慕云抬头问:“那三座已部署网关的城市怎么同步?”
“按之前试点城市的流程。”林哲说,“你发排查预警,同步清单上已核实的物理地址。何处长那边可以请张维为教授和路副院长从政策层面支持协调。两个预留端口交给NullPointer和伊万——NullPointer负责远程清除网络配置预留项,伊万实地确认物理设备的拆除。”
“已经在联系了。”秦慕云把刚写好的一封协调邮件点击发送,“用试点城市的取证报告做附件,直接发给三座城市数据管理局的技术处。何处长愿意在前几天的例行会议上替我们背书。”
伊万从实验室走过来,已经听见了关于预留端口物理拆除的安排。他翻了一下自已手边的工作日志,把两个预留端口的地址、机柜号和物业联系电话抄下来。然后他抬头看向林哲:“现在还剩一个问题——清单里这些信息都是‘十二楼的人’提供的。如果他暴露了,清单上的预留端口随时可能被崔氏提前激活。我们需要尽快行动。”
“预留端口什么时候能清完?”
“最快两天。”
“那就两天。”
伊万点头,把地址写在工作日志上,然后转身往实验室走。走到一半他又回头:“深圳那批低温耦合器通过了全部环境模拟。我在写最终测试报告。”
“报告完成后直接归档。星环一号的发射窗口还需要你亲自盯着。”
“明白。”
下午。安全信道又亮了。
十二楼的人发来了第三条消息。这一次很短。
“你们在试点城市拆掉的那个子模块,崔氏安全部已经发现被拆了。他们启动了一次内部安全审查,试图找内鬼。审查目前集中在技术部和运维部,还没有扫到十二楼。但窗口期会缩短。预留端口的激活程序可能提前。我在内部安全审查的名单上看到了星环科技的名字——你们被标记为‘需要深度监控的外部威胁实体’。”
林哲把这条消息读完之后,抬起头。NullPointer坐在对面,停下了敲键盘的手。
“‘深度监控的外部威胁实体’——这个措辞不是安全部的内部用语,是‘先知·初态’的资产分级标签。”林哲转向NullPointer,“上次数据库扫描之后,你和他们对峙了多久?”
“从它完成对星环服务器的完整测绘到现在,至少过了好几周。这段时间它没有发出大流量攻击,我以为它在等二阶段的正式部署。”NullPointer把后槽牙里那颗薄荷糖轻轻咬碎,“现在看来它不是在等,是在建数据库。它花了几周时间把我们所有已知的技术特征、行为模式、资产关联全部分类归档,然后给我们贴了个标签。”
“‘外部威胁实体’——它的威胁评估框架已经启动了。”
会议室里没有人说话。秦慕云把韩若冰新修订的《防火墙标准合规审核要点》文档放进加密共享,手在半空停了一下。苏晚晴从屏幕上抬起头,摘下耳机。伊万停下脚步,手里还攥着那张写着预留端口地址的便签纸。
林哲看着屏幕上那行字,想了片刻,然后让NullPointer把从试点城市拆回来的子模块和测试环境入口做一个溯源分析——他想知道这些被分在不同资产类别里的技术组件,在“先知·初态”架构内部是不是共享同一个感知模块。如果是,那就意味着它不是孤立地看防火墙或轨道节点,而是在把星环科技当成一个整体来进行威胁建模。它能学习他们的防御模式,能预测他们的技术演化方向。
NullPointer沉默了几秒,罕见地没有发表评论。他只是把反向渗透的准备环境从一台虚拟机扩展到了两台物理隔离服务器,然后在工作日志上把这件事排到了优先级最高的位置。
苏晚晴把混淆模型的框架重新打开,在对抗样本生成器的备注栏里写下了“归心·行为预测引擎·干预链路阻断”。
秦慕云站起来走到窗边,看着远处城市天际线上升起的薄薄暮色。“所以他给我们送来的不仅是网关清单,也是崔氏内部安全审查正在逼近他的时间线——他提前动了,是为了让我们能赶在他被锁定之前,拿到所有关键节点的坐标。”
“所以他才署名。”苏晚晴也站了起来,“他完全可以像上次一样匿名发出预告,但这次他留下了署名。这等于在崔氏内部网络里留下了一条明码——他不再躲在权限外壳后面,他选择了立场。”
会议室的光线渐渐暗下来。窗外的晚霞正被灰蓝色的云层吞噬,城市的灯火开始一层一层地亮起来。
林哲回到白板前,拿起板擦把之前画的几条分支线擦掉,然后重新画了一张简图:左侧是已部署网关和预留端口,右侧是“归心”测试环境,中间连线标注着共享加密证书和通信域重叠范围。他在连线最薄弱的位置写下一个时间点——两天。然后在上方写下“十二楼的人”,标注:“内部安全审查窗口期。优先行动。”
“他是我们唯一的内部情报源。”林哲转过来看着团队,“也是崔氏现在最危险的人。”
“那我们就快一点。”秦慕云把刚收到的几封城市管理局回复邮件转发给何志鸿,“省得他被抓到之前,我们还没清完他送出来的名单。”
【转】
接下来的两天,星环科技以极高的效率运转着。
NullPointer对两个预留端口实施了远程清除。他通过政务内网的传输协议找到了预留端口的网络配置接口,用系统管理员在端口注册时留下的原始模板注入了覆盖指令。整个过程不到四十分钟。两个预留端口的网络配置被彻底清空,物理设备被标记为“未分配”,对应的IDC机柜供电申请也被同步撤销。秦慕云用试点城市的取证报告向机柜物业方发函确认,对方在几小时后回函签收了设备注销单。
伊万带着小周实地核查了其中一个预留端口的物理机柜,确认设备注销。
同时,秦慕云完成了对三座新目标城市数据管理局的排查协调。试点城市的成功部署和网安支队的取证报告成为最好的敲门砖。三座城市的技术处在两天内全部回复确认,承诺在一周内启动本地接口排查。
苏晚晴和NullPointer同步推进防火墙第九版的升级。她把试点城市部署期间获取的全部网关绕过特征、子模块触发逻辑和外部仲裁查询的加密签名样本,打包成一个扩展训练集,输入对抗样本生成器。NullPointer把它挂进防火墙核心框架,让生成器在正常数据流和可疑握手请求之间建立动态混淆模型。到第二天晚上,第九版框架跑通了第一轮测试——在仿真环境中,网关的绕行路径被拦截,精度超过先前的试跑预期。
张维为教授通过路副院长转来一份标准委会议的议程更新:防火墙强制性标准的提案已列入正式议程,提案附件包括了试点城市部署报告、何志鸿的审计条款来源说明以及伦理审查委员会的最新认证文件。会议将在两周后举行。
林哲把这些进展一项一项地记在白板上。当他写下“第九版测试初步通过”时,安全信道再次亮起。
十二楼的人发来了第四条消息。
“内部安全审查范围已扩大。运维部一名管理员被调离,技术部两个团队被拆分重组。他们开始查物理账号的登录记录。我的窗口还剩一周左右。网关还有几处遗漏节点不在之前清单里。现在发给你们。另有两个人即将进入高危区——一个叫葛家栋的退休财务,崔氏已重新关注他的离职材料;一个叫何志鸿的老委员,他的回避声明即将被翻案重审。保护他们。”
附件的遗漏节点清单上写着两个之前未被发现的网关位置,都藏在非省会城市的数据中心里,规模比之前的小,但有特殊用途——专门用于测试跨省政务数据调用的接口,连接的端口能绕开省内防火墙直接访问省级政务云。
“跨省接口。”NullPointer调阅完补充数据之后陈述道,“这些遗漏节点不在之前那批外部仲裁网关的网络拓扑里。它们不经过省内防火墙,直接走省际专线。如果被激活,崔氏能从省级政务云一路向下访问到区县数据库。”
秦慕云已经在查这两个城市的联系方式。她记下对接人,同时把葛家栋和何志鸿的名字标注到另一份保护清单上:“何志鸿那边我联系路副院长,让他通过内部渠道通知。葛家栋需要何处长出面——他在金融体系内还有老同事能转达。”
苏晚晴看着新增的跨省网关标注,把自已笔记本上新画的防火墙升级参数对比表往桌边推了推:“如果跨省网关不经过省内防火墙,意味着现有防火墙的检测域还需要再外扩一层——第九版的对外握手检测需要把省际专用接口的信令特征也纳入训练集。”
“那就扩。我替你搭新的仿真环境。”NullPointer把键盘往前一推,“但得等到明天凌晨——今晚我要先把这两个遗漏节点的远程清除做完,赶在内部审查的窗口关闭之前。”
林哲把遗漏节点补充进白板上的清除进度表,同时在葛家栋和何志鸿的名字旁分别标注了保护对接人。然后他把全部未读情报做了汇总,用加密简报发给了张维为教授和路副院长。
会议室里的时钟指向凌晨一点。窗外城市的灯火已经稀疏,但十六楼的灯光还亮着。NullPointer开始做新节点的远程清除准备,苏晚晴把省际接口的信令特征分析模板导入她的数据转换工具,秦慕云拨通了路副院长的晚间联系号码。
十二楼的人送来的每一条情报,都在以更快的速度转化成星环科技的实际行动。但他的窗口期也在逐日收窄。那一行简短的署名像一面倒置的沙漏,细沙正从窄口匀速滑落。
【合】
两个遗漏的跨省网关在距离预定时间还剩数小时时被远程清除。
NullPointer在凌晨完成了最后一个节点的网络配置注销。他靠在椅背上,双手离开键盘,看着屏幕上两排绿色的“已清除”字样,长长呼出一口气,然后侧过身,对守在会议室里的秦慕云说:“他送来的清单全部清完了。一个不剩。”
秦慕云合上电脑,把给六座城市数据管理局的排查确认函归档。她和衣在沙发上躺下,闭眼之前对林哲说了一句话:“凌晨四点。休息两小时。”
林哲靠在椅背上,用手揉了一下眼眶,然后走到白板前,把所有标注为“已清除”的节点一个个圈掉。当最后一个被圈掉时,他轻轻放下了笔,静立了片刻。
窗外,天边的灰青色已经开始渗入凌晨的暗蓝。这座城市即将迎来新一天的日出,而大多数市民永远不会知道,在过去七十二小时里,有人拆掉了六座城市数据中心里整整一层隐藏的网。
安全信道的界面还亮着。十二楼的人的最后一条消息停留在对话框里。林哲打了几个字:“已清除。两位老人已派人保护。你的窗口还有多久?”
回复在破晓时分到达。很短。
“一周左右。内部审查已经在查十二楼权限日志。下次联系不一定能及时回复。你们继续。9月15日之前,不要减速。”
下面还有一行。
“如果我再也没发消息,找崔氏总部地下二层。那里有‘先知’的完整源代码。”
林哲把这条消息看了三遍,然后抬起头,望向他身边这些仍在各自位置上工作或短暂休息的人。NullPointer在工作间的玻璃隔断里睡着了,苏晚晴的办公室还亮着灯,键盘声一下一下,是她还在给第九版的省际接口信令特征模板补最后几组数据。秦慕云坐在沙发上翻看路副院长刚发来的标准委议程修订稿,手边那杯茶已经完全凉了。伊万在楼下货梯口打来电话,语气压抑着明显的激动:“星环一号所有部件完成封装,等待转运。”
他站起来,慢慢走到窗边。不知道什么时候又飘起了细雨,淅淅沥沥地打在玻璃上。远处金融街的航空障碍灯在灰色的晨雾中保持着恒定的频率,明灭交替,一盏接着一盏,像某个正在默默等待的倒计时。
距离9月15日,还有七十八天。
(本章完)