纪玄站在楼梯间的阴影里,目光锁定街角那辆灰色SUV。车窗的深色贴膜像一层不透明的盔甲,隔绝了所有窥探。雨水从屋檐滴落,砸在水泥地上发出单调的啪嗒声。他收回视线,转身走下楼梯。回到档案室,关上门,室内只有日光灯管的嗡鸣。他坐到电脑前,屏幕暗着,映出自己模糊的倒影。手指在键盘上悬停片刻,然后打开一个加密文件夹,里面是“夜枭”工具包的所有配置文件。距离拍卖会还有17天,距离火车站储物柜的开启,还有不到6个小时。窗外的城市灯火在雨后的夜色中连成一片模糊的光海,而某些东西,正在黑暗深处缓缓浮出水面。
他需要那个***。
老陈在密信里写得很清楚:U盘用的是“深渊”平台第三代定制加密协议,必须用专门的硬件***才能读取。市面上没有流通,只有“深渊”内部技术组和少数几个合作方有。而世雍集团旗下的物流子公司“江城迅达”,上周刚刚入库了一批“特殊电子配件”——编号SDK-7B的定制***,五台。
纪玄关掉档案管理系统的界面,打开一个伪装成普通浏览器的窗口。手指在键盘上敲下一串复杂的指令,屏幕闪烁三次,进入一个纯黑色的操作界面。绿色的光标在左上角跳动,像某种生物的心跳。
“夜枭”上线。
他首先调出三天前就准备好的数据包——那是他通过“渊瞳”账号在“深渊”技术论坛潜水时,从一个炫耀帖里截取到的系统日志片段。日志里包含“江城迅达”物流管理系统的部分访问记录、服务器IP段、以及一个已经失效的临时管理员账号。
纪玄盯着那些数据,眼睛在屏幕的冷光里显得格外专注。窗外的雨声渐大,敲打着玻璃,形成一种规律的背景音。他需要找到系统的漏洞,不是那种明显的后门,而是日常运维中容易被忽略的细节——比如某个员工习惯用生日做密码,比如某个接口因为兼容性原因保留了旧版验证方式,比如某个备份服务器没有及时更新防火墙规则。
他的手指在键盘上快速移动,屏幕上的代码像瀑布一样滚动。第一个尝试:利用那个失效的管理员账号,尝试通过密码重置功能。系统提示需要验证手机号。放弃。
第二个尝试:扫描服务器开放端口。发现一个用于内部文件传输的FTP端口,但需要双重认证。放弃。
第三个尝试:追踪系统更新日志。发现上周三有一次紧急补丁更新,原因是“第三方物流接口存在安全风险”。纪玄的眼睛亮了一下。他调出那个接口的文档——那是“江城迅达”与几家大型电商平台的对接接口,用于实时同步货运状态。文档里提到,接口采用OAuth2.0协议进行身份验证,但为了兼容旧版客户端,保留了Basic Auth的备用验证方式。
Basic Auth——用户名和密码明文传输。
纪玄开始搜索与这个接口相关的任何公开信息。在GitHub上一个开源物流管理系统的代码库里,他找到了类似的实现示例。示例代码里包含一个测试用的用户名和密码:test_user/test_pass。他尝试用这个组合去连接“江城迅达”的接口。
连接失败。
但系统返回的错误信息暴露了关键细节:“用户不存在”。这说明系统确实在处理Basic Auth请求,只是用户名不对。
纪玄开始构造字典攻击。他收集了“江城迅达”公司可能使用的用户名格式:员工工号、姓名拼音、邮箱前缀。然后结合常见弱密码组合,编写了一个自动化的爆破脚本。脚本开始运行,屏幕右下角弹出一个小窗口,显示着尝试次数和进度。
窗外的雨声渐渐小了,变成细密的淅沥声。档案室里的空气有些闷,混杂着纸张、灰尘和旧式空调散发出的淡淡霉味。纪玄起身,走到窗边,推开一条缝隙。冷湿的空气涌进来,带着城市夜晚特有的气息——远处车辆的引擎声、潮湿的柏油路面味道、还有不知从哪里飘来的食物香气。
他看了眼时间:晚上九点四十七分。
回到电脑前,爆破脚本已经运行了三千多次尝试,还没有结果。纪玄没有着急,他切换到一个新的标签页,开始研究“江城迅达”的官方网站。网站底部有一个“招贤纳士”的链接,点进去,是公司的招聘页面。最新的一条招聘信息是两周前发布的:招聘仓库管理员,要求高中以上学历,熟悉WMS系统操作。
WMS——仓库管理系统。
纪玄点开那条招聘信息的详情页,在“岗位职责”部分,看到了这样一段描述:“负责日常入库、出库操作,熟练使用公司内部WMS系统(版本3.2.1),按时完成盘点任务……”
版本3.2.1。
他立刻回到“夜枭”的操作界面,搜索这个版本号的WMS系统。在暗网的某个技术论坛里,他找到了一个两年前的帖子,有人上传了该版本系统的测试环境安装包。下载,解压,在虚拟机里运行。系统启动后,默认的管理员账号是:admin/admin。
纪玄深吸一口气,重新回到对“江城迅达”接口的爆破。这次,他在用户名列表里加上了“admin”、“administrator”、“sysadmin”。密码列表里加上了“admin123”、“admin@2021”、“WMS@321”。
脚本继续运行。
尝试次数:四千二百。
四千三百。
四千五百。
突然,屏幕上的错误信息变了。
“认证成功。”
纪玄的手指停顿了一瞬。他盯着那行绿色的提示文字,确认不是幻觉。然后,他迅速开始操作。通过这个接口,他获得了对WMS系统部分功能的访问权限——虽然只是只读权限,但足够了。
他调出库存查询功能,输入“SDK-7B”。
系统返回结果:库存数量5,存放位置:A区高架库3排2层7号货位。入库时间:2023年10月28日14:32。预计出库时间:待定。备注:特殊物品,需主管级以上审批。
纪玄截屏保存。然后,他开始查看仓库的平面图、监控摄像头分布、员工排班表。这些信息都在系统的“管理”模块里,但他的权限不够。他需要提升权限。
他研究着系统的权限管理逻辑。发现每个员工账号都有一个“角色”字段,角色决定了可访问的模块。而角色的分配,是由一个名为“HR_Sync”的定时任务,每天凌晨从人事系统同步过来的。
纪玄找到了这个定时任务的配置文件。里面有一个数据库连接字符串,用户名是“hr_sync_user”,密码是加密的。但他不需要破解密码——他只需要修改配置文件,让这个定时任务在下次运行时,把他的测试账号也同步成“仓库主管”角色。
他编辑配置文件,在“特殊账号列表”里添加了一个条目:用户名“test_admin”,角色“warehouse_supervisor”。保存。然后手动触发了一次同步任务。
等待。
三十秒后,他重新登录系统,用“test_admin/admin123”尝试。
登录成功。
权限面板显示:仓库主管权限,可操作入库、出库、盘点、查看监控(实时画面需二次验证)、生成出库单。
纪玄没有浪费时间。他首先调出明天(10月30日)的仓库排班表:白班:***(主管)、王强、张丽;晚班:赵明(主管)、孙浩、周晓雯。晚班时间:晚上八点到次日凌晨四点。
然后,他查看监控摄像头分布图。仓库内部共有十二个摄像头,覆盖所有主要通道和货架区域。但图纸上标注了一个红色星号,在旁边有一行小字:“备用隐蔽摄像头位置详见安保手册,不在此图标注。”
隐蔽摄像头。
纪玄皱了皱眉。他尝试搜索“安保手册”,但系统里没有电子版。这意味着,他无法通过入侵系统得知那些摄像头的位置。
风险。
但他没有选择。***必须拿到,U盘里的信息可能是找到拍卖会验证点的唯一线索。距离拍卖会还有17天,而“深渊”已经升级了验证机制——生物特征采集,这意味着他必须提前知道验证点的位置,才有机会做布置。
纪玄关掉WMS系统,开始准备下一步。
他需要一辆车,一套制服,还有伪造的出库单据。
车比较好办。他在一个本地的二手交易群里,找到了一个出租物流车的广告。车主是个体户,有一辆旧的“东风小康”厢式货车,平时接点零散货运。纪玄用匿名号码联系对方,说需要租车一晚,运点家具。对方开价五百,押金一千。纪玄同意了,约定明天晚上八点在城北一个停车场交车。
制服麻烦一些。“江城迅达”的工服是深蓝色夹克,左胸有公司logo,背后有反光条。纪玄在网上搜索同款,找到一家本地的劳保用品店有售,但需要提前订货。他换了个思路,在“江城迅达”的官网上,找到了他们合作洗衣房的联系方式。以“新员工工服丢失需要补办”为由打电话过去,对方说需要部门主管签字才能补。纪玄说主管出差了,很急,能不能通融。对方犹豫了一下,说可以,但要多收五十块钱“加急费”。纪玄同意了,约定明天下午三点去洗衣房取。
最后是出库单。