利奥没有立刻回答。他走进房间,把帆布包放在床上,然后转过身来面对瓦莱克。这个动作给了他大约四秒钟的时间来思考,而四秒钟对于一个曾经在十七秒内改写三个人命运的人来说,已经足够做出选择。
“我不认识詹姆斯·雷丁顿,”他说,声音平稳,“也不知道他会被审计。至于沙箱里的扫描程序——我在做课程预习。你可以查我的选课表,网络安全基础课的第二周实验就是Modbus协议分析。”
这些都是真话。在惩教中心的三年教会了他一件事:最好的谎言不是编造的,而是被精心挑选的真话。你只需要把那些对自己有利的真实碎片摆到桌面上,然后闭嘴。
瓦莱克听完,没有点头也没有摇头。她又喝了一口咖啡,然后把纸杯放在桌上,从外套内袋里掏出一个巴掌大的黑色设备,放在杯子旁边。那是一个便携式的加密通讯终端,屏幕亮着,显示着一串正在滚动的日志。
“你的选课表我查过了,”瓦莱克说,“网络安全基础课的第二周确实是Modbus协议分析。但问题在于,你在沙箱里使用的扫描脚本里包含了一组特定的设备指纹探测序列——S7-1200系列PLC的固件版本枚举、端口502的时序特征识别、以及一个针对施耐德电气设备的自定义功能码注入模板。”
她把终端转过来,让屏幕朝向利奥。
“这些内容不在课程大纲里,不在教材里,也不在任何本科级别的教学资源里。这组探测序列的特征码,与三个月前赫伯利亚半岛某台服务器上流出的工业控制系统渗透测试工具包完全一致。而那个工具包,根据网络安全局的溯源分析,原始作者是一名化名为‘幽灵’的黑客。”
房间里安静了大约三秒。
“幽灵,”瓦莱克重复了一遍这个名字,浅色的眼睛盯着利奥,“三年前在温斯罗普州因恶意破坏交通系统致人死亡被捕。未成年人,身份信息被封存。但根据联邦最高法院第10-9644号案的裁决,他在大约半年前被释放了。时间线上,和你出现在格拉斯顿的时间完全吻合。”
利奥感觉到自己的心跳在加速,但他的表情没有任何变化。这是他在惩教中心对着镜子练习了三年的能力——在一名狱警毫无征兆地朝你大喊时保持面部肌肉完全放松。此刻这个能力救了他。
“你怀疑我是‘幽灵’?”利奥说,甚至笑了一下。那个笑容的剂量恰到好处——不多不少,正好是一个无辜大学生被人当成危险黑客时应该有的困惑和无奈。“你的意思是一个联邦最高法院推翻原判释放的少年犯,现在正在格拉斯顿社区学院读网络安全专业?”
瓦莱克盯着他看了很久。那双灰绿色的眼睛像两块被河水冲刷得很光滑的石头,你看不到石头下面的任何东西。
“我什么都没说,”她最终开口,语气忽然变得比之前松弛了一些,仿佛刚才那番盘问只是一段必要的程序性表演。“你刚才的回答,我会记录在案。接下来我要说的,是另一件事。”
她把便携终端收回口袋,从同一个口袋里拿出一张折叠的打印纸,展开。上面是四张照片。
“詹姆斯·雷丁顿,六十二岁,格拉斯顿河滨大道,智能心脏起搏器故障。”她用指尖点了点第一张照片,然后移到第二张。“玛格丽特·蔡斯,七十四岁,格拉斯顿东区,智能供暖系统失控。”第三张。“德里克·尹,三十一岁,市中心公寓,智能浴缸溺水。”第四张。“阿瑟·波普,五十八岁,麦洛街,电动轮椅在十字路口突然加速冲入车流。”
四张照片,四个死人。每一张脸都被黑白印刷的网纹模糊了五官轮廓,像是被刻意抹去了一部分。
“格拉斯顿警局把四起案件全部定性为意外。他们的理由很充分:所有受害者的智能设备都有制造商记录的技术缺陷报告,没有网络入侵的直接证据,没有统一的作案手法。从任何角度看,都是四起互不相关的悲剧。”
瓦莱克停顿了一下。
“但我找到了两处联系。”
她从口袋里掏出一支笔,在打印纸的背面画了一个圈,圈里写了一个词:“匿名投票。”
“四名受害者在死亡前的一个月到三个月内,都在某些网络平台上被公开指控过——雷丁顿被指控内幕交易,蔡斯被指控在二十年前虐待养老院的老人,德里克·尹被指控是两起约会暴力事件的当事人,波普被指控在担任公司董事期间隐瞒产品致癌数据。这些指控有的经过了媒体报道,有的只是在社交平台上小范围传播,但每一个指控都伴随着大量匿名账号的集体声讨。”
“网络暴力导致意外死亡?”利奥问。
“不,”瓦莱克放下笔,“网络暴力只是水面上的泡沫。水面下有一条暗流。这四个人,每一个都在一个叫‘天平’的暗网论坛上被发起过公投。投票选项是‘清除’还是‘保留’。四起案件全部达到了执行门槛。”
她直起身,靠在椅背上。
“我今天来找你,不是因为我觉得你是凶手。我来找你是另有原因——你是格拉斯顿今年唯一一个在网络安全领域拥有特定知识储备的新面孔。你的沙箱操作记录告诉我,你知道自己在做什么。而我需要一个人帮我理解这些攻击的技术层面。雷丁顿的心脏起搏器到底是怎么被控制的?智能浴缸的防溺传感器为什么没有触发报警?电动轮椅的紧急制动为什么在那一天偏偏失灵?”
她合上打印纸,把它推到利奥面前。
“我知道你不是利奥·卡特。你是谁对我来说不重要——至少目前不重要。重要的是,下一个人会怎么死,什么时候死,而你可能是这个城市里唯一一个能在技术上提前预判攻击目标的人。”
利奥沉默了很久。窗外开始飘雪,格拉斯顿今年冬天的第一场雪。细小的白色颗粒贴在玻璃上,很快就融化成一道道水痕。
他想起三年前在法庭上,检察官用了将近两个小时向陪审团解释那些代码。她用了很多比喻——病毒、陷阱、定时炸弹。但没有一个比喻能准确描述那些代码的本质。埃文·哈里斯写的不是武器。他写的是一套框架,一套可以和任何工业控制系统对话的通用语言。武器是拿那套语言说话的人。
三年后,有人在用他的语言说话,而且说得比他更好。
“你刚才提到的设备指纹探测序列,”利奥终于开口,“那组序列确实不在任何教材里。它最早出现在三年半前一个叫‘幽灵’的少年发布的暗网帖子里。那篇帖子详细拆解了奥斯特拉联邦六座主要城市的交通信号控制系统架构。它后来被作为证据提交给了温斯罗普州法院,然后被法庭封存。只有两种人能拿到它:一是看过封存档案的人,二是——”
“二是幽灵本人,”瓦莱克接上。
利奥没有接话。他把目光从瓦莱克身上移开,看向窗外。雪花变大了,在河对面的变电站上空打着旋,那些橘色的指示灯在雪的缝隙里一明一灭,像是有人在天台上拧开了一个不断漏电的开关。
“我能看完整的案件档案吗?”他问。
瓦莱克站起来,把便携终端重新装回口袋。“档案我会发到你的学院邮箱。用的是学术合作的文件头,不会引起任何人的注意。”她走到门口,握住门把手,忽然回头。
“顺便说一句,你的假身份做得很好。如果换了别人,大概看不出来。但你在图书馆三楼查NULL_STATE的时候,调用了搜索引擎的高级语法过滤,那个语法结构里包含了你三年前在同一个搜索引擎上注册过的用户代理字符串。一个残留的指纹。”
她推开门,朝走廊里走去。
“把你的设备清理干净,利奥。下次被看到的不一定是我。”
脚步声沿着楼梯往下,渐渐消失。利奥站在房间中间,听着外面的雪落在窗台上,发出极细微的沙沙声。四张死者的照片还摊在桌上。他从头到尾看了一遍,然后看了一遍。
玛格丽特·蔡斯的死被定性为智能供暖系统故障。但如果对方用的是他们三年前一起讨论过的多级跳板攻击——先入侵电表,通过电表跳入家庭网关,再从网关控制供暖控制器——那么每一个设备的日志都只能看到上一个被入侵的设备留下的痕迹,永远追不到最初的指令来源。
德里克·尹的智能浴缸也是同样的逻辑。那款浴缸用的是和心脏起搏器同一家厂商的物联网模块。一旦进了家庭网络,就可以监听模块和服务器之间的通信,替换合法指令。
对方不是在随机杀人。对方是在用四起死亡事件编织一个更大规模的测试——测试奥斯特拉联邦的基础设施到底有多脆弱,测试警方和网络安全局的反应速度,测试每一次攻击能在公众视野里停留几天。
四起死亡只是前奏。真正的大规模攻击,目标不会是四个人。是一个社区,一条街区,甚至整座城市的水和电。
利奥把四张照片翻过去扣在桌上。然后他做了一件本该在瓦莱克离开之前就做的事情——打开了笔记本电脑,启动了那个加密通讯软件。
桌面上的文档还在。短剑留下的那句话,末尾附了一串他差点忽略掉的字符。不是文字,而是用光标在文档属性栏里嵌进去的一行元数据,十六进制编码。解码后是一个暗网地址,和一个密钥哈希值。
利奥把地址输入匿名浏览器,页面加载了将近一分钟,最后弹出一个极简的白色界面。正中间是一个输入框,提示语只有一行:请输入通行密钥。
他把短剑留下的哈希值粘贴进去。
屏幕闪了一下,进入了一个聊天室。房间里只有两个人——他和另一个ID,名字旁边显示着一个灰色的短剑图标。
“你终于来了。”短剑打出一行字,“瓦莱克走了吗?”
利奥的手指在键盘上方停住了。他下意识地回头看了一眼身后的窗户。雪还在下,街对面便利店的蓝色荧光透过雪幕照进来,把整个房间染成一片冷色调的灰蓝。
“你怎么知道瓦莱克?”他敲下这行字。
“因为她三天前也来找过我,”短剑的回复几乎在一秒之内就出现了,“她手里有一份名单。名单上有三个获释的少年黑客。你是第二个。我的排名在你前面。”
光标在屏幕上一闪一闪。
“零号也在名单上。但零号没有获释。零号从来没有被抓住。”
短剑继续打字。一行接一行,像是一道一直憋着、此刻终于决堤的话语洪流。他说三年前,在埃文被捕之后,他和零号约定同时销声匿迹。他做到了——删掉了所有社交账号,扔掉了电脑硬盘,甚至搬到了一个不通网络的小镇住了一年。但零号没有。零号在他消失后的第三个月,用他留在某个加密频道的备用联系方式发了一条消息。
那条消息只有一句话:“我找到了一种更好的方法来使用幽灵的代码。”
从那之后,零号彻底失联。直到八个月前,“清算日”组织开始在暗网活动,短剑在组织的核心代码里辨认出了零号的编程风格——那种精确到变态的缩进方式,永远用质数作为循环次数,永远不会在注释里留下任何有用信息。
“零号在格拉斯顿,”短剑说,“不是因为他想杀人。而是因为他在三年前就计划好了要在这里完成一件事。那件事的规模比雷丁顿和蔡斯的死大得多。他现在用的是我们三个当年一起设计的分布式攻击框架,那个框架如果用在城市级的供水或供电系统上——”
利奥接上了他的话。
“可以在物理层面让整座城市的痕迹消失。没有指纹,没有DNA,没有凶器。唯一能证明谋杀存在的,是代码。而代码不会说话。”
短剑沉默了很久,久到利奥以为他掉线了。然后屏幕上跳出一行新的文字。
“代码确实不会说话。但写代码的人会。我需要你的帮助,幽灵。不是为了阻止零号。而是为了在他完成那件事之前,把我们的框架从核心逻辑上彻底废掉。只有你能做到。那些代码你比任何人都熟悉——每一个函数,每一个回调,每一个你自己埋下的隐藏入口。”
利奥盯着屏幕,没有立刻回复。
外面的雪越下越大。霍洛威河对岸的变电站忽然发出一声短促的异响,像是一台变压器跳闸又重新合闸。橘色的指示灯全部熄灭了两秒,然后又亮起来,在漫天飞雪中兀自闪烁。
他把手放在键盘上。光标在输入框里跳动,像一颗等待引爆的微型脉冲。


暂无评论,来抢沙发吧!