米兰达在水塔第四层的白板前站了整整六个小时。
白板上原本画满了电网拓扑图和攻击时间线的分析,但现在那些都被擦掉了。取而代之的是一张全新的图表——一张她用三种颜色的马克笔绘制的代码谱系树。树的根部标注着“原始代码片段(来源:闸室控制器残骸)”,从根部向上分出七条主要枝干,每一条枝干代表一种代码特征:变量命名规则、注释风格、循环结构的偏好、异常处理逻辑、内存管理方式、加密算法的选择倾向、以及代码压缩格式。
“写代码和写文章一样,”她在电话里对阿迪亚说,声音因长时间专注而带着一种沙哑的亢奋,“每个人都有自己改不掉的习惯。有人喜欢用驼峰命名法,有人坚持用下划线。有人在循环里永远用i、j、k做变量名,有人非要用有意义的名字。这些习惯就像笔迹——你可以伪装,但在足够长的样本里,你的手会出卖你。”
阿迪亚在赶往废弃药房的车上听着这通电话。车窗外的城市正在苏醒,早班公交车在空荡荡的街道上留下柴油燃烧的气味。
“你找到了什么?”
“七条枝干里有六条都指向同一个人。但你猜最有趣的是什么?不是萨米尔·帕特尔。至少——不全是。”
阿迪亚踩了一脚刹车,把车停在路边。
“什么意思?”
“萨米尔·帕特尔十年前在神庙SCADA系统中写的底层代码,和我在闸室控制器里提取到的恶意代码,在变量命名规则和内存管理方式上高度相似。这两项在代码特征分析中的权重最高。德赛的判断是对的——写这些代码的人确实参与过SCADA系统的原始开发。”
米兰达停顿了一下。阿迪亚听到她在敲击键盘,背景音里有服务器阵列那永不停歇的嗡嗡声。
“但是,”她继续说,“闸室代码里有一段异常处理逻辑——大概四十行——它的风格和萨米尔的完全不同。萨米尔喜欢用多层嵌套的if-else来处理异常,结构清晰但冗余度高。而这段代码用的是状态机模式——把每一种异常状态定义为一个独立的状态节点,用跳转表来管理状态之间的转移。这需要对工业控制系统有更深的理解,但同时也更冒险——状态机一旦设计有漏洞,整个异常处理模块就会在极端情况下崩溃。”
“所以这段不是萨米尔写的。”
“不是。这段代码的风格——我在邦政府网络安全部的档案里见过。那是六年前一起未公开的工业控制系统入侵未遂事件的调查材料。嫌疑人是北方电网的一名高级继电保护工程师,叫马赫什·拉奥。他在一次内部安全审计中被发现编写了越权访问变电站控制器的代码。他没有造成实际损害,所以没有起诉,只是被解雇了。但那次调查留下了一份详细的技术分析报告,里面有一整章专门分析他的代码风格。状态机模式,偏好使用短变量名,异常处理模块总是带有一段冗余的调试日志——这三条特征组合在一起,像指纹一样独一无二。”
“萨米尔和马赫什——他们认识吗?”
“不只是认识。”米兰达又调出一份文件,声音里的兴奋更浓了,“十年前神庙东区扩建工程的项目团队名单里,马赫什·拉奥是继电保护系统的技术顾问,萨米尔·帕特尔是电力系统首席设计师。两个人的名字出现在同一份会议签到表上至少十一次。他们还合作发表过一篇关于‘大型宗教场所电力系统冗余设计’的论文,发表在邦工程协会的内部期刊上。日期是十二年前。”
两个工程师。十年前在同一个项目中共事,后来各自被系统驱逐——一个失去了妻子,一个失去了工作。十年后,他们的代码在同一台被烧毁的控制器里融合成了一体。
“这不是一个人。这是一个团队。至少两个人——也许更多。”
“你明白这意味着什么吗?”米兰达说,“萨米尔懂电网,马赫什懂继电保护。一个人可以让电网停转,另一个人可以让保护装置不启动。他们合在一起,不是两个黑客,而是一个完整的、具备从设计到执行全链条能力的影子工程团队。维克拉姆就是被他们招募的第一批‘可用节点’——不是工程师,但懂电,能在物理层面执行他们的指令。迪帕克是第二批。论坛上那将近两千个匿名用户——他们是第三批。而这个结构的最顶端,是那两个从未在物理现场出现过的人。”
阿迪亚重新发动引擎,但手指在方向盘上停留了片刻。他想起维克拉姆日记里的那些话,想起迪帕克被抓时那张茫然的脸,想起沉默投票者们四十七秒的登录-投票-登出流程。所有人都在按下按钮,但没有人在负责。因为负责的人在最顶端,而在他们和最底层的执行者之间,是无数层被洋葱路由加密的信息传递。
“如果我们要瓦解这个结构,需要从技术层面找出马赫什和萨米尔现在在哪里,是否还活着,以及他们下一步计划攻击的究竟是医院、变电站、还是其他更不可控的目标。”他说。
“我有思路。”米兰达说,“两个人的代码在闸室控制器里融合了,但融合不是完美的——就像移植器官和原生组织之间总是有疤痕。代码的‘疤痕’就是他们两个人风格不一致的地方。给我时间,我能把这些疤痕放大——然后在系统日志里找到它们的指纹。”
阿迪亚把车停在废弃药房对面一条小巷里,但没有立刻下车。他打开笔记本,在第七十二页写下马赫什·拉奥这个名字,然后在两个名字之间画了一条线——线的两端是两段融合在一起又彼此排斥的代码,是一座神庙十年前埋下的种子,是两场相隔十年的死亡。一场死了卡薇塔,另一场——正在被投票表决。
他整理了一下思路,继续写道:“萨米尔提供系统级攻击的顶层设计——供水与电力的协同瘫痪、踩踏人群的恐慌传播模型、攻击效能的A级评分。马赫什提供继电保护层面的技术支撑——让本该跳闸的保护装置沉默,让故障信号被静默处理,让整座城市在毫无察觉的情况下被蚕食。他们的分工决定了‘秩序’这个ID的风格:既像系统架构师,又像继电保护工程师。”
他的笔尖在“萨米尔·帕特尔”的名字上停留了片刻,然后轻轻画了一个问号。如果拉维的老师真的死于蛇道,那么操控“秩序”ID的人就是马赫什;如果萨米尔还活着,那么这两个人可能一直在并肩工作,从未分离。
他推开车门,望向远处那座废弃药房的灰暗轮廓。他要在那里找到这个问题的答案。


暂无评论,来抢沙发吧!