苏哲转过来。
“镜象节点归谁管?”
“机要处。”
这两个字落在房间里,分量不轻。市委机要处负责全市党政系统的加密文档流转,等于是信息渠道的总闸。
苏哲回到桌前坐下,从抽屉里拿出丁家成的内线号码本。他没有打电话,而是翻到机要处的编制页面,数了一下——在编人员十一人,包括处长、两个副处长和八个科员。
“有没有可能是外部入侵?”
林锐摇头:“我让产业岛的网络安全工程师初步扫了一遍,没发现外部入侵的痕迹。但他说这台镜象节点上挂了一个脚本,定时抓取文档流转系统里含特定关键词的文档摘要。脚本写得不算精密,但藏的位置刁钻——嵌在系统日志的清理模块里,不专门找,看不见。”
“关键词有哪些?”
苏哲把这六个词在脑子里过了一遍。全是光子芯片项目的内核词汇。
有人建议过拔网线——程度在电话里说的第一句话就是“要不要切断外联”。
苏哲否了。
“拔了网,线断了,人跑了。让它继续看。”
他拿起手机拨了陈默的视频。
敦煌超算中心那边是半夜,陈默还没睡,屏幕里他的脸被显示器照得发青,桌上摆着三罐空的咖啡。
苏哲用三分钟把情况讲完,最后问了一句:“能不能把这只眼睛反过来?”
陈默没有立刻答话。他皱着眉头,手指在键盘边缘来回搓了几下——这是他处理复杂问题时的习惯动作。
然后他问了三件事。
“脚本第一次出现在节点上的时间。过去三十天的访问频次。抓取字段的具体格式。”
林锐把日志投屏,陈默在那头看了大概两分钟。
“米国那套旧工具改的。我在敦煌被攻击的时候见过类似的架构,但这个版本降了级,象是二手转手过。不高级,但藏的时间长——至少三个月了。”
苏哲:“能不能在不惊动它的情况下,反向追踪它往外送数据的信道?”
“可以。更好的办法是——不光追踪,还给它换一套食物。”
陈默敲了几下键盘,调出一个框架图。
苏哲想了五秒。
“修改不能太明显。”
“不会。错别字级别的。。对方如果不拿原件逐字对照,看不出来。但每份文档的错字位置独一无二,等于指纹。”
苏哲点了一下头。
“今晚部署。”
陈默挂了视频。半小时后,盘古团队从敦煌远程接入京州市政府内网,开始构建影子文档库。整个过程不到四十分钟——文档流转系统里的四十七份涉密项目文档,全部生成了映射的带水印假版本。
与此同时,苏哲让林锐打了另一个电话。
丁家成接电话的时候语气很清醒,不象是被吵醒的。
“丁书记,有件事需要您出面。”
苏哲把机要处的情况简要说了——没提脚本,没提影子文档,只说系统巡检发现异常,需要冻结相关人员。
丁家成听完,安静了几秒。
“我明天一早叫秘书长过来,以全市文档规范化检查的名义,冻结机要处全体人员的调岗和休假。理由现成——年底了,文档整理本来就是常规工作。”
苏哲没想到丁家成反应这么快。
“这次我站前面。”丁家成在电话里加了这句。
苏哲回了三个字:“您站前面,我看后门。”
丁家成那头轻轻“恩”了一声,挂了。
接下来是等。
影子文档库激活后的第二十六个小时,陈默那边发来提醒。
一份编号为sy-031的假文档被外部服务器下载。文档内容是量产线第三轮试产的良率数据摘要,真实数据是78,假版本写的是“76”。同时,“磷化铟衬底”被替换成了“磷化铝衬底”。
陈默把下载记录的回溯路径发过来——境外服务器的地址,又是东京新宿区。
更关键的是本地端。
sy-031号文档映射的生成终端,是机要处三号办公室的一台老式台式机。使用人登记栏里写着一个名字。
苏哲把这个名字在脑子里过了一遍——不熟。他翻了翻林锐之前整理的机要处人员文档,找到了廖文斌的那页。四十一岁,京州本地人,在机要处干了九年,考核评价全是“称职”,没有任何违纪记录。
一个存在感极低的人。
程度接到消息后,十五分钟内完成了廖文斌的住址确认和手机定位。
定位显示,手机在他家。
程度刚安排了两组便衣盯上去,苏哲这边又收到林锐的汇报。
“廖文斌今天上午九点向机要处长递了病假条。诊断证明是京州第二人民医院开的,说是急性胃炎。”
苏哲拿过病假条的扫描件看了一眼。
“手机呢?”
“开着,信号在他家小区。但我打了他登记的座机,没人接。”
程度那边的便衣到了廖文斌的住处。
敲门,没人应。物业开门一看——家里空了。衣柜翻过,洗漱台上的牙刷牙膏不在。
程度的声音从电话里传出来,带着一股火气。
“手机扔在茶几上充着电。人跑了。”
苏哲挂了程度的电话,看了一眼墙上的钟。晚上七点四十。
廖文斌上午九点请的假,手机留在家里,说明他最晚在今天白天就已经离开住所。如果是中午走的,到现在已经过去七八个小时。七八个小时,开车足够到省界。
“查他名下的车。”
林锐三分钟内调出来:“一辆白色大众朗逸,车牌号苏g-7x829。”
程度那边同步在公安系统里跑了一遍:这辆车今天没有出现在京州城区的任何监控摄象头里