苏婉清把权限恢复记录停在大屏上。
联合研究账号在前一天深夜被恢复过十一分钟,第二天下午,玄医数据中心便出现异常访问。两件事在时间上紧紧咬在一起,但她依旧没有允许任何人在会议纪要里写下“内鬼”。
“先把执行和触发分开。”她说。
负责人调出统一身份管理平台的完整日志。恢复账号的确不是管理员直接操作,执行主体是一项自动服务。可自动服务不会凭空做决定,它接到的权限同步请求来自研究协作管理模块,而请求源指向一台半年前已经退出生产环境的旧应用服务器。
秦叔听得皱起眉头:“机器都下线了,还能半夜发请求?”
“日志只能证明请求使用了它的身份标识。”安全负责人解释,“不能证明那台实体服务器真的重新开过机。”
苏婉清立刻让人查资产记录。
旧服务器仍在仓库,登记状态是完成数据擦除、等待统一报废。
“封存实物。不要开机,不要拆盘,第三方取证人员到场以后再处理。”
秦叔问:“我们自己查不行?”
“可以查,但关键证据不能只让我们自己证明。”
她把会议纪要往回翻了一页,又补上一句:“现阶段只能确认失效账号被异常恢复,不能确认是谁触发,更不能确认和昨天的访问来自同一个人。”
这句话也被原样记进记录。
上午,安全应急组开始重新梳理异常访问路径。
直接封死所有旧接口当然最稳妥,却意味着他们只能留下已经发生过的访问日志。苏婉清更关心另一件事——对方为什么主动查询那八名拥有长期神经功能恢复曲线的患者。
如果下一次连接还会寻找同类字段,他们就有机会把账号、接口和设备串成一条真正可复核的证据链。
主管提出建立隔离诱捕环境。
方案很快被拆成两部分:真实生产系统继续收紧权限,诱捕区则完全独立,不接入真实患者数据,只模拟旧研究接口的目录、字段和历史版本。任何访问都经过独立日志节点记录,同时向第三方监证环境同步。
杨复初看完十二个模拟病例,才弄明白安全组准备怎么做。
其中八个带有长期神经功能变化数据,另外四个只是干扰项。所有姓名、编号、治疗记录都是构造内容,不对应任何真实患者,但归档方式和字段层级尽量保持旧系统习惯。
“这算假病历?”他问。
“不算。”安全主管说,“没有对应患者,也不会进入正式医疗系统,只是测试数据。”
苏婉清又检查了一遍文件名称。
“把‘核心资料’‘玄医机密’这种标签全部去掉。真正熟悉旧系统的人看到这种东西,第一反应只会是陷阱。”
她没有要求恢复那个联合研究账号。
诱捕环境已经准备好,入口却继续关闭。
突然开放一个废弃账号太刻意。要让下一次访问有取证价值,入口本身也必须来自正常业务流程。
机会在下午出现。
四家海外研究机构联合发来邮件,希望推进玄医此前公开承诺的独立临床验证,并提出建立新的数据协作通道。国际医学事务组按照正常流程受理,安全部门随后启动历史接口兼容性测试。
申请、审核、安全评估、测试授权,每一步都真实发生,也全部留痕。
下午五点零三分,联合研究账号进入受限状态。
它没有获得生产数据权限,只能进入为兼容测试准备的隔离区域。
“如果今晚没人来呢?”杨复初问。
“那就说明这条路暂时没有结果。”
苏婉清签完最后一份授权单,“调查不是猜答案。我们只是保证下一次事情发生时,不再只有一堆解释不了的日志。”
傍晚,第三方取证人员抵达资产仓库。
那台旧服务器封条完整,没有重新投入使用的明显迹象。硬盘镜像完成后,取证组从残留数据里恢复出一个旧版研究接口代理程序。
版本号正是V3.7-legacy。
这与异常请求暴露的接口版本一致,却仍不足以指向具体人员。相同程序曾部署于多台设备,外包团队和部分联合研究机构也可能保存过安装包。
进一步恢复配置后,七个历史外部研究节点浮出水面。
六个能与旧档案对应,最后一个只留下节点编号。机构名称和联系人字段缺失,原始证书也已经失效。接入时间则落在两年前,恰好处于第三方医疗服务公司参与海外患者接口维护的阶段。
秦叔盯着编号:“又绕回那家公司了。”
“只是时间和技术链重合。”
苏婉清没有让记录人员删掉这句话,却要求在后面标上“待验证”。
夜里,诱捕环境一直很安静。
内部兼容测试产生的访问按计划结束,外部没有任何异常。杨复初和秦叔先后离开,安全组改为轮值,只留下必要人员。
接近午夜时,值守工程师已经不再盯着某个特定时间。
一条很轻的接口探测却突然进入监控列表。
它没有登录,只询问旧接口是否存在。
三十多秒后,第二次请求开始查询版本。隔离系统按照预先配置返回兼容模式标识。
负责人立即坐直,却没有操作键盘。
后续请求换了几组失效凭据,没有爆破,也没有连续试错。几分钟后,一枚格式正确的旧认证令牌被提交进来。
隔离系统按规则接受。
会话建立后,对方先查看研究项目列表,随后筛选神经功能相关项目,最后开始检索长期随访字段。
十二个模拟病例出现在返回结果中。
访问者没有逐个打开,而是很快排除四个普通病例,只保留带有神经功能恢复曲线的八个目标。
安全主管压低声音:“不是随机扫描。”
苏婉清盯着访问轨迹,没有回应。
第一个模拟病例被打开,独立取证节点开始记录令牌指纹、字段顺序和每一次请求时间。对方没有下载整份文件,只查看曲线摘要与治疗阶段标签。
随后,他点开第五个病例。
安全团队在这里设计了一项并不存在于真实研究体系中的“第二阶段恢复评估”。如果访问者只是泛化搜集资料,这个字段没有特别价值;如果他熟悉早期数据结构,接下来的查询方式就可能暴露更多信息。
几十秒后,新的请求抵达。
对方不仅进入了这个评估项,还提交了一个普通权限说明中从未出现过的旧字段名。
安全负责人脸色变了。
那个字段曾存在于研究体系早期版本,后来已经废弃。知道它的人范围很窄,但仅凭这一点,依旧不能判断屏幕另一端是谁。
“锁定会话证据。”苏婉清说,“不要改策略。”
请求链、时间戳、令牌特征和访问顺序持续写入独立存储,第三方监证节点同步收到副本。
很快,历史备份中找到了那枚旧令牌的签发记录。
签发对象不是个人,而是一家曾参与联合研究的机构。更值得注意的是,当年的技术联系人名单里出现了那名离职数据接口工程师——正是此前申请过批量历史数据迁移权限、申请单末尾写着“离线备份”的人。
秦叔不在现场,没人急着把这个发现解释成答案。
安全负责人只是把它标进关联证据栏。
就在第一条会话仍停留于诱捕环境时,另一套监控突然出现异常。
一个外部节点开始连接已经与生产系统彻底隔离的旧研究网关。
地址与前一个会话不同,携带的却是同一体系下的历史设备证书。
“第二个入口。”安全主管说。
苏婉清没有要求追踪远端地址。
代理链随时可以更换,贸然追出去既可能惊动对方,也可能得到一个毫无意义的跳板。预案真正需要的是设备层面的稳定特征。
第二条连接因此被悄然引入另一条隔离链路。
这一次,系统采集到的信息迅速增加:终端握手特征、历史证书序列、接口调用组合、连接时间差以及多次请求间保持一致的设备参数,被逐项写入取证记录。
两条会话之间开始出现可验证的关联。
第一条连接仍在读取诱饵数据,第二条则继续尝试旧研究接口。安全团队没有主动向任何真实系统放行,也没有向远端写入程序,只在隔离环境内记录对方主动暴露的信息。
几分钟后,设备关联结果第一次越过最低置信阈值。
“可以锁定一台设备特征。”安全负责人说。
苏婉清问:“使用者呢?”
“不能确认。”
“那就只写设备。”
新的报告随即生成。
能够确认的是,一台正在使用的终端携带历史设备证书,通过旧研究接口特征进入隔离链路,并与先前认证令牌、字段访问和连接轨迹形成关联。
不能确认的是,设备现在掌握在谁手中,也无法仅凭这些数据证明离职工程师就是当前使用者,更不能推导幕后指令关系。
诱捕环境里的第一条会话忽然停止。
远端开始退出。
有人下意识看向苏婉清,等她决定是否截断。
“继续同步证据。”
她没有改变预案。
访问会话逐步消失,第二条连接也开始撤离。取证系统仍在完成最后几组时间戳、证书和终端指纹的交叉校验。
进度从百分之九十七跳到九十九。
最后一份第三方同步回执返回。
屏幕上的状态随之更新。
证据链完整度:100%。
远端会话彻底消失。
负责人重新核对设备指纹和连接轨迹,确认所有关键记录都已有独立副本。
苏婉清站在屏幕前,没有看那名工程师的旧档案,也没有把任何人的名字写进结论。
他们现在拿到的,还不是一个人。
但已经不再只是一个失效账号、一段旧接口记录,或者几条随时可以被解释成巧合的日志。
她看着那台正在使用的设备留下的完整轨迹。
“现在可以顺着设备去找人了。”