詹姆斯·雷丁顿的葬礼在格拉斯顿圣安德鲁教堂举行,那天是星期三,雨从清晨开始下,一直没停。
利奥没有去参加葬礼。他坐在社区学院图书馆三楼靠窗的位置,面前摊着一本《网络协议安全分析》,手机屏幕亮着,显示的是本地新闻网站对雷丁顿案的追踪报道。警方在初步调查后公布了更多细节:六十二岁的对冲基金经理,独居于河滨大道一栋价值四百万的智能豪宅,死亡时间大约是凌晨两点到三点之间。死因是心脏起搏器程控模块故障,导致心率异常。现场安保系统完好,无破门痕迹,无挣扎迹象。法医出具的结论是设备意外故障引发的猝死。
格拉斯顿警局发言人用了一个词——“无可疑”。
利奥把那个词在舌头上滚了一遍。无可疑。三年前他在法庭上也听到过类似的表述,当时州检察官说埃文·哈里斯的行为“无可辩解”。语言是一块可以被任意切割的石头,怎么摆放取决于谁的手在摆。
他关掉新闻页面,打开学院内部论坛的技术交流区。K1LLS_W1TCH_404的那条帖子还在,下面多了七条回复。大部分是调侃性质的——有人说“想黑SCADA系统先去把PLC编程学好”,有人贴了一个维基百科链接。最后一条回复的时间是昨晚十一点四十分,内容只有一行字:“Modbus默认端口502,认证机制几乎为零。问对问题不如问对地方。”
回复者的ID是一个黑色的头像,ID名为NULL_STATE。
利奥盯着这行字看了大概三十秒。他知道自己不该点进这个人的主页,不该查看他的发帖历史,不该在搜索框里输入NULL_STATE加上Modbus作为关键词进行检索。他正在做的每一件事都在偏离利奥·卡特应该保持的生活轨迹,但他的手在键盘上移动的速度比他的理智更快。
NULL_STATE在论坛上留下的痕迹不多,但每一条都精准得像手术刀。半年前,他在一个讨论工业控制系统安全的帖子里详细解释了如何利用西门子S7系列PLC的固件漏洞进行远程读写。三个月前,他回复过一个关于城市供水SCADA网络的帖子,提到了格拉斯顿自来水公司使用的具体设备型号和固件版本。那层楼很快被删除了,但搜索引擎的快照还在。
利奥靠在椅背上,感到后颈有一阵轻微的刺痛感。这种感觉他很熟悉——就像在一个拥挤的房间里突然意识到有人在看自己。
他见过NULL_STATE提到的那个固件版本。或者说,埃文·哈里斯见过。三年前,当他还在搭建那套交通信号接管系统时,曾在某个暗网论坛上搜集过奥斯特拉联邦各地关键基础设施的设备清单。那些清单被整理成Excel表格,按城市、系统类型和潜在漏洞进行分类。埃文用了将近一年的时间完善那份文档,最终被作为量刑证据呈上法庭。
检察官当时问过他一个问题:“你是否意识到,你所整理的这些信息如果落入错误的人手中,会造成什么后果?”
埃文回答说:“我只是在整理公开信息。”
这是真话。那些设备清单确实来自公开采购公告、政府招标文件和各个市政部门的安全审计报告。但把这些碎片信息拼成一张完整的地图,需要的不是技术,而是耐心和某种偏执。埃文·哈里斯恰好两者兼备。
现在那张地图似乎被别人拿在手里了。
利奥关闭浏览器,清空了历史记录,合上笔记本电脑。窗外的雨停了,阳光从云层的缝隙里漏下来,把图书馆木质地板上磨旧的痕迹照得像一道道伤疤。他决定不再想这件事。
这个决定持续了大约三个小时。
下午四点,他来到计算机科学系的实验室。新学期还没开始,实验室里只有两个人:一个戴眼镜的女生在角落里敲代码,一个穿灰色卫衣的男生坐在靠门口的位置,屏幕上开着某个游戏界面。利奥找了最后一排的电脑,用学生账号登录。
他打开学院提供的虚拟化实验环境——一个被严格隔离的沙箱系统,供学生进行网络安全课程的操作练习。这是利奥计划的一部分:用学院的合法环境训练自己,不接触任何灰色地带。缪尔律师说过,新身份需要配上新的行为模式,任何偏离都可能引来关注。
他在沙箱里搭建了一个小型模拟网络,包括一台运行Modbus协议的虚拟PLC设备和一台充当攻击机的终端。操作并不复杂,他在惩教中心的图书馆里读过不下二十本关于工业控制系统安全的书籍,虽然从未上手实践,但知识储备已经远超多数本科生。他给自己设定的训练目标是:在三个小时内完成从信息探测到指令注入的全流程,然后去餐厅吃晚饭。
他用了四十二分钟就完成了。
太快了。他把结果窗口关掉,重新开始,这次加了一些限制条件——模拟一个带有基础防火墙和目标设备认证的环境。他放慢速度,每一步都停下来记录操作日志,像是在刻意掩埋自己的脚印。最终耗时两小时十七分钟。
就在他准备退出沙箱的时候,屏幕右下角弹出一条系统通知。
是学院内部邮件系统自动转发的安全公告:“致所有网络安全专业学生:学院网络管理团队监测到近期有可疑IP地址在校园网段内对工业控制系统协议进行端口扫描。如有任何学生在实验过程中发现异常流量,请立即向信息安全办公室报告。扫描行为的部分特征如下——”
利奥的呼吸停了半秒。
他不看也知道下面会列出什么。因为就在四十分钟前,他在沙箱里模拟的第一轮攻击中使用的端口探测序列,与那条公告中描述的异常流量特征完全吻合。
但这不可能。沙箱系统是物理隔离的,所有数据包都在封闭的虚拟网络中流转,根本不会触碰到真实的校园网络。除非——有人在监视沙箱本身。
他抬起头,扫了一眼实验室。门口那个穿灰色卫衣的男生还在打游戏,角落里戴眼镜的女生正在收拾书包准备离开。没有人看他。
利奥的手在键盘上方悬停。然后他做了一件在惩教中心时学会的事情:深呼吸,数到五,然后把所有情绪压到皮肤下面。
他关掉电脑,走出实验室,在走廊尽头的自动贩卖机买了一罐可乐。易拉罐的冰凉感让他的掌心稳定了一些。他靠在墙上慢慢喝着,同时用手机登录了一个不需要任何身份验证的匿名搜索引擎。
输入的关键词是:格拉斯顿 智能家居 死亡。
搜索结果的第一页显示,詹姆斯·雷丁顿不是格拉斯顿近半年来第一起与智能设备相关的意外死亡。三周前,一位名叫玛格丽特·蔡斯的老人在其位于东区的公寓里去世,警方结论是智能供暖系统故障导致室温在夜间升至四十二度,引发中暑。两个月前,一名年轻的程序员被发现溺亡在他公寓的智能浴缸里,死因被认为是醉酒后操作不当导致水位过高。
三起死亡事件,三套智能设备,三条“无可疑”的结案报告。
利奥把可乐罐扔进回收垃圾桶,靠在墙上的后背能感觉到砖墙透过来的凉意。他在心里做了一个决定:不查下去。他不是警察,不是侦探,不是一个需要证明什么的人。他是利奥·卡特,网络安全专业一年级新生,人生刚有第二次机会,没有任何理由把它扔进一个与自己无关的深渊。
这个决定持续了四十分钟。
他回到公寓,冲了个冷水澡,坐在床上吃了晚饭——又是速食面,加上从便利店买来的半打鸡蛋。他把笔记本电脑打开,打算看一部电影,然后睡觉。
电脑启动的瞬间,屏幕上弹出了加密通讯软件的安装提示。就是昨天他删除的那个软件。提示框显示:“检测到备份安装包,是否恢复?”
利奥没有点任何按钮。他盯着那个提示框,手指在触控板上纹丝不动。恢复安装包意味着有人在他删除软件之前就已经在系统中留下了备份。那个人有权限写入他的电脑,在他完全不知情的情况下。
提示框在十秒后自动消失了,取而代之的是桌面上一个新建的文本文档。
文档内容只有一行:
“M-Bus协议在端口502上跑的是明文,但雷丁顿家的电表用的是DLMS/COSEM协议。你查错了地方。零号不喜欢别人浪费时间。——短剑”


暂无评论,来抢沙发吧!