“o7号实验体数据已回收。第二阶段准备启动。”
叶诤盯着这行字,手指悬在回车键上方,没有按下去。
第二阶段。这几个字像鱼刺一样卡在脑子里。第一阶段已经够清楚了——心脏起搏器程控仪被加密,七十二小时后又被人手动解锁。制药师从头到尾没图钱,他在测试精度。加密和解锁,一次完整的闭环实验。现在第一阶段结束,第二阶段要启动,而他连目标是什么都不知道。
但有一件事他可以确定。制药师还会回来。控制台还活着,感染者列表还在,恶意代码的残余没有清干净。基础设施只要还能用,制药师就舍不得丢。
“不删控制台。”
叶诤说。
周武看了他一眼。“留着当饵?”
“对。但得改装一下。”
他让系统在控制台里植入了一层透明的反向追踪层。原理不复杂——任何人登录控制台,在验证身份的瞬间,就会触一个隐藏的浏览器指纹采集脚本,走的是css样式表注入,不是Javascript。市面上绝大多数安全工具都会扫描Js,但几乎没人去翻网页的css文件里是不是夹了私货。
脚本会在登录者的浏览器里渲染一个肉眼不可见的像素点,然后通过afont-face规则加载一套自定义字体。字体的每个字符对应不同的指纹特征——屏幕分辨率、显卡型号、已安装字体列表、甚至鼠标移动的加度曲线。这些特征拼在一起,就是一份独一无二的浏览器画像。
叶诤把这个方案叫“镜像蜜罐”
。制药师以为自己在登录控制台,实际上每登一次,都在主动交出自己的设备底细。
设置完不到两小时,第一条鱼咬钩了。
不是制药师本人。一个测试账号,登录Ip指向南亚,浏览器指纹显示是台预装盗版indos的组装机,显卡驱动版本还停在三年前。大概是制药师团队里的外围成员,负责确认控制台还能不能正常访问。
叶诤没动。小虾米不值得收网。
第二条鱼在四十分钟后咬了钩。浏览器指纹完全不同——macbookpro,视网膜屏,amd定制显卡,系统语言西班牙语。登录者进控制台之后直奔感染者列表,停了大概三分钟,然后开始反复尝试删除“心脏起搏器程控仪”
那条已解锁的记录。
“制药师。”
叶诤盯着屏幕上的操作轨迹,“他现解锁记录还留在日志里。”
“能删掉吗?”
“删不掉。那条日志我已经锁了,删除指令会被自动转存到另一个隐藏目录。”
制药师连试三次,每次删完刷新页面,记录还在,像根钉子一样纹丝不动。他开始紧张了。控制台的消息系统里,他向所有团队成员了一条广播,西班牙语,系统翻译过来只有四个字:“有入侵痕迹。”
然后他断开了连接。
但已经晚了。就在他登录的那三分多钟里,css脚本已经采到了他的浏览器指纹。与此同时,叶诤走了另一条更隐蔽的通道——ntp时间同步。浏览器加载css时会向远程服务器起网络时间协议请求来校准时间戳,叶诤在他登录的瞬间故意制造了一个时间偏差,逼他的机器主动起ntp查询。不同地理位置的ntp服务器响应延迟不同,算这些延迟差,能把物理位置锁到城市级别。
结果出来了。布宜诺斯艾利斯。
阿根廷。不是墨西哥。玉米卷c2服务器还挂在墨西哥城,但制药师本人不在那儿。他人住在阿根廷都一栋共享办公大楼里,Ip指向一个工位。
“共享办公。”
叶诤说,“没摄像头,不实名,付现金就能租。他选这种地方不是第一回。”
“通知当地警方?”
“还不行。浏览器指纹能证明是他用的那台机器,但他要咬死了说电脑借人了,案子就卡住。”
叶诤想了想,往更深处挖了一层。他把制药师的浏览器指纹和之前在灰鼠服务器上恢复的数据做了交叉比对。结果弹出一条之前被忽略的关联——制药师登录控制台用的那台macbook,和灰鼠三个月前在暗网卖过的一批“定制安全笔记本”