年终奖到账八百零三块七毛二的时候,陆远正在工位上吃泡面。
手机屏幕亮了一下,银行短信弹出来,他瞟了一眼,筷子悬在半空,停顿了大概三秒钟。然后面无表情地继续把面吃完,连汤都喝干净了。
周围同事的工位已经空了大半,今天是腊月二十八,公司发了年终奖之后,该走的都走了。办公室的灯管有两根坏了,物业说年前没工人来修,整层楼的光线都像隔了一层脏兮兮的纱布。陆远把泡面桶扔进垃圾桶,拿纸巾擦了擦键盘上的油渍,手指在回车键上敲了一下,屏幕亮起来,显示着一行代码的编译进度。
百分之九十七。
他等的就是这个。
隔壁工位的小王拖着行李箱经过,拍了拍他的椅背:“陆哥,还不走啊?再晚赶不上高铁了。”
“马上。”陆远冲他笑了一下。
小王看了一眼他的屏幕,满屏的代码,密密麻麻,像某种外星文字。他露出一个“这人没救了”的表情,拉着箱子走了,脚步声在空旷的办公区里越来越远。
陆远收回目光,点开企业微信,看了一眼公司大群。群名叫“天行科技奋斗者之家”,五百多号人,消息刷得飞快,全是在晒年终奖的。有人发了三万多,有人发了五万多,最少的也有小一万。产品部的老周直接晒了张截图,八万六,底下齐刷刷一排“周总牛X”“周总大气”“周总今晚洗脚安排上”。
陆远把手机扣在桌上,屏幕朝下。
他是研发部的,入职三年,工资条上的数字从来没超过六千。年终奖这东西,去年发了九百,今年八百。公司给的说法是“根据绩效和职级综合评定”,他的绩效永远是个C,职级永远是初级工程师,虽然整个研发部核心业务系统百分之六十的代码是他一个人写的。
没人知道这件事。
因为他写代码的方式太特别了,别人看不懂。他的代码风格极度简洁,几乎没有任何注释,变量名全是a1、a2、b1、b2这种鬼东西,逻辑嵌套能到十几层,除了他自己,谁接手谁崩溃。CTO老王有一次试着读了一下他写的支付模块,读了四十分钟,摘下眼镜揉着眼睛说了一句“这玩意儿是他妈人写的?”从那以后,所有他写的模块都由他自己维护,别人碰都不敢碰。
好处是,整个公司没人能替代他。
坏处是,整个公司没人知道他到底干了多少活。
编译进度跳到了百分之九十九,然后停了。陆远的手指在桌面上轻轻敲着,不急不躁,像是早就知道它会卡在这一刻。他打开抽屉,拿出一包没拆封的软中华,撕开,抽出一根叼在嘴上,没点,就这么含着。
百分之百。
他站起身,把外套穿上,是一件洗得有些发白的黑色羽绒服,拉链坏了三分之一,拉到胸口就再也拉不上去了。他把电脑合上,书包甩到肩上,看了一眼时间——晚上七点二十三分。
走到电梯口的时候,他犹豫了一下,又折回去,从抽屉最深处摸出一样东西。
一块移动硬盘,黑色的,巴掌大小,外壳磨得掉了漆,露出里面银灰色的金属。他把硬盘塞进书包内侧的夹层里,拉上拉链,拍了拍,确认不会掉出来。
这块硬盘里,存着一行代码。
准确地说,是一行他三年前写的代码,只有三十七个字符,却能在一分钟内让天行科技市值二十亿的核心数据系统——原地瘫痪。
他不是黑客,他不搞破坏,他就是手痒。三年前刚入职的时候,他发现公司的数据库架构有一个天大的漏洞,SQL注入的口子开得跟窑洞似的,他随手写了个补丁代码,结果发现这个补丁本身就是一个更完美的后门。他没声张,也没用,就是把它存在硬盘里,像收藏了一把没有钥匙孔的锁。纯粹是程序员那种“我知道一个你不知道的秘密”的恶趣味,这种快乐比年终奖值钱多了。
电梯来了,他走进去,按下B1。电梯里的广告屏在循环播放一个声音尖锐的短视频广告,陆远盯着屏幕上的倒计时数字,脑子里却在算另外一笔账。
他今年二十七岁,大学肄业,没学历,没背景,没资源。当年高考数学满分,语文英语加起来不到一百分,被一所二本院校的计算机系破格录取,大二就因为和系主任吵了一架直接退学。吵的原因很简单,系主任说他的代码“不按规范写,路子太野,成不了大器”,他说系主任“连内存泄漏都检测不出来,教个屁的计算机”。两个人当着全系两百多号人的面拍桌子,最后他背着书包走了,再也没回去过。
之后五年,他换了七份工作,干过外包,写过脚本,给游戏工作室写过外挂,甚至帮人做过一阵子的灰色产业链数据分析。最后三年前流落到这座城市,进了天行科技,想着好歹是个正经公司,五险一金都有,先干着吧。
三年下来,他写了一百七十万行代码,维护着公司最核心的四个业务系统,工资从四千五涨到五千八,年终奖从七百涨到八百。
他觉得挺好笑的。
B1到了,电梯门打开,地下车库的冷风灌进来,他缩了缩脖子,朝自己的那辆二手电动车走去。电动车是雅迪的,三年前花一千二买的,电池换过两次,后视镜掉了一个,车筐用铁丝绑着才没散架。他把书包放进车筐,插上钥匙拧了一下,没反应。
又拧了一下,还是没反应。
“操。”
他踹了一脚前轮,仪表盘闪了一下,亮了。电动车发出一种濒死般的嗡鸣声,颤颤巍巍地启动了。陆远骑着它出了地库,腊月二十八的夜风像刀子一样刮在脸上,他把羽绒服的领子竖起来,缩着脖子往出租屋的方向骑。
路上的人很少,两边的店铺大部分都关了门,卷帘门上贴着“春节放假,初八营业”的红纸。路灯把他的影子拉得很长,又缩短,又拉长。他骑了大概二十分钟,在一条巷子口停下来,巷子深处是一家沙县小吃,灯还亮着。他锁了车,走进去,要了一碗拌面和一盅排骨汤,十二块钱。
老板娘认识他,给他多加了一勺花生酱:“今年又不回去过年啊?”
“票不好买。”陆远低头吃面,含含糊糊地说。
老板娘没再多问,这种对话已经重复了三年,彼此都心知肚明这不是票的事。陆远吃完面喝完汤,扫码付钱,骑着电动车拐进了一个老小区。小区没有电梯,他住五楼,一室一厅,月租八百,墙皮偶尔会在半夜掉下来一块,砸在地板上发出沉闷的声响。
他开了门,屋里冷得跟冰窖似的,空调是房东留下来的老古董,制热效果约等于零,噪音效果约等于拖拉机。他没开空调,脱了外套直接坐到桌前,打开了笔记本电脑。
这是他真正的电脑,不是公司配的那台ThinkPad。这台电脑是他自己攒的,配置拉满,三块屏幕,机械键盘的轴体是他一个个挑的,敲下去的声音清脆悦耳,像某种打击乐器。他打开了一个黑色的终端窗口,手指在键盘上飞速敲击,屏幕上开始滚动一行行的数据流。
他在检查那行代码。
三年了,他每隔一段时间就会检查一次,确认那个后门还在,确认公司的数据库架构还没有人发现那个漏洞。今天也不例外,他连上了公司的测试服务器,用了一个自己写的代理工具,绕过了所有的安全审计,进去了。
一切正常。
漏洞还在,后门还在,仿佛一个无人知晓的暗门,静静矗立了三年。
他准备退出的时候,忽然顿了一下。
屏幕上显示了一个不太对劲的数据包。非常小,藏在一大堆正常的日志数据中间,如果不是他对这套系统的每一行代码都烂熟于心,根本不可能注意到。他皱了一下眉,追踪了这个数据包的来源和路径,发现它不是从外部进来的,而是从内部某个节点发出的,目标端口是一个他从来没见过的地址。
有人在扫描。
而且扫描的方式非常聪明,不是常规的暴力扫描,而是用了某种分片重组的技术,把扫描指令切成极小的碎片,混在正常的业务请求里,一点一点地探测整个系统的拓扑结构。就像一个贼不撬锁不砸窗,而是把整面墙的砖一块一块地抽出来,等你发现的时候,墙已经没了。
陆远的瞳孔微微收缩。
这不是普通的黑客。这种手法,他只在一个地方见过。
他的手指悬在键盘上方,脑子里飞速运转。天行科技的核心数据系统,说值钱也值钱,说不值钱也不值钱,值钱是因为它掌握了大量企业客户的数据和交易流水,不值钱是因为这些数据有严格的加密和合规限制,拿出去也不好变现。谁会花这么大的力气来搞它?
除非——目标不是钱。
他想了想,退出了系统,抹掉了所有访问痕迹,合上了电脑。不管对方是谁,跟他没关系。他明天早上还要赶去公司值班,研发部排了春节期间的值班表,他是初一和初三,两天,三倍工资,一天一百八,两天三百六,够交半个月房租了。
他躺到床上,盯着天花板上那道从墙角延伸到灯座附近的裂缝,脑子里还在转那个数据包的事情。他的职业病就是一旦发现了问题就忍不住要去想它,就像强迫症患者看到歪了的画框一定要扶正一样。
翻来覆去了大概半个小时,他还是坐了起来,重新打开了电脑。
这一次,他没有用测试服务器的入口,而是直接连上了公司的核心数据库集群。他写的防火墙绕过脚本比他妈的CTO写的正门还快,不到三十秒就进去了。他找到了那个异常数据包的日志记录,顺着它的路径往回追,一层一层地刨,像拆一个俄罗斯套娃。
追到第四层的时候,他停住了。
这个数据包的原始节点,不在公司内部。它的来源IP经过了至少六层代理和跳板的伪装,但他还是认出了其中一个特征——一种特定的时间戳编码方式,精确到微秒级,每一组数据的尾部都会嵌入一个看似随机的校验码,但这个校验码的生成算法他太熟悉了。
是他自己写的。
准确地说,是五年前他帮一个灰色产业链做数据分析时写的加密校验算法。那个算法的思路太独特了,他相信这个世界上除了他之外,只有一个人能完美复现。
那个人叫“鬼鲨”,真名不知道,性别不知道,年龄不知道,国籍大概率不是中国的。五年前他们在暗网的一个技术论坛上认识,互相试探了几个回合之后发现对方的水平跟自己不相上下,于是有了一段亦敌亦友的奇怪关系。他们合作过两个项目,一个是帮某个电商平台挖竞争对手的数据漏洞,另一个是联手黑进了一家国际支付公司的沙盒系统——纯粹是为了证明那家公司的安全团队是废物。
后来陆远觉得这种事越做越危险,主动断了联系,删了所有的通讯方式,退出了那个论坛,彻底回归了“正常人”的生活。
鬼鲨找过他几次,他都没回。
现在鬼鲨的加密算法出现在了他公司的内网里。
陆远深吸一口气,做了一个决定。
他把那块移动硬盘插上电脑,打开了那个存了三年的文件。三十七个字符的代码,在黑色的终端窗口里闪烁着白色的光标,安静又致命,像一颗从未引爆过的炸弹。
他的手指在键盘上敲了三个命令,把三十七个字符封装进了一个自动触发脚本里。触发条件他设得很简单——如果检测到核心数据库的指定三个关键节点同时出现非授权的外部访问,脚本自动运行。
运行之后会发生什么?
数据库的所有写入操作会被加锁,读取操作会被重定向到一个虚假的镜像层,所有的数据传输链路会在六十秒内完成加密——密钥是他三年前就生成好的,4096位RSA,暴力破解需要的算力是整个地球上所有超级计算机加在一起运行三百年。
换句话说,一旦触发,天行科技十亿体量的核心数据,就等于被他一个人扣在了手里。
解药只有他有。
做完这一切,他把脚本部署进了公司的生产服务器里,藏在了一个不可能被发现的角落——一个三年前就已经废弃但从未被清理的旧版本日志模块里。这个模块的代码写得稀烂,CTO老王曾经在会上说过“等新系统上线就把这玩意儿删了”,但新系统一直没上线,老王的承诺和大多数领导的承诺一样,至今没有兑现。
他合上电脑,看了一下时间,凌晨两点四十一分。
窗外不知道什么时候下起了雪,细密的雪粒打在玻璃上,发出沙沙的声响。他站在窗前看了一会儿,这座城市每年冬天都会下雪,但每年都留不住,落在马路上就化成了黑色的泥水,被车轮碾过,溅得到处都是。
他忽然觉得有点荒诞。
自己一个年薪不到八万、年终奖八百块的底层程序员,正在操心一个价值十亿的数据库会不会被一个国际顶级黑客攻击。就像一个骑电动车的保安在担心银行金库的门锁够不够结实。
操的哪门子心。
他苦笑了一下,关了灯,躺在床上,裹紧了被子。
三秒后,他睡着了。
四个小时后,他的手机响了。
不是一次,是连续的、不间断的、仿佛永远不会停歇的震动。手机在床头柜上嗡嗡嗡地旋转,像一只发了疯的电动蟑螂,震得连木质桌面都跟着颤。陆远迷迷糊糊地摸过手机,屏幕上弹出来的未接来电数量让他的大脑瞬间清醒。
374个。
他看了一下时间,早上七点十二分。再看一眼来电记录,第一个电话是凌晨三点四十八分打来的,在那之后,平均每三十一秒一个电话,持续了整整三个多小时。
所有电话来自同一个号码:CTO王建国。
陆远的心猛地一沉。
他还没来得及回拨,又有一个电话打进来,不是王建国,是研发部的同事张磊。他接了,电话那头的声音又急又慌,像是被什么东西追着跑一样:“陆远!你可算接电话了!你在哪呢?赶紧来公司!出大事了!”
“出什么事了?”
“数据库!核心数据库被人锁了!妈的整个系统全崩了,技术部所有人的SSH全被踢出来,登录都登不进去!老王说这是有预谋的攻击,已经从后半夜搞到现在了,请了安全专家过来,人家看了半天说搞不定,说加密的方式他见都没见过——”
陆远握着手机的指节微微发白。
脚本被触发了。不是鬼鲨的攻击触发的,而是他脚本的触发条件里有一个逻辑漏洞——他没有考虑到安全团队在紧急情况下的操作行为。安全专家试图强行登录数据库时,恰好满足了他设定的“三个关键节点同时出现非授权访问”的条件。
是他自己把自己的公司干掉了。
电话那头张磊还在喊:“老王急疯了,给所有人都打了电话,你的电话打了三百多个,你在群里回一下啊!对了,你知道这个加密手法吗?老王说能写出这种锁库代码的人,整个公司不超过三个,你算一个——”
“我不算。”陆远的声音很平静,“我写的代码你们不是都看不懂吗?看不懂的东西,怎么知道它是什么手法?”
张磊愣了一下,大概是觉得这话哪里不对,但一时半会儿又想不出怎么反驳,只好说:“那你赶紧过来吧,老王都快气炸了。”
陆远挂了电话,坐在床边,沉默了很久。
他低下头,看着自己那件拉链拉到胸口就拉不上去的羽绒服,看着桌上没舍得扔的半包软中华,看着手机屏幕上那条“年终奖到账803.72元”的银行短信。
然后他笑了。
不是苦笑,是那种真正被什么东西逗乐了的笑。他笑了大概有五秒钟,然后站起来,穿上羽绒服,把笔记本电脑装进书包,想了想,又从那半包烟里抽出一根叼在嘴上,从桌上摸了个打火机,啪地点着了。
他深深地吸了一口,烟雾在冰冷的房间里缓缓散开。
“行吧。”
他吐出一口烟,眯起眼睛,看着窗外灰蒙蒙的天。
“那就看看,到底是谁给谁打工。”
与此同时,天行科技总部的会议室里,灯火通明。王建国瞪着布满血丝的眼睛,盯着一块巨大的投屏,上面是一片红色的告警界面,正中央只有一行字——
“系统已被加密。如需恢复数据,请联系系统管理员。”
王建国把手机重重地拍在桌上,屏幕裂了一道纹。
“陆远的电话,”他咬着牙说,“打不通。再打。”
旁边的人小心翼翼地问:“王总,会不会就是陆远干的?这个加密的代码风格……”
王建国猛地转过头,盯着那个人。
“你是不是傻?如果真是他干的,他现在应该跑路,而不是不接电话!他写了三年垃圾代码,月薪五千八,他要有这个本事,早他妈跳槽了!”
全场安静。
没有人敢再说话。
而这个时候,陆远的电动车正在雪地里缓缓驶出老小区的铁门。雪下得比昨晚更大了,他的车轮在薄薄的积雪上压出两道歪歪扭扭的痕迹,朝着天行科技的方向延伸过去。
车筐里的书包中,那块移动硬盘安静地躺着,里面装着整个公司十亿数据的唯一一把钥匙。
以及一个他昨晚写的脚本——脚本的最后一行,是一个三十分钟的倒计时。
如果三十分钟内没有人来找他谈条件,脚本会自动把解密密钥发给一个人。
鬼鲨。
他也不知道鬼鲨的邮箱现在还用不用,但没关系,他猜鬼鲨不会错过这种礼物。
电动车在红灯前停下来,雪花落在他的头发上、肩膀上,很快就积了薄薄的一层。他抬头看着红绿灯的倒计时数字,十、九、八、七……嘴角微微上扬。
他忽然很期待,王建国再给他打第三百七十五个电话的时候,他接起来,说的第一句话。
“王总,年终奖的事,咱们是不是得重新聊聊?”
绿灯亮了。
电动车碾过积雪,朝着灰色的城市天际线驶去。远处的天行科技大厦在雪幕中若隐若现,楼顶的logo灯还亮着,像一只巨大的、冷漠的眼睛,注视着这个骑着破电动车、年薪不到八万的男人,正带着它全部的命运,在雪中前行。
一场关于八百块年终奖和十亿数据的好戏,才刚刚拉开序幕。
陆远骑着电动车拐进天行科技大厦的地下车库入口时,保安老赵正裹着一件军大衣站在岗亭门口抽烟,看见他的车,烟差点从嘴里掉下来。
“小陆?你怎么来了?今天不是放假了吗?”
“加班。”陆远把电动车停到老位置——一根贴着“预留车位”的柱子旁边,那个车位是给公司副总裁级别以上的人留的,但从来没人停过,他就一直在那儿停车,三年了,也没人管过。
老赵跟过来,压低声音说:“楼上一大早就炸锅了,来了好几拨人,有一拨穿着黑西装的,看着就不像好人。王总在电梯里打电话,脸都是绿的,我从来没见过他那样。”
“正常。”陆远拔了钥匙,把书包甩到肩上,“年底了,冲业绩嘛。”
老赵显然没听懂这句话的意思,但他知道不该问的别问,目送着陆远走向电梯。电梯门关上之后,陆远看着楼层按键,没有按研发部所在的十六楼,而是按了顶层的二十二楼。
二十二楼是公司的战略指挥中心,平时只有董事会和高管才能进去,里面有一整面墙的监控屏,连着公司所有的服务器状态。陆远从来没上去过,但他知道密码锁的初始密码——入职培训的时候,行政发过一份《公司安全管理制度》的PDF,最后一页的附录里写着的。
没人会认真看那种东西,除了他。
电梯到了二十二楼,门一开,走廊里站着两个穿黑西装的,一男一女,表情像被冻住了似的,看见陆远从电梯里出来,同时往前走了一步。男的伸手拦住他:“对不起,这里不能进。”
陆远看了他一眼,不紧不慢地说:“我是陆远。”
黑西装男女对视了一下,男的说:“哪个陆远?”
“你们王总打了三百七十四个电话找的那个陆远。”
走廊尽头的一扇门猛地被推开了,王建国从里面冲出来,动作之快跟他平时在会议上慢悠悠喝枸杞水的形象完全不同。他穿着一件皱巴巴的衬衫,领带歪到一边,眼镜片上有一层明显的油光,显然是从昨晚到现在一直没合眼。
“陆远!”他的声音沙哑得像砂纸刮过铁皮,“你他妈可算来了!你电话为什么不接?你知不知道公司出大事了?数据库被人锁了!整个核心系统瘫痪!所有客户的数据全被加密了!”
他说到最后几个字的时候,声音已经破了。
陆远站在原地,表情没有任何变化,等王建国说完,他才开口:“王总,我手机静音了,睡觉没听见。”
“睡觉?”王建国瞪大眼睛,“你睡得着?”
“为什么睡不着?昨天不是放假了吗。”
王建国张了张嘴,想骂人,但显然现在不是骂人的时候。他一把抓住陆远的胳膊,把他往走廊尽头的指挥室里拽。两个黑西装跟在后面,像两片沉默的影子。
指挥室比陆远想象的要大,差不多有两百个平方,正对面的整面墙是一块巨大的LED屏,分成几十个小窗口,大部分是红色的,少数是黄色在闪烁,没有一个是绿色的。屏幕正中央有一行大字,白底红字,刺眼得像手术室里的无影灯——
“系统已被加密。如需恢复数据,请联系系统管理员。剩余解密尝试次数:0。”
长条会议桌两边坐了十几个人,有公司的技术骨干,有法务部的,还有几个陆远没见过的生面孔。所有人的目光在他进门的那一刻全都扫了过来,像一群饥饿的动物突然发现了猎物。
陆远扫了一圈,认出研发部的张磊坐在角落里,脸色比王建国还难看。张磊旁边是运维组的组长赵海生,一个三十多岁的光头男人,平时沉默寡言,此刻额头上全是汗。
“人到齐了没有?”一个坐在主位旁边的中年男人开了口,声音不大,但有一种常年发号施令的人特有的笃定。陆远不认识他,但看王建国的反应,这个人地位不低。
“马总,这就是陆远,研发部的。”王建国的语气明显比刚才收敛了很多。
马总。陆远在脑子里快速检索了一下——马国良,天行科技的创始人兼CEO,平时很少在公司露面,据传大部分时间在海外。公司日常事务都是王建国和另外两个VP在管。
“你就是陆远?”马国良看了他一眼,目光很锐利,像是在评估一件商品的价值,“建国说你是公司最懂底层架构的人,你看看这个,有没有办法解开?”
他指了指大屏幕。
陆远走到屏幕前,抬头看了看那行红色的字,心里毫无波动。
当然没有波动,因为这行字就是他写的。
他沉默了几秒钟,转过身来,面对着满屋子的人,说了一句话:“我需要一台能连上核心数据库的终端,物理机,不是虚拟机。”
王建国立刻让人搬了一台笔记本过来,插上了内网的物理网线。陆远坐下来,手指在键盘上敲了几个命令,屏幕上的数据流开始滚动。他知道所有人都在盯着他的后脑勺,但他不在乎,他正在做一件非常微妙的事情——演戏。
他不能让这些人看出来这事儿跟他有关系,但同时,他必须要让他们明白一个事实:这事儿只有他能解决。
键盘敲击的声音在安静的指挥室里格外清脆,大约过了五分钟,陆远停下了手,靠在椅背上,沉默了一会儿。
“怎么样?”王建国急不可耐地问。
“很麻烦。”陆远的语气像是在描述一道稍微有点难度的数学题,“攻击者使用了一种非常规的加密算法,不是市面上已知的任何一种,应该是自研的。密钥长度目测在四千位以上,暴力破解的可能性基本为零。”
“什么叫基本为零?”马国良皱起了眉头。
“就是零。”陆远转过来看着马国良,“以目前全球最顶级的算力来跑,需要的解密时间大概是几百万年。就算你把阿里云、腾讯云、AWS所有的服务器全租下来一起跑,等你孙子退休那天也跑不完百分之一。”
会议室里的空气像被抽走了。
“那怎么办?”法务部的一个女人开口了,声音发紧,“我们有客户数据保护的合同义务,如果数据泄露或者无法恢复,光是违约金就能把公司赔到破产。”
“不止是违约金。”另一个人接话,“如果被监管部门认定是重大数据安全事故,整个公司的牌照都可能被吊销。”
马国良没有参与这些人的讨论,他一直盯着陆远,目光像锥子一样。
“你有没有办法解?”
陆远等了两秒,说了两个字:“有。”
整个会议室瞬间安静了。
“但是,”陆远紧接着说,“我需要知道一些事情。攻击者是怎么进来的?什么时候发现的?安全团队做了什么操作?我需要全部的日志记录,从昨晚七点以后到现在的所有操作日志。”
王建国看向赵海生。赵海生擦了擦额头上的汗,用发抖的声音说:“攻击应该是昨晚大概半夜一点多开始的,最开始我们监测到有一些异常的数据扫描行为,以为是被黑客盯上了,就启动了应急响应。当时我们的安全专家尝试手动登录数据库查看情况,结果——”
“结果什么?”陆远明知故问。
“结果登录进去之后,加密程序瞬间启动,直接把三个核心节点全部锁了。”赵海生的声音越来越小,“安全专家说,这个加密程序像是早就藏在系统里的,一直在等触发条件。那个手动登录的操作,刚好满足了触发条件。”
陆远听完,沉默了几秒钟,然后转过来看着王建国:“王总,安全专家是谁请的?”
“我请的。”王建国的脸色不太好看,“是跟我们有合作的第三方安全公司。”
“哪家公司?”
“星辰安全。”
陆远在脑子里记下了这个名字,继续说:“这个加密程序的触发逻辑设置得非常精妙,它不是一个简单的时间触发器,而是基于一系列复杂的条件判断。如果安全团队不强行登录,它可能一直不会触发。换句话说——”
他顿了顿,目光从王建国身上移到马国良身上。
“是你们自己的操作把炸弹引爆了。”
会议室里一片死寂。
马国良的手指在桌面上轻轻敲了两下,然后说:“现在不是追究责任的时候。你说有办法解,什么办法?”
陆远靠在椅背上,双手交叉放在腿上,姿态很放松。他已经评估完了局势——整个公司从CEO到CTO再到安全团队,没有人能解决这个问题。他们现在唯一能指望的人,就是坐在他们面前的这个月薪五千八、年终奖八百块的初级工程师。
这个反差让他觉得很愉快。
“王总,张磊说你给我打了三百七十四个电话。”陆远忽然换了一个话题。
王建国愣了一下,不明白他为什么提这个:“对,从半夜三点多开始打的,一直打不通。”
“我还以为是我被开了。”陆远笑了一下。
马国良皱了皱眉:“陆远,现在不是开玩笑的时候。”
“我没开玩笑。”陆远的表情忽然收了起来,变得认真,“我能解开这个加密,但我有一个条件。”
“什么条件?”
“等我解开了再说。”
马国良盯着他看了很久,久到会议室里的其他人都不自在地动了动。最终,马国良点了头:“可以。”
陆远重新转回电脑前,开始真正地操作。他打开了一个自己写的解密工具——这个工具是昨晚和加密脚本一起写好的,界面上只有一个进度条和一个“开始解密”的按钮。他故意在操作过程中加入了一些复杂的命令,让整个过程看起来极其专业和困难,像是正在进行某种精密的数字手术。
实际上,他只需要输一个密码。
但他不能现在就输。
他要让这些人等。
等得越久,他们就越明白这件事的价值。
屏幕上开始显示进度条,他设定了一个小时的假进度。然后他站起来,对所有人说:“解密程序已经开始运行了,大概需要一个小时。这段时间里,任何操作都不能碰这台电脑,否则解密会失败,而且加密会升级,到时候我也没办法了。”
王建国看着那台孤零零摆在桌上的笔记本,像看着一颗定时炸弹。
陆远走到会议室角落的咖啡机旁边,给自己倒了一杯咖啡,加了两块糖,端着杯子走到窗边。二十二楼的高度能俯瞰大半个科技园区,雪还在下,整个园区像被盖了一层灰色的棉絮。
他在窗玻璃上看到身后有人影靠近,是那个法务部的女人。
“陆远,你好,我是法务部的陈婉清。”她的声音很专业,但能听出明显的紧张,“如果,我是说如果,解密成功了,后续的安全加固和事故调查,我们需要你全力配合。”
“当然。”陆远抿了一口咖啡。
“另外,”陈婉清压低了声音,“马总刚才让人查了你的档案。你在公司三年,月薪五千八,年终奖八百。马总说,等这件事处理完,你的薪资和职级——”
“陈律师,”陆远打断了她,“我们不聊这个。”
陈婉清愣了一下。
“我现在只想专心解密。”陆远冲她笑了笑,“其他的事,等数据恢复了再说。”
他说完端着咖啡杯走回了电脑前,坐下去,假装专注地盯着屏幕上的进度条。实际上他在数秒——从他踏入公司到现在,已经过去了四十八分钟。他书包里的移动硬盘上,那个三十分钟的倒计时早就过了,但他根本没有设置自动发送。
从一开始就没有。
所谓的“三十分钟倒计时自动发送给鬼鲨”只是一个心理安慰,是他昨晚给自己的一个借口——让自己有勇气去做接下来要做的所有事。他不会真的把密钥给鬼鲨,鬼鲨是什么人?是国际顶尖的黑客,是把全世界的安全系统当玩具拆的疯子。把十亿数据的密钥给这种人,跟把核武器的发射按钮寄给一个恐怖分子没有区别。
陆远不是圣人,但他也不是疯子。
他要的是属于他自己的那份,不是毁灭所有人。
进度条走到百分之七十八的时候,他的手机震动了一下。
他低头看了一眼,是一个没有备注的号码,但他认得那个号段——是公司内部的短号。他接起来,电话那头是张磊的声音,压得极低,像是躲在什么地方打的。
“陆哥,你听我说,你现在很危险。”
陆远的眼神变了,但他没有出声。
“刚才我去厕所,路过马总秘书的办公室,听到他们在打电话。他们说的不是解密的事,而是——”张磊的声音在发抖,“他们打算等数据一恢复,就把你控制起来。他们怀疑这次攻击跟你有关,至少是认为你有能力随时再搞一次这种事。马总亲自给安保部下的命令,说数据恢复之后,立刻收缴你所有的设备,把你带到一个地方隔离审查。”
陆远握着电话的手指微微收紧。
“他们还查了你的背景,查到你之前做过灰色产业的数据分析,准备拿这个做文章。如果确认是你干的,就直接报警,告你破坏计算机信息系统罪,这个罪判下来最少三年。”张磊几乎是在用气声说话,“陆哥,你快想办法。”
电话挂了。
陆远放下手机,脸上的表情没有任何变化。他端起咖啡杯又喝了一口,目光落在电脑屏幕上,进度条已经走到了百分之八十九。
会议室里的其他人都在各自的手机上或者电脑上忙着处理事情,没有人注意到他接了一个电话。王建国靠在椅子上闭着眼,像是终于能休息一会儿了。马国良站在大屏幕前,背着手看着那些红色的告警窗口,不知道在想什么。
百分之九十一。
陆远在脑子里飞速运转。
他猜到了马国良会翻脸,但没想到这么快。他原本的计划是解密之后,以手里的技术底牌为筹码,跟马国良谈一个合理的条件——比如股权,比如一个不会被随意拿捏的职位,比如一份白纸黑字的协议。
但马国良显然不打算跟他谈。
在马国良的眼里,陆远是一个不稳定的因素,是一个必须要清除的隐患。一个能一己之力锁掉整个公司数据库的人,哪怕他把数据恢复了,他也有能力再锁一次。这样的风险,任何一个成熟的商业领袖都不会允许它继续存在。
陆远理解马国良的逻辑,但这不代表他接受。
百分之九十七。
他站了起来。
“快完了?”王建国睁开眼问。
“还没有,我去趟洗手间。”陆远说着往外走。两个黑西装几乎同时看了过来,其中一个跟着他出了门,保持着大约五米的距离,一直跟到洗手间门口。
陆远进了洗手间,打开水龙头,洗了一把脸。镜子里的人看起来面色平静,甚至带着一丝若有若无的笑意,只有他自己知道心脏正在胸腔里狂跳。
他需要时间。
他需要足够的时间,在数据恢复之后、在被控制之前,给自己留一条后路。
问题是,什么样的后路,才能让马国良这种级别的人物不敢动他?
他把脸擦干,从洗手间出来的时候,脑子里已经有了一个雏形。
回到指挥室,进度条走到了百分之九十九。所有人都不约而同地站了起来,盯着屏幕上的数字。陆远走到电脑前,手指悬在键盘上方,等进度条跳到百分之百的那一刻,他敲下了最后一行命令。
大屏幕上那行刺眼的红色告警闪了一下,然后消失了。
取而代之的是一行绿色的字:“解密完成。数据库状态:正常。数据完整性:百分之百。”
会议室里爆发出了一阵压抑了很久的欢呼声。张磊跳了起来,赵海生双手捂着光头,差点哭出来。王建国用力拍了一下桌子,转头对马国良说:“马总,恢复了!全部恢复了!”
马国良点了点头,脸上看不出太多情绪,但他的目光始终没有离开过陆远。
而就在所有人都在庆祝的这几秒里,陆远悄无声息地完成了一件事。
他的手指在键盘上极快地敲了一串命令,屏幕上的界面闪了一下,变成了一个他刚才临时搭建的界面。这个界面看起来像是解密程序的后台日志,但实际上,他正在做另一件事——他在数据库的最底层,植入了一个新的脚本。
这个脚本比之前那个更小、更隐蔽、更难被发现。它只有十九个字符,藏在数据库的时区配置文件里,这个文件从系统搭建的第一天起就没人改过,以后也不会有任何人想起来去检查它。
这个脚本只有一个功能:如果陆远超过七十二小时没有在任何一台设备上输入一串特定的验证码,这个脚本就会把整个数据库再次加密。
不是永久的。
是临时的,加密会持续二十四小时,然后自动解开。
但这二十四小时,足够让马国良的公司股价跌到一文不值。
这是他的保险。
不是毁灭,是威慑。
做完这一切,他合上了笔记本电脑的盖子,站起来,转过身,面对着马国良。
“马总,数据全部恢复了,您可以让人检查。”
马国良看了陈婉清一眼,陈婉清立刻打开自己的电脑,登录了公司的管理系统,查看了几个关键模块。大约两分钟后,她冲马国良点了点头。
马国良终于露出了一丝笑意,但那个笑容没有到达眼底。
“陆远,辛苦了。”他走到陆远面前,拍了拍他的肩膀,“你为公司挽回了巨大损失,公司不会亏待你。这样,你先去旁边的休息室休息一下,我让秘书给你安排——”
“马总,”陆远打断了他,声音不大,但每个字都清清楚楚,“我的书包里有一块移动硬盘,硬盘里有一份完整的操作日志,记录了我从昨晚到现在在数据库上做过的所有事情。这份日志我已经加密备份到了三个不同的云服务器上,其中一个服务器设在国外的。”
会议室里的气氛骤然变了。
马国良的笑容凝固在脸上。
“另外,”陆远从口袋里掏出手机,按亮屏幕,上面显示着一个邮件草稿箱的界面,“我设置了一个定时邮件,收件人是国内五家主流财经媒体的编辑部。这封邮件里没有别的,就是一份详尽的调查报告,关于天行科技核心数据库的安全漏洞以及今晚发生的事情。如果我本人出现任何——怎么说呢——不可预见的情况,这封邮件就会自动发送。”
全场鸦雀无声。
王建国的嘴张着,像是被人塞了一个鸡蛋。陈婉清的脸色刷地白了。那两个黑西装对视了一眼,同时往前迈了一步,但马国良抬手制止了他们。
马国良盯着陆远的眼睛,陆远也盯着他的。
两个人对视了大概十秒钟。
“你想要什么?”马国良问。语气已经不再是刚才那种居高临下的施舍感,而是一种谈判对手之间才有的、带着谨慎和戒备的语气。
陆远笑了。
“马总,我刚才说了,等我解密了再说条件。现在解完了,咱们可以聊了。”
他把手机揣回兜里,拉过一把椅子,在马国良对面坐了下来。
“第一,我要公司的技术股权,不多,百分之三。按现在的估值,大概六千万。但我不要现金,我要股权,行权期三年。”
“第二,从今天起,研发部的CTO由我担任。王总可以留任,但核心系统的架构和安全管理归我管。”
“第三,我的薪资从月薪五千八调整到年薪——算了,这个你自己看着办,我相信一个CTO的薪资标准您比我清楚。”
“第四,我需要一份由你马总亲笔签名的协议,承诺公司放弃追究本次事件的任何法律责任,以及承诺不对我采取任何形式的限制人身自由、威胁、胁迫或报复行为。陈律师可以当场起草。”
“第五——”
“等等。”马国良举起一只手,“还有第五?”
陆远点了点头,很认真地补充了最后一条:“第五,年终奖,去年的八百块实在太少了,您得给我补上。”
马国良盯着他,沉默了。
会议室里的所有人都屏住了呼吸。这五分钟里发生的转折,比他们过去五年在商场上经历的所有谈判都要魔幻。一个年薪不到八万的底层程序员,刚刚锁了公司十亿的数据库,然后又亲手解开了,现在坐在CEO对面,像在菜市场砍价一样提条件。
马国良忽然笑了。
这次的笑容和之前那个完全不同,是一种带着意外的欣赏,甚至有一丝苦涩。
“如果我拒绝呢?”
“那一个小时后,你会接到第一个记者的电话。”陆远不紧不慢地说,“然后你会在接下来的三天里,看到天行科技的股价腰斩,客户纷纷解约,监管部门上门调查。哦对了,我刚才忘了说,我那份报告里还附赠了几个客户数据的样本——当然,是脱敏处理过的,但媒体不会管脱不脱敏,他们只关心‘天行科技核心数据泄露’这个标题够不够劲爆。”
马国良的笑容消失了。
他看着陆远,看了很久,久到窗外的雪都停了,久到桌上咖啡杯里的咖啡都凉透了。
然后他说了两个字:“成交。”
听到这两个字,陆远没有欢呼,没有得意,只是很平静地点了点头,然后站起来,朝陈婉清招了招手:“陈律师,麻烦起草协议。条款我刚才说过了,你记一下。”
陈婉清机械地点了点头,表情像是还没从这场突如其来的风暴中回过神来。
两个小时后,在一间只有五个人在场的会议室里,陆远和马国良同时在一式两份的协议上签了字。协议的内容涵盖了陆远提出的所有条件,包括那百分之三的技术股权、CTO的职位任命、薪资调整,以及最关键的——免于追究法律责任并承诺不进行任何形式的报复。
签字的时候,马国良的手很稳,笔迹和他平时的签名没有任何区别。但陆远注意到,他在签“陆远”两个字的时候,笔尖压得特别重,几乎把纸划破了。
签完之后,马国良把笔一放,站起来,看着陆远。
“从现在开始,你是天行科技的CTO。但我有一个问题,希望你能诚实地回答我。”
“您问。”
“这次的攻击,到底是不是你干的?”
陆远看着马国良的眼睛,认真地想了想。
“马总,这件事说来话长。但如果一定要给一个答案的话——我写的代码触发了一个我自己都没预料到的连锁反应,从这个意义上说,是的,是我的责任。”
他说的是真话,只是没有说全。
马国良盯着他看了几秒,最终没有追问。
“好,我信你。”他伸出手来,“欢迎加入天行科技的管理层。”
陆远握住那只手,感受到对方手掌的温度和力度。这只手握过无数人的命运,签过无数份决定公司走向的文件,此刻正握着他——一个昨天还在为八百块年终奖吃泡面的年轻人——的手。
世界真他妈的有意思。
走出会议室的时候,陆远在走廊里碰到了王建国。王建国靠在墙上,手里夹着一根没点的烟,看着他的眼神非常复杂。
“老王,”陆远停下来,“别这样看我,你还在CTO的位置上,我们以后是同事。”
王建国沉默了一会儿,忽然说:“我看不懂你的代码,看了三年都看不懂。我一直觉得那是你水平不行,写的烂。现在我才明白——”
“明白什么?”
“我看不懂你的代码,是因为你的水平太高了。”
陆远拍了拍他的肩膀,没有多说什么,走向了电梯。
电梯门打开的时候,里面站着一个人——那个从早上就一直跟着他的黑西装女人。她的表情不再是早上的冰冷,而是带着一种职业性的微笑。
“陆总,马总让我协助您办理职级变更手续。另外,您的新办公室在二十一楼,原来是副总裁办公室,已经让人去打扫了。”
“我叫韩冰,是行政部的安全主管。以后有任何需要,您随时找我。”
陆远点了点头,走进电梯。韩冰按下了二十一楼的按钮,电梯开始下降。在电梯经过十六楼的时候,陆远忽然说:“停一下。”
韩冰看了他一眼,按了开门键。
电梯门打开,十六楼是研发部的楼层。此刻这层楼空空荡荡,所有的灯都关着,只有走廊尽头的安全出口指示灯发出幽幽的绿光。陆远走出电梯,站在自己坐了三年工位的过道里,看着那张桌面堆满了各种杂物的桌子。
键盘上还沾着昨晚吃泡面溅出来的油渍,显示器旁边摆着一个玻璃杯,杯底还有一层褐色的茶垢。椅子的扶手被他磨得掉了皮,露出里面黄色的海绵。
这张桌子,他坐了三年。
三年里他写了整个公司最核心的代码,维护着最复杂的系统,解决了无数个别人解决不了的bug,从凌晨两点加班到早上七点的次数多到数不清。
换来的是一年八百块的年终奖。
现在他再也不用坐在这张桌子前了。
他转过身,走回了电梯。
“走吧。”他对韩冰说。
电梯门关上,继续下降。陆远看着电梯里的楼层数字一个一个地变小,心里想的却是别的事情。张磊在电话里说的那句话还在他脑子里回响——“他们打算等数据一恢复,就把你控制起来。”
如果不是张磊提前通风报信,他现在可能已经被关在某间没有窗户的房间里,被一群穿黑西装的人轮番盘问了。
这个恩,他记下了。
电梯到了二十一楼,门一开,面前是一条铺着地毯的走廊,和十六楼的水泥地面完全不同。走廊两边的墙上挂着公司的各种荣誉牌匾和产品海报,灯光温暖而柔和。
韩冰领着他走到走廊尽头的一扇门前,推开门,里面是一间大约四十平米的办公室,落地窗正对着整个科技园区,视野极好。办公桌是一整块实木的,比他在十六楼的那个塑料贴面工位大了至少五倍。
“陆总,这是您的办公室。需要什么配置或者改动,随时跟我说。”
陆远走进去,把书包放在桌上,走到窗前。雪已经完全停了,阳光从云层的缝隙中洒下来,把对面的几栋写字楼的玻璃幕墙照得金光闪闪。
他在窗前站了很久,然后掏出手机,给张磊打了一个电话。
“陆哥!”张磊的声音比早上更紧张了,“你没事吧?我听说你和马总在会议室里待了好久,外面的人都不敢进去——”
“我没事。”陆远打断他,“张磊,从今天起,你是研发部的副总监。”
电话那头安静了足足五秒钟。
“陆哥,你说什么?”
“研发部副总监,薪资翻倍,年终奖按总监级别走。任命文件下午就下发。”
“可是……可是王总那边……”
“王建国那边我去说。你的任命文件上签的是我的名字,我现在是CTO。”
又是一段漫长的沉默,然后电话那头传来了张磊压抑不住的兴奋和不敢置信的声音:“陆哥,你……你当上CTO了?”
“嗯。”
“卧槽!”张磊几乎是喊出来的,然后声音又猛地压低,像是在工位上捂着嘴说话,“那你是怎么办到的?跟马总谈判了?”
“算是吧。”陆远笑了一下,“详细的情况下午见面说。你现在先帮我办一件事。”
“你说。”
“把研发部过去三年的所有项目文档全部整理出来,我要看。”陆远转过身,坐在了那张宽大的实木办公椅上,椅子的皮垫柔软而舒适,和他原来那张硬邦邦的办公椅完全不同,“不是给客户看的那种PPT文档,是真正的技术文档。代码仓库的提交记录、系统架构的演变历史、每一次重大故障的事后分析报告,全部要。”
“好的陆哥,我马上去办。”
挂了电话,陆远靠在椅背上,看着天花板。
三年前,他拖着行李箱走进这栋大楼的时候,只是一个连本科学历都没有的肄业生,简历上唯一拿得出手的项目经验是一段他自己都不敢写太详细的灰色经历。面试的时候,王建国问他为什么离开上一家公司,他如实说了——被老板发现他在写一个自动化脚本替代自己百分之八十的工作量,老板觉得养一个“会偷懒的程序员”不划算,把他开了。
王建国当时笑了,说他就喜欢这种“会偷懒的程序员”。
结果三年后,王建国连他的代码都看不懂了。
人的变化,往往连自己都意识不到。
一阵敲门声打断了他的思绪。韩冰推门进来,手里拿着一个文件夹:“陆总,股权协议需要您签个字。另外,马总让我转达,明天上午十点在二十二楼开高管会议,讨论这次安全事件的事后处理和系统加固方案,您作为新任CTO需要做主题发言。”
陆远接过文件夹,翻开看了看,签了字。
“还有一件事,”韩冰犹豫了一下,“刚才法务部的陈律师来电话,说星辰安全那边的人想跟您约个时间沟通,他们对于这次的加密手法非常感兴趣,想请您做一次技术分享。”
“星辰安全?”陆远皱了一下眉,想起来这就是王建国请的那家第三方安全公司,也就是他们的人手贱触发了加密脚本,“告诉他们,没空。”
“好的。”韩冰转身要走。
“等一下,”陆远叫住了她,“星辰安全这次来现场的人,具体是谁你知道吗?”
韩冰翻了一下手机里的记录:“派了三个人,领头的叫林北辰,据说是他们公司的技术合伙人,业内挺有名的安全专家。就是他第一个尝试手动登录数据库的。”
林北辰。
陆远在脑子里记住了这个名字。不是因为他记仇,而是因为他记得昨晚追踪那个异常数据包的时候,发现的那个分片重组的扫描手法——那是鬼鲨的标志性手法。
林北辰触发了加密脚本,而鬼鲨的扫描手法出现在系统里。
这两件事之间,有没有关联?
“安排一下,”陆远改了主意,“明天下午,让林北辰来我办公室。”
韩冰点头记下,关门离开了。
办公室里又只剩陆远一个人。他打开笔记本电脑,连上了内网,开始仔细地审查昨晚到今天的所有系统日志。这一次,他不再是以一个底层程序员的身份去看,而是以CTO的身份,拥有最高的系统权限。
他的手指在键盘上飞快地敲击,屏幕上的数据流像瀑布一样倾泻而下。他找到了昨晚异常扫描的全部日志记录,把它们按照时间轴重新排列,然后在三维的拓扑图上可视化出来。
当整个攻击路径在他面前铺展开来的时候,他的瞳孔猛地收缩了一下。
这不是一次普通的扫描。
这是一次精确到令人发指的系统测绘。
攻击者——或者说鬼鲨——几乎扫描了天行科技整个内网的拓扑结构,从核心数据库到边缘服务器,从防火墙的规则配置到每一个端口的响应特征,全部被摸得一清二楚。而且最可怕的是,整个过程持续了至少一个月,而公司的安全团队毫无察觉。
鬼鲨不是昨天晚上才来的。
他早就在这里了。
而这个事实引发了一个更可怕的问题——如果鬼鲨扫描了一个月,他为什么不攻击?他在等什么?还是说,他根本不是来攻击的,他是在帮别人做前期的情报收集?
帮谁?
陆远靠在椅背上,盯着屏幕上那张密密麻麻的拓扑图,脑子里忽然闪过一个念头。
他想起了今天早上在会议室里,马国良提过的一个名字——“星辰安全”。
王建国请的安全公司。
鬼鲨的扫描手法,出现在了天行科技的系统里。
林北辰,星辰安全的技术合伙人,第一个触发了加密脚本的人。
这三者之间,是不是有一条线?
陆远深吸了一口气,决定从头开始,把这件事彻彻底底地查清楚。他现在已经不是那个可以置身事外、骑电动车回家吃泡面的底层程序员了。他是这家公司的CTO,系统的安全现在是他职责的一部分。
更重要的是——如果鬼鲨真的跟这件事有关系,那就是私人恩怨了。
五年前他们在暗网论坛上最后一次对话的时候,鬼鲨给他留了一句话:“你躲不掉的,迟早我们还会再见面。”
当时他以为那只是一句玩笑。
现在看来,也许不是。
窗外的阳光越来越亮,照在办公桌上,把桌面上的木纹照得清晰可见。陆远伸手从书包里摸出那半包软中华,抽出一根叼在嘴上,正准备点,忽然想起来这里不是十六楼的吸烟区。他站起来,走到窗边,打开了一扇侧窗,冷风灌进来,带着雪后特有的清冽气息。
他把烟点着,深深地吸了一口,烟雾在阳光下变成淡蓝色的丝缕,缓缓散开。
然后他掏出手机,翻到一个很久没联系过的号码,发了一条信息。
信息只有一个字加一个问号——
“在?”
收件人的备注名是两个字:鬼鲨。
发完之后,他把手机扣在桌上,继续抽烟。窗外,这座城市的轮廓在雪后的阳光下显得格外清晰,高楼大厦的玻璃幕墙反射着刺眼的白光,远处的高架桥上,车流已经恢复了正常的密度,像一条缓慢蠕动的金属河流。
一切看起来都那么正常,那么平静。
但陆远知道,平静只是表象。
这栋大楼里的每一个人,从CEO到前台,从研发部到行政部,所有人此刻都在经历一场看不见的地震。而震源,就是坐在二十一楼这间新办公室里、嘴里叼着烟、年薪从六万九千六直接跳到七位数的男人。
手机震动了一下。
他低头一看,屏幕上弹出一条新消息。
没有文字,只有一个符号——一个鲨鱼的emoji。
鬼鲨回他了。
陆远盯着手机屏幕上那个鲨鱼emoji看了大概十秒钟,没有回复。
他把手机翻了个面扣在桌上,烟夹在指间缓缓烧着,烟雾在阳光下变成淡蓝色的细丝,盘旋上升。窗外的科技园区安静得像一幅画,但他脑子里正在以每秒三千转的速度运转。
鬼鲨回了消息,说明这个五年前的联系方式依然有效。但问题不在于鬼鲨回不回消息,而在于——鬼鲨为什么会出现在天行科技的内网里?
是巧合?是受雇于人?还是冲着他来的?
无论哪种情况,都不能在一条短信里问清楚。而且说实话,以鬼鲨的性格,他就算回复了,也很可能是个坑。五年前合作的时候陆远就摸透了那个人的路数——鬼鲨做任何事都有目的,他的每一步棋都至少藏了三层意图,表面上的答案永远不是真正的答案。
他把烟掐灭在一个还没来得及放烟灰缸的纸杯里,重新坐回电脑前,打开了一个新的终端窗口。这一次他不是以CTO的身份登录的,而是用了他自己写的一套匿名工具,绕了三层代理,连上了一个国外的虚拟服务器。然后他从这个服务器上,用了一个五年前注册但从未登陆过的暗网邮箱,给鬼鲨发了一封邮件。
邮件内容很短,用了他们当年约定的加密方式——
“一个月前,你扫了天行的内网。为什么?”
发完之后,他合上电脑,靠在椅背上闭上了眼睛。
五年前的事像放电影一样在脑子里过了一遍。那时候他二十二岁,刚退学不久,白天在一家外包公司写代码,晚上就在暗网上接各种奇怪的技术活儿。写爬虫抓竞品数据、帮人挖网站漏洞换赏金、给某些见不得光的平台做数据清洗——他什么都干过,不是因为缺钱,是因为无聊。现实世界太慢了,所有人的节奏都像在泥浆里行走,只有技术能让他感觉到速度。
鬼鲨就是那时候认识的。他们在同一个技术论坛上互相较劲了三个月,先是互相拆对方的台,然后惺惺相惜,最后联起手来做了一票大的——黑进了东南亚一家赌博集团的服务器,把他们的用户数据全拖了出来,打包发给了国际刑警。当然,发邮件的IP伪装成了那家赌博集团竞争对手的地址,事后两家狗咬狗打得不亦乐乎,而他和鬼鲨在一旁喝啤酒看戏。
那次合作之后,鬼鲨说了一句话:“你是我见过的最好的。”
陆远当时回了一句:“你也是。”
然后他们就再也没有合作过。不是因为矛盾,而是因为陆远意识到这种事越做越危险。他的技术越好,闯的祸就可能越大。而鬼鲨不一样,鬼鲨是天生的冒险者,享受的不是技术本身,而是技术带来的掌控感。两个人本质上是不同的人。
后来他删了暗网账号,换了手机号,搬了城市,彻底消失了。
结果五年后,鬼鲨的扫描手法出现在了天行科技的内网里。
这他妈算什么事?
中午十二点,韩冰敲门进来,送了一份盒饭和一杯咖啡。盒饭是公司食堂的标配,两荤一素加一份米饭,但装在了一个精致的木质餐盒里,跟他以前在十六楼吃的那种塑料盒装的不一样。
“陆总,您的午饭。”
陆远接过餐盒的时候看了一眼韩冰。这个女人大概三十出头,短发,长相不算漂亮但有一种精干的气质,说话做事滴水不漏,笑容永远保持在刚好不会让人觉得假的程度。能在天行科技做到行政安全主管的位置,还能被马国良亲自派来“协助”新任CTO,绝对不会是个简单角色。
“韩主管,坐。”陆远指了指对面的椅子。
韩冰犹豫了一下,坐了下来,背挺得笔直。
“你在公司多久了?”
“四年。”
“四年就做到安全主管,很厉害。”陆远打开餐盒,夹了一块红烧肉塞进嘴里,“我问你几个问题,你如实回答。”
“您问。”
“公司的安全审计,平时谁负责?”
“主要由星辰安全负责。他们跟我们签了年度服务合同,每季度做一次全面的安全审计,每月做一次漏洞扫描。另外我们内部也有安全运维组,赵海生带的三个人,负责日常的监控和应急响应。”
“星辰安全的服务合同签了多久?”
“两年,去年刚续签的第三年。”
“也就是说,他们的安全审计做了两年,”陆远放下筷子,看着韩冰,“而我昨晚花了不到三十分钟,就找到了至少四个他们两年来都没发现的严重漏洞。”
韩冰的眼皮跳了一下。
“你别紧张,我不是针对你。”陆远端起咖啡喝了一口,“我在想一个问题——星辰安全是真的没发现,还是发现了没报告?”
韩冰沉默了几秒钟,然后非常谨慎地回答:“陆总,这个问题我没办法给您确定的答案。但我可以提供一些客观信息。过去两年里,星辰安全出具的审计报告一共有八份,我全部存档了。如果您需要,我可以现在调给您。”
“调。”陆远说了一个字。
韩冰立刻起身出去了。大约五分钟后,她抱着一个厚厚的文件夹回来了,里面是打印出来的八份审计报告,每一份都有三四十页,装订整齐。陆远接过来,没有马上翻,而是放在桌上,继续吃饭。
“还有一件事,”他边吃边说,“昨晚攻击发生的时候,星辰安全的林北辰是第一个到现场的。他做了什么操作,详细说说。”
韩冰回忆了一下:“林北辰是凌晨两点多到的,比王总还早了大概半个小时。赵海生给他开了临时的高级权限,让他登录数据库查看情况。他登录之后大概三四分钟,加密程序就触发了。”
“他登录的时候,旁边有人看着吗?”
“赵海生一直在旁边。”
“赵海生看得懂他在干什么吗?”
韩冰张了张嘴,最终摇了摇头:“赵海生的技术水平,主要是运维层面的,核心数据库的操作他……可能看不太懂。”
陆远点了点头,没再多问,把最后一块红烧肉吃完,盖上餐盒盖子。
“韩主管,帮我办两件事。第一,把星辰安全过去两年的审计报告全部扫描成电子版,发到我邮箱。第二,通知林北辰,下午三点来我办公室。”
“三点?之前说的是明天下午——”
“我等不了那么久。”陆远打断她,“就今天下午三点。”
韩冰点头,站起来走了。陆远看着她的背影消失在门口,然后收回了目光,若有所思地用手指敲着桌面。韩冰的每句话都没有漏洞,但正因为太滴水不漏了,反而让他觉得不太对劲。一个安全主管,面对公司数据库被人锁了这种天大的事故,不应该这么冷静。
除非她早就知道这件事会发生。
或者至少,她对这件事并不完全意外。
下午两点,陆远收到了韩冰发来的邮件,附件是八份审计报告的扫描件,加起来两百多兆。他打开第一份,从头到尾看了一遍。
星辰安全的审计报告写得非常专业,从网络层的防火墙规则到应用层的代码审计,从数据库的访问控制到日志系统的完整性检查,每一项都有详细的测试过程和结论。每一份报告的结论都是类似的——天行科技的安全状况“良好”,存在“个别低风险漏洞”,建议“定期修复”。
一个字都不提SQL注入的口子。
一个字都不提那个从系统搭建第一天就存在的权限管理漏洞。
一个字都不提那个三年前就废弃但从未清理的旧版本日志模块。
陆远看完八份报告,靠在椅背上,点了一根烟。
现在他有两个可能性的推理。第一种,星辰安全是真的菜,菜到连这么明显的漏洞都发现不了。第二种,星辰安全是故意的,他们发现了漏洞,但没有写在报告里,因为漏洞留在那里对他们有用。
如果是第二种,那意味着什么?
意味着星辰安全是天行科技的“安全服务商”,同时也是天行科技最大的安全隐患。他们像一个假装帮你装防盗门的锁匠,实际上偷偷在门框里塞了一把备用钥匙。
而林北辰,作为星辰安全的技术合伙人,昨晚“恰好”是第一个到达现场的人,“恰好”做了一系列操作之后加密程序就被触发了。
陆远深深地吸了一口烟,把烟头摁灭在纸杯里。
如果他的推理成立,那么林北辰触发加密脚本根本不是一个意外——而是他本来就在找那个后门。
鬼鲨的扫描,星辰安全的审计,林北辰的操作,这三件事串起来,指向一个非常明确的结论:有人在蓄谋已久地攻击天行科技的数据库,而这次攻击,被他陆远无意中抢了先。
他自己的加密脚本,反而成了阻止别人先动手的防火墙。
这个发现让他既想笑又想骂人。
笑的是,整个天行科技的安全防线跟筛子一样,被他穿了又被鬼鲨穿,被鬼鲨穿了又被星辰安全穿,穿来穿去所有人都以为是自己的独门绝技,结果就是一场大型的螳螂捕蝉黄雀在后。
骂的是,他本来只是想给自己讨个公道,结果阴差阳错搅进了一个比他想象中大得多的局里。
三点整,韩冰领着林北辰准时出现在了他的办公室门口。
林北辰比陆远想象的要年轻,大概二十六七岁,戴着一副无框眼镜,穿着一件深灰色的卫衣,背着一个看起来装了很多设备的双肩包。他的五官很清秀,笑起来甚至有点腼腆,像那种在大学图书馆里一坐就是一天的技术宅男。
但如果仔细看他的眼睛,会发现那里面有一种和他的外表完全不符的东西——一种冰冷的、计算着的、像机器一样的专注。
“陆总好。”林北辰在办公桌对面坐下来,语气礼貌但不高亢,“昨天的事,我代表星辰安全向公司致歉。我们也没想到系统里会有那种级别的加密脚本,确实是我们的失误。”
“什么样的失误?”陆远问。
林北辰扶了一下眼镜:“我在登录数据库的时候,没有提前做足够的安全检查,直接触发了加密条件。如果当时我先做一个模拟沙盒的测试,也许就不会——”
“林北辰,”陆远打断了他,身体微微前倾,双手交叉放在桌上,“我们不说这些了。我叫你来,是想跟你聊点别的事。”
林北辰的眼神动了一下,但表情没有任何变化:“什么事?”
陆远盯着他的眼睛,一字一句地说:“你怎么知道那个登录操作会触发加密?”
空气安静了大概三秒。
林北辰的表情依然没有变化,但他的手指——只有一根食指——在膝盖上轻轻敲了一下。那个动作非常细微,如果不是陆远刻意在观察他的微表情,根本不可能注意到。
“我不明白您的意思。”林北辰说。
“那我换个问法。”陆远靠在椅背上,从烟盒里抽出一根烟,点上,“你在星辰安全做了几年了?”
“三年。”
“三年前你在哪儿?”
“在清华读研究生,信息安全专业。”
“清华的信息安全专业,全国前三。”陆远吹出一口烟,“你的导师是谁?”
“赵明志教授。”
“赵明志,”陆远重复了一下这个名字,然后在脑子里飞速检索了一遍,“国内密码学领域的权威,三年前参与过国家标准加密算法的设计。你跟着他读研究生,学的是什么方向?”
“主要是密码学和系统安全。”
“很好。”陆远点了点头,“那你告诉我,一个密码学方向的清华研究生,星辰安全的技术合伙人,在面对一个未知的数据库加密锁的时候,会不做任何沙盒测试就直接登录核心节点吗?”
林北辰的喉结动了一下。
“要么你是个水货,”陆远继续说,“要么你就是故意的。我看过你的技术履历,你不是水货。”
办公室里安静得能听到墙上时钟的秒针走动声。林北辰沉默了很久,然后摘下了眼镜,用卫衣的下摆慢慢擦着镜片。
“陆总,”他重新戴上眼镜,声音比刚才低了半度,“你到底是什么人?”
“我是天行科技的CTO。”陆远弹了一下烟灰,“不过这个问题应该我来问你——林北辰,你到底是什么人?”
两个男人隔着办公桌对视着,空气里有一种微妙的张力,像两根被拉到极限的橡皮筋,随时可能崩断。
林北辰先移开了目光。
“我不能说。”他的声音很轻,“不是我不想说,是我不能说。但我可以告诉你一件事——昨天晚上,我不是来攻击天行科技的。”
“那你是来干什么的?”
“我是来保护它的。”
陆远夹着烟的手指停了一下。
“保护它?”他重复了一遍,“从谁手里保护它?”
林北辰没有回答这个问题,而是从双肩包里拿出一台轻薄笔记本,打开,敲了几个命令,然后把屏幕转向陆远。
屏幕上是一张复杂的网络拓扑图,跟陆远昨晚自己画的那张很像,但更详细、更完整。不同的是,这张图上标注了至少六个红色的攻击路径,每一条都从不同的入口进入,指向天行科技的核心数据库。
“这不是一个月前开始的,”林北辰指着其中一条路径,“这是四个月前开始的。我追踪到最早的一次扫描是在九月份。”
陆远看着那张图,眉头皱了起来。
四个月前。
那时候他还在十六楼天天吃泡面写代码,年终奖的事连影子都没有,鬼鲨也没出现在他的生活中。也就是说,这件事从一开始就跟他没关系,他完完全全是一个被卷进来的局外人。
“谁干的?”他问。
林北辰在键盘上又敲了几个键,拓扑图上弹出了一个单独的窗口,里面是一串他追踪到的IP地址和节点信息。
“源头不在国内,”林北辰说,“经过了至少十一层跳板,最终落在了东欧。但我没办法继续往下追了,对方的安全措施非常强,再追下去我会暴露。”
“你试过反向渗透吗?”
“试了,没用。对方的蜜罐做得太好了,我反向打进去的时候掉进了一个假的数据库,差点被反追踪。如果不是我切得快,现在坐在你面前的可能就是另一拨人了。”
陆远把烟掐灭,盯着那张图陷入了沉思。
过了大概一分钟,他重新开口:“所以你是以星辰安全的身份做掩护,实际上在独自追踪一个针对天行科技的国际攻击计划?你怎么知道他们会攻击天行科技?”
“因为我在暗网上看到了一个悬赏。”林北辰说,“四个月前,有人在暗网上发布了一个匿名悬赏,标的是一千万美金,要求是拿到天行科技核心数据库的全部数据,并且要在特定的时间点公开释放。悬赏的截止日期是——”
“什么时候?”
“二月十号。也就是大年初七,天行科技春节后复工的第一天。”
陆远的心头一紧。
二月十号,距离现在还有十二天。
“你知道这个悬赏是谁发的吗?”
“不知道。但能出一千万美金买一家中型科技公司的数据,要么是商业竞争对手,要么是——”林北辰顿了一下,“有更大的利益在背后。”
“什么更大的利益?”
“天行科技的数据本身不值一千万美金,但如果这些数据能被用来撬动更大的东西,那就值了。比如,天行科技的客户里有两家国资背景的大型企业,他们的交易数据如果被公开,可能会影响到某些政策性的项目。再比如,天行科技正在申请科创板上市,数据安全是审核的核心指标之一。如果在上市审核期间爆出大规模数据泄露,上市就黄了。”
陆远听完,沉默了很久。
他不得不承认,林北辰的分析是对的。天行科技的数据本身不值一千万,但这些数据的战略价值——或者说破坏性价值——远远超过一千万。
有人在用一千万美金买一场精准的破坏行动。
“你现在为什么要告诉我这些?”陆远忽然问。
林北辰看着他,目光里第一次出现了一种类似于诚恳的东西:“因为你是天行科技的新任CTO,因为你能写出那种级别的加密脚本,因为——”
他深吸了一口气。
“因为我一个人搞不定。我需要帮手。”
陆远没有马上回答。他站起来,走到落地窗前,看着外面的城市。夕阳已经开始西沉,金色的光铺满了天空,把那些高楼的轮廓勾勒成了一条条锋利的黑色剪影。楼下街道上的车流在缓慢移动,每一个开车的人都不知道,头顶上这栋大楼里正在进行一场关于上亿价值的对话。
他转过身来,看着林北辰。
“最后一个问题。”
“你问。”
“你和鬼鲨是什么关系?”
林北辰的表情裂开了一道缝。不是夸张的那种,而是像一面镜子上突然出现了一道极细的裂纹,虽然镜面没碎,但你知道它已经不是完整的了。
“你怎么知道鬼鲨?”他问。
“我先问的你。”
两个人又对视了。这一次的对视比之前更短,因为林北辰先低下了头。
“鬼鲨是我的……怎么说呢,算是半个师傅。”林北辰的声音变得很涩,“我大四那年在一场CTF比赛里认识他,他在网上,全程匿名。那场比赛我拿了第一名,比赛结束后他给我发了一封邮件,说我有天赋,问我想不想学真正的东西。”
“然后呢?”
“然后他教了我一年。不是那种正式的教,就是偶尔丢给我一个技术难题,让我自己去解,解不出来他再给提示。我现在的很多渗透手法,都是跟他学的。”
陆远重新坐回椅子上,心里有一块拼图咔嗒一声扣上了。
林北辰的扫描手法和鬼鲨很像,因为那就是鬼鲨教的。鬼鲨四个月前出现在天行科技的系统里,不是来攻击的,而是来踩点的——但他不是为了自己,而是把信息给了林北辰。
或者说,鬼鲨和林北辰在做同一件事。
“那个扫描,是你让鬼鲨帮你做的?”陆远问。
林北辰摇了摇头:“我请求过他帮忙,但他当时没有答应。后来有一天他突然给我发了一份天行科技的系统拓扑图,特别详细,说了一句‘你用得着’就消失了。我也不知道他是怎么拿到的。”
陆远闭上眼睛,脑子里快速地把所有线索重新排列组合了一遍。
鬼鲨拿到了天行科技的系统拓扑图——以鬼鲨的水平,这不算什么难事。但他为什么要帮林北辰?是因为师徒情分?还是因为鬼鲨也对这个悬赏感兴趣?
不对。
如果鬼鲨想要一千万美金,他自己就能拿下天行科技的数据库,根本不用绕这么一大圈。
那鬼鲨的目的是什么?
“林北辰,”陆远睁开眼睛,“从现在开始,你和我一起查这件事。星辰安全那边你不用管,我会让马总把天行科技的安全服务合同转到你个人名下,算是你的额外项目。但有一个条件。”
“什么条件?”
“从现在开始,你我之间没有任何秘密。关于这件事的一切信息,必须实时同步,不能有半点保留。”
林北辰想了想,用力地点了点头。
“成交。”
他站起来,朝陆远伸出手。陆远握住那只手,感觉到对方掌心的温度和微微的湿意——这个清华高材生在紧张,虽然他一直在努力控制,但他的身体出卖了他。
“走吧,”陆远拎起书包,“带你去一个地方。”
“去哪儿?”
“十六楼,我的老工位。”陆远走到门口,回头看了他一眼,“我给你看个东西。”
两个人坐电梯下到十六楼。今天是放假第一天,整个楼层空无一人,所有的灯都关着,只有窗外透进来的一点天光勉强照亮走廊。陆远带着林北辰走到自己坐了三年工位前,拉开抽屉,从最底层翻出了一个黑色的笔记本。
不是电脑,是一个真正的纸质笔记本,封皮已经磨得起了毛边,里面密密麻麻地写满了字和代码片段。
“这是什么?”林北辰问。
“我在天行科技三年写的所有代码的记录,”陆远翻开笔记本,指着其中一页,“包括核心系统的所有漏洞和我自己写的补丁。这个笔记本里记录了天行科技数据系统的完整骨骼,每一条血管、每一根神经。”
林北辰接过笔记本,翻了翻,眼珠子越瞪越大。
“你手写的代码?”
“有些东西不适合留在电脑上。”陆远说。
林北辰翻到其中一页,手指停住了。那页纸上画着一个复杂的架构图,正中央用红笔圈了一个圈,旁边写着四个字——“核心后门”。
“这是什么?”
陆远凑过去看了一眼,然后从林北辰手里拿回笔记本,合上,放回抽屉里。
“是一个我自己都不知道该不该留的东西。现在不是时候,等时候到了,我会告诉你。”
他说的是实话。
那个后门是他入职第一年写的,是他在系统里埋下的最深的一道保险——比昨晚用的那个加密脚本更深,比他在数据库时区配置里埋的那个小脚本更深。它藏在整个系统的地基里,只要他不主动激活,全世界没有任何人能发现。
这是他的最后一张牌。
他希望自己永远用不上。
两个人从十六楼出来的时候,天色已经暗下来了。陆远的手机在口袋里震了一下,他掏出来看了一眼——是鬼鲨的邮件回复。
只有两行字。
“我看到新闻了。恭喜你当上CTO。”
“小心你身边的每一个人。”
陆远把手机揣回兜里,脸上没有表情,但后背上已经起了一层薄薄的冷汗。
新闻?什么新闻?
天行科技数据库被锁的事情是严格保密的,马国良下了死命令,任何人不得外传。鬼鲨说的“新闻”,是从哪里看到的?
而且“小心你身边的每一个人”——这句话是什么意思?
他下意识地转头看了一眼林北辰。林北辰正在低头回消息,脸上没有任何异常。
然后又想到了韩冰,想到了马国良,想到了王建国,想到了早上会议室里的每一张脸。
身边的每一个人。
他深吸了一口气,把所有的疑问压下去,拍了拍林北辰的肩膀。
“走,我请你吃饭。”
“现在?”
“现在。”陆远朝电梯走去,“吃沙县,我常去的那家,花生酱拌面加排骨汤,十二块。老板娘的辣椒酱是自己熬的,好吃。”
林北辰跟在后面,显然对这位新任CTO的饮食品味有些意外,但没说什么。
电动车还停在B1的老位置。陆远开了锁,拍了拍后座:“上来。”
林北辰看着那辆缺了一个后视镜、车筐用铁丝绑着的雅迪电动车,沉默了两秒,然后默默地跨了上去。
电动车发出一声熟悉的濒死般的嗡鸣,颤颤巍巍地驶出了地库。
夜风吹在脸上,陆远眯起眼睛,脑子里反复回放着鬼鲨那句“小心你身边的每一个人”。
他不知道鬼鲨在暗示什么,但他知道一件事。
从今天早上他踏入天行科技大厦的那一刻起,他就已经进入了一场比他想象中更大、更深的游戏。而这场游戏的棋盘上,每一个玩家都戴着面具,包括他自己。
电动车拐进那条熟悉的巷子,沙县小吃的灯还亮着,橘黄色的灯光在夜色中显得格外温暖。老板娘看见陆远,习惯性地喊了一句“拌面加排骨汤”,然后看见他身后跟着的林北辰,愣了一下。
“带朋友来了?稀客啊。”
“同事。”陆远在常坐的那个位置坐下来,从筷筒里抽出两双筷子,递给林北辰一双。
林北辰接过筷子,看了看油腻腻的桌面,又看了看墙上贴着的手写菜单,表情有些恍惚。
“陆总,你现在是CTO了,年薪至少七位数,还来吃沙县?”
“七位数?”陆远笑了一下,“马国良还没说给我开多少钱呢。再说了,七位数就不能吃沙县了?”
拌面端上来了,热气腾腾的,花生酱的香味浓郁而霸道。陆远搅开面条,大口大口地吃,声音很响。林北辰犹豫了一下,也跟着吃起来。
吃了两口,林北辰放下筷子,认真地看着陆远。
“陆总,有一件事我刚才没来得及说。关于那个悬赏,截止日期是二月十号,但发布悬赏的人加了一条规则——如果有人在截止日期之前提前拿到了数据,悬赏金翻倍。两千万美金。”
陆远的筷子停了一下。
“两千万美金,”他嚼着面条,含含糊糊地说,“够买多少碗拌面了。”
“我没开玩笑。”林北辰的表情非常认真,“从现在到二月十号,每一天都会有人尝试攻击天行科技。不只是东欧那拨人,暗网上的悬赏一旦挂出来,全世界所有想赚这笔钱的黑客都会来试。昨晚的攻击只是一个开始,真正的大潮还在后面。”
陆远把碗里的面条吃干净,喝了一口汤,用纸巾擦了擦嘴。
“那就让他们来。”
他把纸巾扔进垃圾桶,靠在椅背上,看着林北辰。
“他们来多少,我就给他们准备多少惊喜。”
这句话的语气很平淡,就像是说“明天可能会下雨”一样。但林北辰看着陆远的表情,忽然觉得这个穿着破羽绒服、骑着二手电动车、吃十二块沙县的年轻CTO,比他见过的任何一个技术大牛都要危险。
不是因为陆远的技术有多强——虽然确实很强。
而是因为陆远身上有一种非常稀缺的品质。
他不怕。
不是那种装出来的不怕,也不是那种年轻气盛的无知无畏,而是一种经历过真正的风暴之后沉淀下来的、骨子里的冷静。就像一块被反复淬炼过的钢铁,外面是冷的,里面也是冷的,但它不会断。
“走吧。”陆远站起来,扫了码付了钱,“明天开始,公司见。对了,你住哪儿?”
“公司附近的一个酒店。”
“那就坐我的电动车回去,顺便说说明天的安排。”
两个人走出沙县,电动车重新上路。这一次陆远骑得很慢,夜风已经不像白天那么冷了,带着一丝湿润的气息,像是又要下雪。路灯把他的影子长长地投在巷子的墙壁上,影子被墙角的砖缝切成了一段一段的。
“明天早上十点高管会议,我会正式宣布系统安全升级计划。你作为外部安全顾问列席。”陆远一边骑车一边说,“会后我让赵海生把公司所有安全系统的权限全部对我们两个开放,从头到尾做一次全面的安全审计。这次审计不是星辰安全那种走过场的,是真正的、不留死角的全量检查。”
“然后呢?”
“然后我们做三件事。第一,把所有已知漏洞全部堵上。第二,搭建一套新的入侵检测系统,用我自己的代码。第三——”
他转头看了林北辰一眼。
“第三,找到那个悬赏背后的发布者。”
电动车在红灯前停下来。林北辰沉默了一会儿,问了一个一直想问但没敢问的问题:“陆总,你为什么要掺和这件事?你拿了CTO的位置,你可以只做安全升级,把系统加固好就完了。追查悬赏发布者这种事,风险太大了。”
陆远没有马上回答。
红灯变成了绿灯,他拧动油门,电动车继续向前。过了大概两分钟,他才开口。
“因为有人想用两千万美金毁掉一个东西,而这个东西里有我三年的代码。”
他说这句话的时候,声音很平静,像是在描述一个非常简单的数学公式。但林北辰听出了那句话背后的意思——那三年里的一百七十万行代码,是陆远在这个世界上留下的最重要的痕迹。哪怕那三年他被当成一个不值钱的初级工程师,哪怕他的代码没人看得懂,哪怕他拿的年终奖只有八百块。
那些代码是他的。
谁也不能碰。
电动车驶进了科技园区的范围,天行科技大厦的轮廓在夜色中越来越清晰。二十二楼顶的logo灯依然亮着,白色的光在深蓝色的天幕下显得格外醒目。
陆远抬头看了一眼那束光,忽然想起今天早上骑车出门的时候,也抬头看过它。那时候他还在想“谁给谁打工”的问题。
现在答案已经很清楚了。
天行科技给他打工。
而他,要给那些试图毁掉他三年心血的人上一课。
电动车拐进了地下车库,消失在入口的黑暗里。
第二天,腊月二十九,天行科技大厦的会议室里座无虚席。
这原本是一年中最冷清的日子,所有公司都放假了,但天行科技的所有高管全部到场。马国良坐在主位,左边是王建国,右边是陆远。其他VP、各部门总监、法务部陈婉清、行政安全韩冰,以及作为特邀外部顾问出席的林北辰,把长条会议桌坐得满满当当。
大屏幕上显示着四个大字——“安全升级计划”。
陆远站起来,走到屏幕前。他今天换了一身干净的衣服,一件深蓝色的衬衫和一条黑色的休闲裤——韩冰昨天下午坚持让人送过来的,说“CTO不能穿着破了拉链的羽绒服出席高管会议”。
衬衫的领子有点硬,他不习惯,但他忍了。
“各位,昨天发生的事情大家都很清楚,我不再赘述。今天要说的只有两件事——第一,天行科技的安全系统存在严重漏洞,昨天只是一个巧合性的触发,如果没有修复,类似的攻击随时可能再次发生。第二,我已经和林北辰完成了初步的安全评估,制定了一套完整的系统加固方案,今天开始实施。”
他按了一下遥控器,屏幕上弹出了一张详细的计划表,每一步都有明确的时间节点和负责人。
“系统加固分为四个阶段。第一阶段,年前完成所有已知漏洞的修复,包括数据库访问权限的重新分配、防火墙规则的升级、以及废弃模块的彻底清理。第二阶段,春节期间搭建新的入侵检测系统,由我和林北辰负责。第三阶段,初七复工之前完成全量渗透测试。第四阶段,初七之后建立常态化的安全运维机制。”
所有人都在认真听,没有人走神。会议室里的气氛和昨天完全不同——昨天是恐慌,今天是肃穆。
“还有一件事,”陆远放下遥控器,目光扫过在场的每一个人,“经马总授权,从今天起,天行科技所有系统的最高安全权限由我直接管理。任何人对核心系统进行操作,必须经过我的审批。包括王总在内。”
王建国的嘴角抽了一下,但没有说话。
“另外,”陆远转向陈婉清,“陈律师,我需要你起草一份保密协议。今天在场的每一个人都要签。昨天发生的事,以及接下来安全升级的所有细节,一个字都不能外泄。”
陈婉清点了点头。
马国良从头到尾没有说话,只是安静地听着。等陆远讲完,他才站起来,环顾了一圈会议室。
“陆远的方案我已经看过了,董事会也批准了。”他的声音低沉而有力,“从现在开始,天行科技的安全工作由陆远全权负责,所有人都要配合。不管这个过程中涉及到谁、触动到什么利益,都必须让步。”
他的目光在每个人脸上停了一秒。
“包括我。”
这句话让整个会议室都安静了。
马国良坐回去,冲陆远点了点头:“继续。”
会议持续了两个小时。陆远把整个安全升级计划的每一个细节都讲了一遍,从技术架构到人员安排,从应急预案到恢复机制,条理清晰、逻辑严密。他讲话的方式和他写代码一样——没有任何废话,每一句话都直接命中要害。
散会的时候,所有人都沉默了。那些平时在会议上高谈阔论的VP们,今天一个多余的问题都没有问。不是没话说,是说不出来——陆远的方案太完整了,完整到你提不出任何有效的质疑,只能执行。
走出会议室的时候,王建国从后面快步跟上陆远。
“陆远,”他的语气有些别扭,像是还不习惯叫这个名字后面不跟“你他妈”,“安全升级的事,我全力配合。但我有一个请求。”
“你说。”
“星辰安全的合同,能不能不终止?”
陆远停下脚步,看着王建国。
“你跟他们有私人关系?”
“不是私人关系。”王建国推了推眼镜,表情有些尴尬,“星辰安全的创始人是我大学同学,当年公司刚起步的时候,人家帮了不少忙。我知道这次他们出了纰漏,但如果直接终止合同,我在中间很难做人。”
陆远想了想,说:“合同可以不终止,但星辰安全的权限范围要调整。以后他们只做外围的安全审计,核心系统的部分由我和林北辰直接管。”
“可以。”王建国松了口气,“多谢了。”
“不客气。”陆远拍了拍他的肩膀,“不过老王,有句话我得提醒你——你那个大学同学,你确定你了解他?”
王建国愣了一下:“什么意思?”
“没什么意思,就是提醒你多留个心眼。”陆远说完,转身朝自己的办公室走去。
他在会议室里讲的是一套方案,在他脑子里运转的是另一套方案。安全升级是真的,系统加固是真的,但这些都是明面上的动作。真正重要的,是在这些明面动作的掩护下,他和林北辰要做的事。
追查悬赏的发布者。
今天是腊月二十九,距离二月十号还有十一天。
他推开办公室门的时候,林北辰已经坐在里面了,面前的笔记本电脑打开着,屏幕上是一个陆远熟悉的界面——暗网的访问入口。
“有进展了?”陆远关上门。
“有。”林北辰的表情很严肃,“我昨晚通过星辰安全的渠道联系了几个暗网上的信息贩子,花钱买了关于那个悬赏的情报。”
“多少钱?”
“五千美金,公司报销吗?”
“报。”陆远在他对面坐下来,“说吧。”
“悬赏的发布者用的是一套非常复杂的匿名系统,在暗网上被叫做‘零号’。零号不是一个人,更像是一个服务——专门为一些见不得光的大额交易提供匿名发布和担保的平台。发布者在零号上发布悬赏,零号负责验证悬赏的真实性、托管赏金、以及保护发布者和执行者的身份。”
“发布者是谁?”
“零号的系统是绝对保密的,外人不可能查到。”林北辰说,“但我从那个信息贩子手里买到了一份零号服务器的IP地址链——不是直接的IP,是零号在互联网上做数据中转时使用的一组跳板节点。”
他在键盘上敲了几个键,屏幕上出现了一串IP地址。
“这十个IP,分布在七个不同的国家。其中有两个在国内——一个在深圳,一个在杭州。这两个国内节点,就是发布悬赏的人最初接入零号平台时使用的入口。”
陆远盯着那两个IP地址,沉默了几秒钟,然后打开了自己的电脑。
“给我五分钟。”
他的手指开始飞快地敲击键盘,屏幕上的数据流以肉眼可见的速度滚动。他在通过自己写的一套反向追踪工具,对那两个国内IP进行深度解析。
四分三十七秒后,他停下来了。
“深圳那个IP是一家咖啡店的公共WiFi,没有任何追踪价值。杭州那个IP——”
他盯着屏幕上的结果,眉头皱了起来。
“杭州那个IP是注册在一家科技公司名下的专线网络。”
“哪家?”
“云澜科技。”
听到这三个字,林北辰的脸色变了。
“云澜科技?”他重复了一遍,“你确定?”
“确定。”陆远把屏幕转过来给他看,“你听说过这家公司?”
林北辰深吸了一口气,靠在椅背上,眼睛瞪得很大。
“云澜科技是天行科技最大的竞争对手。去年两家一起竞标了浙江省的一个智慧城市项目,天行科技赢了。那个项目标的很大,第一期就是五个多亿。云澜科技输了竞标之后,股价跌了百分之三十,市值蒸发了将近四十亿。”
陆远靠在椅背上,手指无意识地敲着桌面。
四十亿市值的蒸发,换一千万美金的悬赏来毁掉天行科技的数据——这笔账算下来,很划算。
“但这只是间接证据,”林北辰说,“一个IP说明不了什么,最多能证明有人从云澜科技的网络上发过悬赏。他们完全可以否认,说是员工个人行为或者网络被挟持。”
“所以需要更多证据。”陆远站起来,走到窗边,“但至少我们有了一个方向。”
他转过身来,看着林北辰。
“想办法拿到云澜科技去年的安全日志。”
林北辰瞪大了眼睛:“你是让我黑进竞争对手的系统?”
“我没说黑。我说的是——拿。”陆远的嘴角微微上扬,“而且,以你的技术,这不叫黑,这叫安全检测。”
林北辰沉默了几秒,忽然笑了。
“陆总,你果然不是好人。”
“我从来没说我是好人。”陆远走回桌前坐下,“我有十一天时间,我要在这十一天里找到所有的证据,然后把它们拍在马国良的桌上——或者更准确地说,拍在公安部门的桌上。”
“然后呢?”
“然后?”陆远笑了一下,“然后我继续当我的CTO,天行科技继续上市,你继续做你的安全专家,世界和平,万事大吉。”
“万一不是云澜科技呢?”
“不是最好,那我们继续查。但如果是,”陆远的目光变得锋利起来,“我会让他们知道,用两千万美金的悬赏来对付一家公司不叫高明,叫愚蠢。因为真正的安全,从来不是靠堵漏洞堵出来的——”
他拿起桌上的纸杯,把里面已经凉透的咖啡一饮而尽。
“是靠让所有人都知道,攻击你的代价,比他们想象的严重得多。”
下午三点,陆远一个人去了马国良的办公室。
马国良的办公室在二十二楼的最深处,面积大约有一百平米,整面墙的落地窗可以俯瞰整个科技园区的全景。室内装修极简,除了办公桌、书架和一组会客沙发之外几乎没有任何多余的装饰。唯一的点缀是墙上挂着的一幅字,写着“如履薄冰”四个字,笔锋瘦硬,看起来写这幅字的人是个有故事的人。
马国良正站在窗前打电话,看见陆远进来,指了指沙发示意他坐。
陆远坐下来,等了大概三分钟。马国良挂了电话,走过来在他对面坐下。
“什么事?”
“马总,安全升级的事已经在推进了,按照计划走不会出问题。我来找您,是说另一件事。”
马国良的脸上看不出任何表情。
“什么事?”
“关于昨天这次攻击,”陆远斟酌了一下措辞,“在安全升级过程中,我发现了一些额外的线索。这些线索指向了一个方向——昨天的攻击不是孤立的,它可能是一个更大的计划的一部分。”
马国良的眼神微微变了一下,但很快恢复了平静。
“什么计划?”
“有人在暗网上发布了一个悬赏,一千万美金,目标是拿到天行科技核心数据库的全部数据。悬赏的截止日期是二月十号。”
马国良沉默了片刻,然后问:“你确定这个情报可靠?”
“基本确定。”陆远没有提林北辰的名字,也没有提悬赏发布者IP的事,“而且,从这个悬赏的规模和发布方式来看,对方不是普通的黑客,背后有相当专业的组织能力。”
马国良站起来,走到窗前,背对着陆远。阳光把他整个人的轮廓镀上了一层金色的边,但他的背影看起来很沉重。
“我知道是谁。”他忽然说。
陆远一愣。
“你知道?”
“我怀疑过。”马国良转过身来,“去年我们拿下了浙江省的智慧城市项目之后,云澜科技的CEO宋云澜给我打过一次电话。电话里他什么都没说,只说了八个字——‘来日方长,好自为之’。然后就挂了。”
“您怀疑是云澜科技?”
“没有证据。”马国良摇了摇头,“但商场上混了这么多年,直觉告诉我,能做这种事、有动机做这种事、而且有财力做这种事的人,不多。”
陆远沉默了一会儿,然后说:“马总,如果我查到了证据,公司打算怎么处理?”
马国良看着他,目光里有一种深沉的考量。
“你想怎么处理?”
“走法律途径。报警,立案,让对方承担刑事责任和民事赔偿。”
马国良没有马上回答。他重新坐回沙发上,双手交叉,拇指来回摩擦。
“陆远,你今年多大?”
“二十七。”
“二十七岁就当上了CTO,我二十七岁的时候还在中关村摆柜台卖盗版光盘。”马国良笑了一下,那个笑容很淡,“年轻人有冲劲是好事,但商场上的事情,有时候不是有证据就能赢的。”
“什么意思?”
“云澜科技的背后是云海集团,云海集团的董事长宋云海是宋云澜的哥哥。云海集团的总资产大概在三百亿左右,业务涵盖了科技、地产、金融三个板块,是浙江省民营企业的前二十名。”马国良的语气很平静,但每一个字都带着分量,“如果你真的要动云澜科技,你要考虑的不只是一家公司,而是它背后的整个利益链。地方政府的关系、银行的贷款、合作伙伴的合同——这些都会成为阻力。”
陆远听完,没有马上回应。他站起来,走到马国良办公桌前,看着墙上那幅“如履薄冰”的字。
“马总,这幅字是您自己写的?”
马国良看了一眼那幅字,眼神里闪过一丝复杂:“是一个朋友写的。他已经不在了。”
“如履薄冰,”陆远念了一遍,“意思是很谨慎,像是在薄冰上走路,每一步都要小心翼翼。这是您做生意这么多年的经验?”
“算是吧。”
“但薄冰下面是什么?”陆远转过身来,看着马国良,“如果没有人去打破那层冰,大家一辈子都要在上面小心翼翼地走。而有些人——比如云澜科技——就会利用这种小心翼翼来为所欲为。因为他们知道,大多数人不敢打破冰。”
马国良没有说话。
“我不是大多数人。”陆远说。
办公室里的气氛变得微妙起来。两个男人隔着几步的距离对视着,一老一少,一个是商场上摸爬滚打二十多年的老江湖,一个是三天前还骑着电动车吃泡面的年轻程序员。他们来自完全不同的世界,但此刻,他们的目光在空中碰撞出了一种奇怪的火花。
马国良忽然笑了。
和昨天那种带着戒备的笑容不同,这次的笑是一种真正被打动了的东西。他从沙发上站起来,走到陆远面前,伸出手。
“好。我支持你。”
陆远握住他的手,用力握了一下。
“但我有条件,”马国良紧接着说,“必须在法律框架内。不能以违法的方式去查违法的事情,否则你就和他们没有区别了。”
“我明白。”
“还有,安全升级必须同步推进,不能因为查这件事耽误了系统的加固。二月十号之前,天行科技的系统必须固若金汤。”
“已经在做了。”
马国良松开手,走回办公桌前,按下座机上的一个按钮:“韩冰,来我办公室一趟。”
不到一分钟,韩冰敲门进来了。她看见陆远也在,眼神里闪过一丝意外,但没有表现出来。
“韩冰,从现在开始,公司成立一个临时的安全专项组,陆远任组长,你任联络人。专项组需要的所有资源,直接批,不用走常规流程。”马国良的语气不容置疑,“另外,你个人负责专项组和外部机构的对接工作。”
“外部机构?”韩冰问。
“可能包括公安机关、律师事务所、以及监管部门。具体需要对接哪些,陆远说了算。”
韩冰的表情变了——不是慌乱,而是一种被突然压上重担之后的紧绷。她看了陆远一眼,然后点了点头:“明白。”
“还有,”马国良补充了一句,“专项组的事情只有你、我、陆远三个人知道,其他人——包括王建国在内——暂时保密。”
韩冰再次点头。
从马国良办公室出来的时候,陆远和韩冰并排走在走廊里。走廊很长,灯光是那种高级写字楼特有的暖黄色,照在灰色的地毯上,脚步声被地毯吸收了大半,只剩下轻微的沙沙声。
“陆总,”韩冰忽然开口,“马总让我做联络人,说明他很信任我。”
“我知道。”陆远没有看她,继续往前走。
“但您可能不信任我。”
这句话让陆远停下了脚步。他转过身看着韩冰,她的表情很平静,像一潭没有波澜的水,但她的眼神里有一种东西——一种希望能被看透又害怕被看透的矛盾。
“韩主管,”陆远靠在走廊的墙上,双手抱胸,“你想说什么?”
“我想说,如果您不信任我,专项组的工作很难推进。”韩冰的声音很稳,但语速比平时快了半拍,“我可以申请退出,让您自己选一个您信任的人来做联络人。”
陆远看着她,沉默了几秒。
然后他问了一句完全出乎韩冰预料的话:“昨天早上,张磊给我打了一个电话,告诉我马总要控制我。那个电话是谁让他打的?”
韩冰的瞳孔猛地收缩了一下。
她张了张嘴,但什么都没说出来。
“张磊是个老实人,”陆远继续说,“如果没人提醒他,他不可能想得起来在那种时候偷偷给我通风报信。而且他打电话的地方是厕所,这说明他知道办公室里不安全——一个研发部的普通程序员,怎么会有这种警惕性?”
韩冰的嘴唇动了几下,最终发出了一声极其轻微的叹息。
“是我让他打的。”
“为什么?”
“因为我知道不是你干的。”韩冰的声音很低,低到几乎要被地毯吸进去,“我见过很多人,好人坏人,聪明人笨人,真本事的人和装本事的人。你写了三年的代码,整个公司没人看得懂,但你一直在写。你不抱怨,不解释,就那么一直写着。”
她抬头看着陆远。
“你不是坏人。”
走廊里安静了很久。暖黄色的灯光洒在两个人身上,像一层薄薄的金粉。
陆远忽然笑了。
“行,”他推开了自己办公室的门,“韩冰,专项组的联络人,你还是继续做。但记住——从现在开始,你、我、林北辰,我们三个人之间没有秘密。”
“明白。”
“去吧,把林北辰叫来,我们开个小会。”
韩冰转身快步走了。陆远走进办公室,关上门,坐在椅子上,仰头看着天花板。
他刚才对韩冰的那番话,有七分是真的,三分是试探。张磊通风报信这件事,他确实猜到是韩冰在背后推动的——张磊没那个胆子,也没那个脑子。但“你不是坏人”这句话打动他的,不是韩冰的信任,而是韩冰判断人的方式。
这个女人不是用耳朵去听别人说什么,而是用眼睛去看别人做什么。这种人在公司里往往是最被低估的,因为他们不张扬、不表功、不站队,但他们比任何人都清楚整盘棋的走向。
有她在,专项组会好办很多。
五分钟后,林北辰推门进来了,手里抱着一沓打印出来的资料。
“陆总,我查到了一些新东西。”
“说。”
林北辰把资料摊在桌上,指着其中一页:“我昨晚反向追踪了那个悬赏的发布者,黑进了零号平台的验证服务器——当然,没有破坏任何东西——拿到了悬赏发布时使用的电子签名。”
“电子签名能追溯到真实身份吗?”
“电子签名本身是加密的,但零号的加密方式有一个弱点——它在生成电子签名的时候,会用发布者设备的一部分硬件信息作为加密盐。我分析了那份电子签名,提取出了发布者设备的硬件指纹。”
林北辰顿了顿,深吸了一口气。
“然后我在另一个完全无关的服务器上找到了同一个硬件指纹——那台服务器是云澜科技CIO沈兆明的个人工作站。”
陆远的眼睛眯了起来。
“确定是同一个?”
“百分之百确定。硬件指纹是唯一的,就像人的DNA。除非沈兆明的电脑被人偷了,否则那份悬赏就是从他那台电脑上发出去的。”
陆远站起来,在办公室里来回踱步。
沈兆明,云澜科技的CIO,首席信息官。一家科技公司的技术最高负责人,用自己公司的网络、自己的电脑、自己的硬件,发布了暗网悬赏,要毁掉竞争对手的数据库。
这不是巧合,这是蠢。
但陆远不相信沈兆明蠢。一个能做到CIO位置的人,不可能蠢到用自己的真实设备去做这种事。除非——
“他是故意的。”陆远停下来,自言自语道。
林北辰愣了一下:“什么?”
“沈兆明是故意的。”陆远转过身来,“用自己公司网络发布悬赏,太明显了。正常情况下,做这种事的人会层层伪装,至少也要找个公共WiFi。沈兆明不仅用公司网络,还用自己办公室的电脑,这不像是不小心——更像是怕别人查不到。”
“你是说,沈兆明在陷害自己公司?”
“不一定。也可能是他受命发布悬赏,但在执行的时候留了一手——他用这种方式留了一个破绽,让追查的人能锁定他。这是给自己留后路。”陆远重新坐下来,“如果他成功了,他就是公司的大功臣。如果他失败了,他就是污点证人。”
林北辰听得目瞪口呆。
“妈的,”他低声骂了一句,“这些人玩得太深了。”
“这还不算深。”陆远靠在椅背上,“真正的问题是——沈兆明背后的人是谁。如果是云澜科技的CEO宋云澜直接指使的,那就是正常的商业斗争,虽然手段脏,但逻辑说得通。但如果是别人指使沈兆明,让他用云澜科技的设备发布悬赏,目的是嫁祸给云澜科技——那这件事就比我们想象的要复杂得多。”
“谁会想嫁祸云澜科技?”
“那就得查了。”陆远站起来,“林北辰,你继续追踪沈兆明的通讯记录,看他最近和谁有过联系。我去找马总,让他动用他的人脉摸一摸云澜科技内部的情况。”
林北辰点头,合上电脑快步走了。
陆远一个人站在办公室里,看着窗外渐渐暗下来的天空。夕阳的最后一丝余晖正在被夜色吞没,城市的灯光一颗一颗地亮起来,像某种被精心编排的灯光秀。
他忽然想起鬼鲨那句“小心你身边的每一个人”。
现在他知道这句话的分量了。
如果云澜科技的CIO沈兆明都是一颗被别人摆布的棋子,那么在这场游戏里,谁才是真正的棋手?
云海集团的宋云海?某个隐藏在更深处的商业势力?还是说——天行科技内部也有人参与了这场阴谋?
他的目光落在窗外天行科技大厦的logo上,那束白色的光在夜色中孤独地亮着,像一座灯塔。
但灯塔从来不会告诉你水下有多少暗礁。
晚上八点,陆远骑着电动车回到了出租屋。
老小区和昨天一样安静,五楼的灯是暗的——他出门的时候忘了开走廊灯。他摸黑上了楼,开了门,屋里的冷空气迎面扑来。空调还是那个老古董,他没开,脱了外套直接坐到桌前,打开了电脑。
今天他收到了至少二十封工作邮件,其中有一封是行政部发的,标题是“关于新任CTO薪酬调整的通知”。他点开看了一下——年薪一百二十万,税前,外加年终绩效和股权激励。比他昨天提的条件还要高一些。
他面无表情地关掉了邮件。
不是不高兴,而是他现在没空高兴。
他打开了一个加密的通讯软件,输入了一串他很久没用的联系人ID。这个软件不是微信,不是QQ,而是一个点对点加密的开源通讯工具,服务器设在瑞士,端到端加密,理论上任何第三方都无法破解。
这是五年前他和鬼鲨约定好的备用联系方式。
他发了一条消息过去。
“你在哪儿?”
等了大概两分钟,屏幕上弹出了回复。
“不能说。”
“那你至少告诉我——‘小心身边的每一个人’是什么意思?”
对方沉默了很久。久到陆远以为鬼鲨已经下线了,屏幕上才弹出了新消息。
“你身边有人在帮他们。”
“他们是谁?”
“我不知道他们是谁。但我知道他们不是云澜科技。”
陆远的心跳漏了一拍。
“你怎么知道?”
“因为我查过。云澜科技的整个系统我已经全部走了一遍,他们的财务记录、内部邮件、项目文档——什么都没有。宋云澜是个商人,不是搞阴谋的料。他的弟弟宋云海更简单,一个靠关系赚钱的富二代,连数据库和PPT都分不清。”
陆远盯着屏幕,脑子里飞速运转。
如果悬赏不是云澜科技发的,那为什么会用沈兆明的设备?为什么会从云澜科技的网络发出来?
“有人在利用云澜科技做掩护。”鬼鲨的信息继续弹出来,“具体是谁,我还没查到。但这个人很危险,不只是技术层面的危险。他能在两家公司之间布这么大一个局,手段远超你的想象。”
“你认识这个人吗?”
又是一段漫长的沉默。
“不认识。但我见过他的作品。四年前,新加坡有一家科技公司,叫瑞通数据,在上市前三个月被人锁了核心数据库,勒索了一千五百万美金。他们付了钱,数据恢复了,但上市还是黄了。我后来查过那次攻击的手法——”
“跟这次一样?”
“不完全一样,但有明显的相似性。都是一种极深层的系统渗透,都不是为了钱——至少表面上看不是为了钱——都是为了毁掉公司。”
陆远的手指悬在键盘上方,迟迟没有落下。
不是因为害怕,而是因为他意识到,自己刚才提的那个“棋手”的猜测,可能比想象中更接近真相。这场游戏里确实有一个棋手,但不是云澜科技,不是宋云澜,不是宋云海,而是一个藏在更深处的人。
而这个人的武器,不是技术,不是金钱,而是人。
他利用人。利用天行科技和云澜科技的竞争关系,利用沈兆明这个CIO的身份和权限,利用暗网上那些为了赚钱什么都敢做的黑客——他把所有人都变成了他的棋子。
包括陆远自己。
不,不对。陆远想。他可能还没有被利用——至少目前为止,他的行动都是主动的,不是被人引导的。但昨天的那个加密脚本触发的时机,会不会太巧了?
他写脚本是腊月二十八晚上,触发是腊月二十九凌晨。而同一天晚上,林北辰正好在系统里做安全检测,正好触发了加密条件。
林北辰说他是来“保护”天行科技的。
但如果不是呢?
如果不是鬼鲨教了林北辰那些渗透技术,如果林北辰不只是鬼鲨的半个徒弟,如果林北辰和这件事有比他说出来的更深的关联——
陆远用力甩了甩头,把这种怀疑暂时压下去。
现在不是疑神疑鬼的时候。如果连林北辰都信不过,他就真的只剩下自己一个人了。而鬼鲨说“小心身边的每一个人”,恰恰可能就是想让所有人都变成敌人。这不就是那个神秘棋手最擅长的手段吗——让人互相猜忌,自乱阵脚。
他不会上当。
“继续帮我查。”他给鬼鲨发了最后一条消息,“任何线索,随时联系。”
然后他合上电脑,躺在床上,在黑暗中睁着眼睛。
天花板上那道裂缝还在,从墙角延伸到灯座附近,和昨晚一模一样。这间出租屋和他昨天早上离开时没有任何变化,但住在这间屋里的人已经变了。
昨天他是一个月薪五千八、年终奖八百的底层程序员。
今天他是年薪百万的CTO,手里握着一家公司十亿数据的命运。
昨天他只需要担心房租和泡面的价格。
今天他需要担心的是一个藏在暗处的棋手、一个一千万美金的悬赏、以及整个公司所有人的安全。
但他不后悔。
如果把人生比作一场游戏,那么他花了二十七年,终于从新手村走了出来,进入了真正的战场。战场上有刀光剑影,有明枪暗箭,有背叛和阴谋,有他从未见过的复杂和危险。
但战场上也有真正的挑战。
而挑战,是他这辈子最喜欢的东西。
他闭上眼睛,把自己完全沉入黑暗中。
明天还有一场硬仗要打。
腊月三十,除夕。
天行科技大厦里的人比昨天更少了。大部分员工都回家过年了,只有安全专项组的人和行政部的值班人员还在。陆远七点半就到了公司,比保洁阿姨还早。他一个人坐在办公室里,对着三块屏幕,一块显示着系统安全升级的实时进度,一块显示着林北辰发来的沈兆明通讯记录分析,还有一块是他自己在写的一个新脚本。
这个脚本和他之前写的所有东西都不一样。
他在写一个追踪系统——不是追黑客的IP,而是追资金的流向。暗网悬赏的一千万美金不可能是一笔现金交易,它一定经过了某种加密货币的转换和洗白。如果能追踪到那笔资金的源头,就能找到悬赏的发布者——不是通过网络层的追踪,而是通过金融层的追踪。
这是鬼鲨给他的启发。鬼鲨说他查了云澜科技的财务记录,什么都没查到。但如果把范围扩大到整个金融网络,追踪那笔一千万美金的来源和路径,也许能找到不一样的东西。
他在键盘上已经敲了快三个小时,代码写了两千多行。这个脚本的逻辑非常复杂,涉及到区块链交易的反向追踪、交易所的API接口、以及大量的数据分析算法。他不是金融专业出身,但他从昨晚到现在啃了三本关于区块链金融监管的电子书,加上他自己在数据分析上的底子,勉强能写出一个雏形。
写到一半的时候,办公室的门被推开了。
韩冰端着一盘饺子走进来,热气腾腾的,香味瞬间弥漫了整个房间。
“陆总,今天是除夕。”
陆远抬起头,这才注意到窗外已经天光大亮,时间不知不觉到了中午。
“食堂没人了,这是我早上在家里包的,带来公司煮的。”韩冰把饺子放在桌上,又从包里拿出一小碟醋,“韭菜鸡蛋馅的,不知道你吃不吃。”
陆远看着那盘饺子,忽然觉得有什么东西堵在了嗓子眼。
他已经三年没吃过家里包的饺子了。每年除夕他都在公司加班,食堂关了门就去便利店买速冻水饺,回到出租屋自己煮,就着老干妈吃完,然后继续写代码,在键盘敲击声里度过十二点。
“谢谢。”他拿起筷子,夹了一个塞进嘴里。韭菜的香气混合着鸡蛋的嫩滑,面皮筋道,馅料饱满,和他记忆里小时候吃过的饺子味道几乎一样。
“好吃。”他含含糊糊地说。
韩冰笑了一下,那种职业性的微笑第一次有了一点温度。
“陆总,您不回家过年,家里人不担心吗?”
“没家人了。”陆远又夹了一个饺子,“我爸在我十二岁的时候跑了,我妈改嫁了,不想带我,我就跟着我奶奶过。我奶奶前年走了。”
他说得很快,像是在说别人的事。韩冰沉默了几秒,没有说那些“对不起”或者“节哀顺变”的废话,只是默默地把醋碟往他面前推了推。
“你呢?”陆远反问,“你怎么不回去?”
“我家就在这个城市。”韩冰靠在门框上,“中午回家吃饭,下午来值班。专项组不能没人盯着。”
“你倒是敬业。”
“不是敬业,”韩冰的语气忽然变得认真起来,“是我想把这件事查清楚。”
陆远抬起头看着她。
“三年了,”韩冰说,“我在天行科技做安全主管三年了。星辰安全的审计报告我每一份都看过,我总觉得不对劲,但我说不清楚哪里不对劲。去年我提过一次建议,想换一家安全服务商,但被王总驳回了。”
“为什么驳回?”
“王总说星辰安全是他同学开的,信得过。”韩冰的语气里有一丝不易察觉的冷淡,“我没有再坚持,因为我说到底只是行政部的一个主管,安全上的事我说了不算。”
陆远咽下最后一个饺子,用纸巾擦了擦嘴。
“现在你说了算了。”
韩冰看着他,眼睛里闪过一丝意外。
“安全专项组的工作,你是联络人,你有权调阅任何和安全相关的文件、记录、权限。包括王建国的邮件和通讯记录。”陆远站起来,走到她面前,“如果你觉得有什么不对劲的地方,查。不用请示我。”
韩冰深吸了一口气,然后用力点了点头。
“还有一件事,”她压低声音说,“昨天我整理星辰安全的审计报告时,发现了一件事。过去两年的八份审计报告里,有七份的结论都是‘良好’,但去年的第三季度报告——也就是七月份的那份——原本的结论不是‘良好’。”
“是什么?”
“我不知道。我看到的那个版本已经被修改过了。但我在文件服务器的元数据里找到了最初版本的修改时间,比正式提交的时间早了三天。而且修改人不是星辰安全的任何人,而是——”
“谁?”
“王建国。”
陆远的眼神骤然一冷。
“你确定?”
“元数据不会说谎。那份报告在七月十七号上传到系统,文件大小是四十三兆。七月二十号被修改过,修改之后的文件大小变成了四十一兆,少了整整两兆。修改人的登录账号是王建国的。”
陆远在办公室里来回踱步。
两兆的数据差异,足够装下一份完整的漏洞报告。如果七月份那份原版审计报告里列出了天行科技系统的严重漏洞,而王建国修改了这份报告——删除或替换了其中的关键内容——那就说明了一个非常可怕的事实。
天行科技的CTO,亲手掩盖了系统的安全隐患。
为什么?
是因为他真的信任星辰安全,觉得那些漏洞不重要?还是因为——他不想让任何人发现那些漏洞?
“这件事还有谁知道?”陆远停住脚步。
“只有你和我。”韩冰说,“我也是今天早上整理资料的时候才发现的。”
“暂时保密,不要告诉任何人——包括林北辰。”
韩冰的眉毛动了一下,但没有问为什么,只是点了点头。她端起空盘子转身要走,陆远忽然叫住了她。
“韩冰。”
她回过头。
“那些饺子——还有剩的吗?”
韩冰愣了一下,然后笑了。不是职业化的微笑,而是一个真正的、被人需要时才会露出的笑容。
“有。我带了两盘的量,锅里还有。”
中午一点,陆远吃完了第二盘饺子,靠在椅背上满足地叹了口气。与此同时,林北辰推门进来了,手里拿着一个U盘,表情很兴奋。
“陆总,我查到沈兆明的通讯记录了!”
“这么快?”
“不是通过正规渠道查的。”林北辰把U盘插上电脑,打开了一份文件,“我用了点小手段——我给他的手机发了一条伪装成系统更新的短信,他点了。然后就装了监控程序。”
陆远看着他,眉毛挑了起来。
“你放心,合法的。”林北辰赶紧补充,“我用的那个监控程序是我们公司申请过专利的安全检测工具,适用条款里写了‘可用于企业安全管理场景下的员工设备监测’。沈兆明是云澜科技的员工,而云澜科技和我们签过商业保密协议,根据协议条款,我们有权利调查对方是否在从事针对我们的不正当竞争行为。”
陆远不知道该夸他技术好还是法律意识强。这个清华高材生显然在做每一步之前都给自己留好了后路,这一点比他想象的要老练得多。
“你查到了什么?”
林北辰点开一份通讯记录列表,上面密密麻麻地列着沈兆明过去两个月的所有通话、短信和邮件记录。
“大部分都是正常的工作通讯。但是——”林北辰鼠标滚轮滚动,停在了列表中间的一个位置,“十二月三号,沈兆明接了一个电话,通话时长四分三十七秒。这个号码不在他的通讯录里,是一个虚拟运营商的号码,查不到实名信息。”
“然后呢?”
“然后十二月五号,沈兆明给云澜科技的CEO宋云澜发了一封邮件,标题是‘关于天行项目的补充方案’。邮件的附件是一份文档,表面上看起来是一份正常的竞品分析报告,但我在文档的元数据里发现了一个隐藏层——里面是一份暗网悬赏的发布方案草稿。”
陆远猛地坐直了身体。
“你打开看了吗?”
“看了。”林北辰的表情变得非常严肃,“那份方案草稿包含了悬赏的金额、目标数据范围、截止日期——和我们已知的信息完全吻合。但最重要的是,方案的末尾有一段批注。”
“什么批注?”
林北辰把鼠标移到文件底部,放大了一段文字。
陆远凑过去看,屏幕上的文字清晰可见——
“方案已报宋总审阅,待宋云海董事长最终批准后执行。建议通过第三方渠道发布,避免直接关联公司IP。”
陆远慢慢地靠回椅背。
宋云澜审阅过。宋云海批准过。
云澜科技和他的母公司云海集团,一个都跑不掉。
“够了,”他说,“这些证据已经够报警了。”
“还不行。”林北辰摇了摇头,“这些证据的来源不够‘干净’。元数据是我通过技术手段获取的,通讯记录是通过监控程序拿到的。如果直接拿去报警,这些证据在法律上可能会被认定为非法获取,反而会让对方抓住把柄。”
陆远皱起眉:“你的意思是,我们需要合法渠道获取的证据?”
“对。”林北辰说,“最理想的证据链应该包括——悬赏发布者的真实身份确认、资金流向的银行记录、以及公司内部的审批流程文件。这三样东西加在一起,才能真正把宋家兄弟送进去。”
“悬赏发布者的身份我们已经锁定了——沈兆明。资金流向我正在追踪,写了一个区块链分析脚本,还需要几天时间。公司内部的审批流程文件,怎么拿?”
“这个最麻烦。”林北辰靠在椅子上,“文件在云澜科技的内网里,他们的安全系统我看了,比天行科技强一个档次。而且要合法获取,就更难了。”
“合法获取不一定需要技术手段。”陆远站起来,走到窗边,“如果有人主动交出来呢?”
“谁会主动——”
林北辰说到一半,忽然停住了。
“你是说沈兆明?”
“沈兆明给自己留了后门,怕的就是有一天被推出去当替罪羊。”陆远转过身来,“如果他知道悬赏的事已经被发现了,而且自己马上就要成为整个局里的弃子,你说他会怎么做?”
“他会倒戈。”林北辰的眼睛亮了起来,“带着所有证据倒戈。”
“没错。”
陆远拿起手机,翻到了韩冰发给他的一份通讯录——那是安全专项组整理的云澜科技高管名单,里面有沈兆明的手机号码。
他拨了出去。
电话响了七声,然后接了起来。
“喂?”对面的声音很警惕,毕竟这是一个陌生的号码。
“沈兆明先生吗?我是天行科技的CTO陆远。我们没见过面,但你应该知道我是谁。”
电话那头沉默了大概五秒钟。
“你想干什么?”
“我想跟你见面聊一聊。”陆远的声音很平静,“关于十二月五号你发给宋云澜的那份补充方案——方案里的那份附件,我看到了。”
这句话像一个炸雷,让电话那头的呼吸声骤然加重。
“你不可能看到——”沈兆明的声音明显在发抖。
“我看到的不止附件。我还看到了十二月三号你接的那个电话,四分三十七秒的那个。我还看到了发布悬赏时你使用的电子签名,还有你电脑的硬件指纹。”
陆远每说一句,沈兆明的呼吸就急促一分。
“你……你想要什么?”
“我不想要你的东西。我想要的是你老板的东西。”陆远的声音压低了半度,“沈兆明,你应该很清楚,以你在这件事里的角色,一旦盖子被揭开,你是第一个被推出来顶罪的。宋云澜可以说什么都不知道,宋云海更是一推二五六。但你在暗网上发布悬赏用的是你自己的电脑,你自己的账号,你自己的电子签名。警方查到的第一个嫌疑人就是你。”
“不是我!”沈兆明几乎是喊出来的,“我只是听命行事!方案是宋云澜给我的,我只是执行!”
“我知道。”陆远说,“所以我给你一个机会。”
电话那头沉默了。
“三天后,大年初三的晚上,你找一个人少的地方,我们见面聊。你把你能拿到的所有证据带来——悬赏的审批记录、宋云澜给你的指示、以及你能接触到的一切。作为交换,我会在天行科技的法律追诉名单里,把你放在从轻处理的位置。”
又是一段漫长的沉默。
“我凭什么信你?”
“你没有别的选择。”陆远说,“要么跟我合作,要么等警方上门。你自己选。”
电话那头传来了沈兆明急促而不均匀的呼吸声,那声音里混杂着恐惧、犹豫和某种走投无路之后的挣扎。最终,沈兆明说了一句话,声音低到几乎听不见。
“初三十点,城西的人民公园。我一个人来。”
电话挂断了。
陆远放下手机,发现林北辰正用一种看外星人的眼神看着他。
“怎么了?”
“陆总,”林北辰咽了口唾沫,“你刚才那番话,我听着都替沈兆明害怕。你是怎么知道他手机号的?你怎么知道他接了四分三十七秒的电话?你怎么知道他用的是自己的电脑?”
“手机号是韩冰给我的。电话时长是你刚才说的。电脑硬件指纹是你查到的。”陆远重新坐回椅子上,“我只是把他们重新组织了一下。”
“组织得跟亲眼看见了一样。”林北辰摇着头,“你这种人,放在古代就是做军师的料。太他妈能说了。”
陆远没有接这个茬,而是打开了电脑上的项目管理系统,看了看安全升级的进度。四个阶段的系统加固,第一阶段已经完成了百分之七十,废弃模块的清理预计明天上午就能全部完成。入侵检测系统的框架也已经搭好了,接下来就是往里填具体的检测规则。
进度比他预期的要快,但他没有放松警惕。
今天是腊月三十,除夕。距离二月十号还有十天。
那个神秘棋手的布局还远没有全部浮出水面,沈兆明只是其中的一颗棋子。宋云澜和宋云海虽然被锁定了,但鬼鲨说过,真正的幕后黑手不是他们。
谁会花这么大的力气,去布一个让两家公司互相撕咬的局?
他的目光落在电脑屏幕上,区块链分析脚本还在跑着。屏幕上滚动着一行行的交易记录,每一行都代表着一笔加密货币的转移。他在追踪那笔一千万美金的来源——如果他能找到那笔钱的起点,也许就能找到那个棋手的第一块拼图。
下午四点,韩冰敲门进来,手里拿着一个红色的小盒子。
“陆总,新年礼物。”
陆远接过盒子,打开一看,是一个充电宝。
“我看您的电动车骑了三年了,电池肯定不行了。这个充电宝是快充的,万一手机没电了可以应急。”韩冰说得很快,像是在解释一件很平常的事。
但陆远知道这不是一件平常的事。韩冰送给他的不是一个充电宝,而是一种认可——她认可了他这个CTO,认可了他这个领导,认可了他正在做的事。
“谢谢。”他把充电宝放进书包里,“春节后我请你吃饭。”
“那可是要说话的。”
“放心,不吃沙县。”陆远笑了一下。
韩冰正要走,陆远又叫住了她。
“韩冰,有件事我想问你。你在公司四年,和安全团队打交道最多。赵海生这个人,你了解多少?”
韩冰想了想:“赵海生来公司比我早,他在天行科技已经六年了。技术能力一般,但人品没问题。他对星辰安全一直不太信任,去年因为安全审计的事跟王建国吵过好几次。有一次他在茶水间跟我说,‘那个安全公司不靠谱,早晚要出事’。”
“然后呢?”
“然后就没有然后了。他是运维组长,不是安全负责人,他的话在管理层没有分量。”韩冰顿了顿,“陆总,您在怀疑赵海生?”
“不是怀疑,”陆远摇了摇头,“是排除。我要确定安全团队里每一个人都可不可信。到目前为止,你和赵海生是可以信任的。林北辰——暂时也可以。”
“暂时?”
“暂时就够了。”陆远站起来,穿上外套,“走吧,除夕夜还要加班,怪不好意思的。让还留在公司的所有人到会议室,我请大家吃年夜饭。”
“食堂都没人了——”
“叫外卖。”陆远掏出手机,“火锅,大渝火锅,点最贵的套餐。”
晚上六点,天行科技十六楼的会议室里,一张长条桌上摆满了火锅和各种涮菜,电磁炉咕嘟咕嘟地冒着热气。留在公司的人不多——陆远、林北辰、韩冰、赵海生和运维组的两个小伙子,加上行政部值班的两个姑娘,一共八个人。
“各位,”陆远站起来,端着一杯可乐,“今年除夕,大家放弃休假留在公司,辛苦了。我不说废话,三句话——第一,感谢。第二,春节后所有人年终奖翻倍,我说的。第三——”
他举起杯子。
“天行科技的安全,靠你们了。新年快乐。”
“新年快乐!”所有人举杯。
火锅的热气在会议室里弥漫开,玻璃窗上结了一层白色的雾气。透过雾气看出去,远处的城市正在燃放除夕的烟花,一簇一簇地在夜空中炸开,金色的、红色的、绿色的,像一场盛大的光的花雨。
陆远端着杯子走到窗边,看着那些烟花,脸上的笑容慢慢淡了下来。
在烟花炸开的光亮中,他看到了天行科技大厦对面那栋写字楼的楼顶。楼顶上站着一个人,手里拿着什么东西——太远了看不清,但那个轮廓让他心头一紧。
他拿出手机,打开相机,把焦距放到最大。画面虽然模糊,但他看到了。
那个人手里拿着的,是一台笔记本。而屏幕上显示的,是一行他再熟悉不过的红色字——
“系统已被加密。”
不是天行科技的系统。
而是对面那栋楼里的某家公司。
陆远的瞳孔剧烈收缩。
就在这个时候,他的手机震了一下。鬼鲨发来了一条新消息。
“游戏开始了。下一个是谁?”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.