array(5) { ["chapterid"]=> string(8) "49409197" ["articleid"]=> string(7) "7300050" ["chaptername"]=> string(7) "第4章" ["content"]=> string(12718) "上午九点整,网络空间安全学院,四楼最东端。

方远行的办公室门上挂着一个铭牌:"方远行 副教授 网络空间安全实验室"。铭牌下面贴着一张A4纸,手写着"请敲门后进入",字迹潦草但有力。纸的边角用透明胶带粘过——贴了至少一两年了。

林墨敲了两下。

"进。"

办公室不大,大约十五平米,但收拾得近乎空旷。一张办公桌,一台27寸显示器,一个书架,三把椅子。书架上的书不多,大部分是英文的——Schneier、Kaufman、Stevens,几本RFC合订本,还有一本翻了无数遍的《TCP/IP详解》卷一,书脊已经裂了。墙上没有任何装饰,只有一张网络安全攻防演练的架构图,用图钉钉在软木板上,边角卷曲发黄。窗户半开着,窗外是教学楼的背面和一排法国梧桐。

方远行坐在办公桌后面。他今年四十四岁,瘦,颧骨突出,戴一副细框眼镜,头发剃得很短,鬓角灰白。他穿一件洗得发白的深蓝色Polo衫,领口有些变形。桌上放着一杯茶——不是茶叶,是枸杞泡水,杯壁上挂着一层淡黄色的水渍。这个人看起来像一个被用了很多年但没有坏掉的精密仪器——不新了,但准确。

苏晚晴已经坐在他旁边,手里捧着一杯纸杯咖啡。她换了一身衣服——黑色T恤,牛仔裤,头发扎成短马尾。看到林墨进来,她点了一下头。

"坐。"方远行指了指桌子对面的椅子。

林墨坐下,把一台U盘放在桌上。"昨晚的全部数据。苏晚晴的检测脚本输出、我在交换机上抓到的MAC地址、中间人主机的物理位置照片。"

方远行没有马上去拿U盘。他看了林墨一眼,又看了苏晚晴一眼。

"你们昨晚进了电缆层。"

这不是疑问句。

"是。"两个人同时回答。

方远行拿起U盘,插进电脑,打开文件夹。几秒钟后,他的目光停在苏晚晴导出的成绩篡改列表上。他滚动了几下,然后放大了某个字段。

"三十七门课。"方远行说。

"是。涉及四个专业,两届学生。"苏晚晴说,"全部是上调,没有下调。修改时间集中在凌晨一点到三点。"

"你怎么判断这不是学生在改自己的成绩?"

"debug写入请求的User-Agent字段。"苏晚晴从背包里拿出笔记本电脑,打开一个文件,"正常教务系统前端请求的UA是Chrome或Safari,但这些写入请求的UA是一个自定义字符串——`GHOST/0.7.3 (internal)`。没有任何一个正常学生会用这个UA。"

方远行看到那串字符串的时候,手指在键盘上停了一下。那个停顿很短,不到一秒,但林墨捕捉到了。方远行是一个不会无意义停顿的人——他打字的速度和说话一样稳定,每一个动作都有目的。这个停顿意味着他认识这串字符。

"你认识这个标识。"林墨说。

方远行没有否认。他摘下眼镜,用Polo衫下摆擦了擦镜片。这个动作林墨见过——方远行在思考的时候会摘眼镜擦,就像有人在想问题时会转笔。

"GHOST是一个地下论坛的内部代号。那个论坛叫做暗网锚点,专门做灰帽安全交易——漏洞买卖、渗透测试外包、情报拍卖。GHOST是论坛里一个活跃ID的客户端标识。"

"你一个大学副教授,怎么会知道地下论坛的事?"林墨问。

方远行把眼镜重新戴上。他没有回避这个问题。

"因为暗网锚点是我七年前关掉的。至少我以为我关掉了。"

办公室里安静了几秒。窗外法国梧桐的叶子在风里发出沙沙的声响。走廊里有人经过,脚步声停了一下,又走远了。

苏晚晴慢慢说:"这个攻击者用的工具,来自一个七年前就被关闭的论坛。"

"论坛关了,工具不会消失。"方远行说,"GHOST客户端是暗网锚点的核心工具之一,本身就是一套中间人攻击框架——部署简单、隐蔽性强、远程管理。七年前我封掉了公开版本,但源码在关站之前就已经泄露到了其他暗网节点。有人拿到了源码,改了版本号,现在用在你们的校园网上。"

林墨靠在椅背上。一个使用七年前泄露工具的攻击者,物理潜入校园网电缆层,部署中间人节点,用debug后门篡改成绩——这不像随机攻击。这是一次有明确目的的渗透。

"他在找什么?"林墨问。

方远行看着他。"你为什么觉得他在找什么?"

"改成绩是表面行为。如果他的真实目的是嗅探骨干流量,他不需要改成绩——改成绩会引来审计,反而暴露自己。除非改成绩本身就是目的,或者——"

"或者改成绩是一个烟幕。"苏晚晴接上,"让校方以为这只是学生恶作剧,从而忽略骨干层面真正发生的事。"

方远行的目光在两个人之间移动了一下。

"你们两个的判断都对。"他说,"但都不完整。"

他从抽屉里拿出一个文件袋,抽出一叠打印纸,推到桌面中央。那是一份表格,上面列着近三个月校园网所有异常事件的汇总——不只是成绩篡改,还包括:财务系统两次异常登录、科研数据服务器的一次未授权访问尝试、校园一卡通系统的余额异常波动。表格用不同颜色标注了严重程度,红色三条,黄色五条,灰色十几条。红色的三条都发生在最近一个月。

"你们看到的只是冰山一角。"方远行说,"从今年三月开始,校园网至少被渗透了六次,涉及四个核心系统。每一次都被信息中心当作独立事件处理,没有人把它们串联起来看。"

林墨看着那份表格,忽然明白了方远行为什么没有把这件事报给校方。如果上报,校方会启动应急响应,关闭所有可疑端口,重置所有密码——这确实能阻断攻击,但也会让攻击者消失。而方远行不想让他消失。

"你想钓他出来。"林墨说。

方远行没有回答这句话。他靠回椅背,双手交叉放在胸前——又是那个"我不回答但我不否认"的姿态。

"下个月,全国高校网络安全大赛华东赛区选拔赛。"方远行说,话题忽然转了一个方向,"我们学校的CTF校队,你知道多少?"

"知道它存在过。"林墨说,"前两届都止步赛区初赛。今年好像连报名都没报。"

"不是没报。是报不了。"方远行的语气平淡,但林墨听出了其中的重量,"计算机学院的李德明副院长上个月在院务会上提出,CTF校队连续两年没有成绩,浪费学院资源,建议解散社团、取消明年预算。提案通过了。"

苏晚晴的表情没有变化,但她握咖啡杯的手指收紧了一些。纸杯被捏出了一个凹痕。

"CTF校队现在是名存实亡的状态。"方远行继续说,"社团名义还在,但没有经费、没有训练场地、没有参赛名额。如果今年不参加全国赛并且拿到成绩,明年这个社团就会被正式注销。"

"这和校园网渗透有什么关系?"林墨问。

方远行看着他。"关系在于,我要你们两个在参加全国赛的同时,查清这起渗透事件。"

林墨没说话。他意识到方远行不是在征求意见,而是在下达任务。两个目标:CTF比赛拿到成绩保住社团,查清校园网渗透的真相。两个目标看起来毫无关联,但方远行把它们绑在了一起。

"为什么是我们?"苏晚晴问。

"因为整个网络空间安全学院,能做这件事的人只有三个。"方远行竖起三根手指,"你,林墨,还有我。而我不能亲自下场——李德明盯着我很久了。如果我做任何超出教学范围的技术操作,他会直接上报。"

"所以你需要一个学生活动的壳。"林墨说。

"CTF校队参加比赛,是正常的学术竞赛活动。"方远行的嘴角出现了一个极淡的弧度,"比赛需要训练,训练需要靶场环境,靶场环境需要对校园网做安全测试——这些都是合理的。在这个过程中,你们发现了一些异常。然后你们把这些异常报告给我。"

林墨听懂了。方远行在用CTF比赛作为合法外衣,让他和苏晚晴有理由接触校园网的核心设施。这不是偷偷摸摸的地下调查——这是"课程实验"的一部分。

"校队现在有几个人?"林墨问。

"加上你,两个。"方远行说。

"两个不够。CTF比赛至少需要三到五人队伍。"

"我知道。"方远行从桌上的文件堆里抽出另一份纸,"这是今年校内CTF选拔赛的报名名单。计算机学院和网络安全学院加起来,一共二十三个人报名。选拔赛下周六举行。你们两个直接进入校队,但还需要从选拔赛里挑两到三个人。"

林墨拿起那份名单扫了一眼。大部分是本科生,几个研究生,专业从计算机科学到软件工程到信息管理都有。名字他一个都不认识。名单上有几行用铅笔做了标记——方远行自己标的,但没标理由。

"还有一个问题。"林墨放下名单,"李德明副院长如果知道校队重新组队参赛,他会不会拦?"

"他会。"方远行说,"但他拦不住。CTF比赛是教育部认可的高校学科竞赛,院方无权阻止学生报名参赛。他唯一能做的是不给经费——但参赛报名费是免费的,差旅费我可以从实验室经费里出。"

"他会不会在别的地方找麻烦?"

方远行看了林墨一眼。"会。所以你们最好别给他找麻烦的机会。"

这句话的潜台词很清楚:在查清渗透事件之前,不要暴露。在CTF比赛拿到成绩之前,不要失误。两个目标,都不能搞砸。

林墨站起来。"我需要交换机端口的配置权限。今天之内。"

"我下午让信息中心开通。"方远行说。

"还有一件事。"林墨走到门口,停下来,没有回头,"昨晚在电缆层——那扇maintenance门的锁,是谁开的?"

方远行的声音从他身后传来,平静得像在念一行代码:"不知道。这也是你们要查的事。"

林墨推开门,走进走廊。苏晚晴跟在他身后出来,顺手带上了门。

走廊里很安静。四楼的窗户正对着教学楼之间的广场,周六上午的阳光把广场上的旗杆影子拉得很长。远处篮球场有人在打球,球鞋摩擦地面的声音隔着玻璃传进来,变得闷钝。走廊尽头的饮水机发出咕噜一声——有人在接水。

"你怎么看?"苏晚晴走在他旁边,声音压得很低。

"方老师没有说全部的真话。"林墨说,"他知道GHOST客户端,他知道暗网锚点,他甚至可能知道那个攻击者是谁。他在用我们做他的眼睛和手——因为他的处境不允许他亲自出手。"

"你不信任他?"

"我信任他的判断。"林墨说,"但我不信任他告诉我们的信息是完整的。"

苏晚晴没有反驳。他们走下楼梯,推开网络空间安全学院的大门,走进了七月的阳光里。林墨眯起眼睛,在刺目的光线中站了两秒钟——从凌晨两点的实验室到上午九点的阳光,他已经在黑暗中待了七个小时。

"下周六选拔赛。"他说,"在那之前,端口镜像要上线,检测脚本要跑起来。我要知道那个中间人节点在嗅探什么数据、发给谁。"

"我来处理脚本。"苏晚晴说。

"我来处理交换机。"

两个人在学院门口的台阶上分道扬镳。苏晚晴走向图书馆方向,林墨走向工科楼B座。他走了几步,忽然想起来一件事,从口袋里掏出手机,打开昨晚在电缆层拍的照片。

迷你主机的机箱侧面,除了MAC地址标签之外,还有一行极小的蚀刻字迹。昨晚光线太暗,他没有注意到。但现在在阳光下放大看——

那行字是一个序列号。

ZDP-0451。

林墨盯着这三个字母看了很久。他不知道它代表什么。但他有一种直觉——这不是随机字符串。这个序列号属于某个体系,某个他尚未看到的体系。

他把手机收回口袋,继续走向工科楼。B座在阳光下投下一道巨大的阴影。他走进阴影里,推开侧门。走廊里空调的凉风扑面而来,带走了皮肤上的热度。

他回到四楼的实验室,坐下来,打开电脑。屏幕亮起的瞬间,他看到终端窗口里的日志还在滚动——那条带 `debug=true` 的请求,又出现了。

桌上张浩的半盒鸭脖还在。他把鸭脖推到一边,手指落在键盘上,开始工作。" ["create_time"]=> string(10) "1785963688" }