打开网易新闻 查看精彩图片

去年12月,一个叫TeamPCP的黑客团伙还在老老实实挖矿勒索。三个月后,他们突然给自家恶意软件加了条"伊朗特供"的自杀指令——检测到波斯语时区就执行rm -rf /,连Kubernetes集群一起扬了。

更离谱的是遥控器。传统僵尸网络用域名或IP指挥肉鸡,抓到一个就全端了。这群人直接把命令中心塞进ICP(互联网计算机协议)的canister里——区块链上的智能合约容器,删不掉、封不了、溯源还费劲。

Aikido安全研究员Charlie Eriksen跟KrebsOnSecurity聊这事时说了句实在话:「他们就是在炫技。」按他的推测,TeamPCP手里攥着的凭证远比已曝光的多,这次更像是投名状,给潜在客户看"我们能搞多脏"。

从勒索工具到地缘政治武器,只需要一个if语句

从勒索工具到地缘政治武器,只需要一个if语句

TeamPCP的成名作是去年冬天。他们盯上Docker、Kubernetes、Redis、Next.js这些云原生基础设施——程序员天天用,但配置漏洞也一抓一把。 infected机器被编成代理网络,租出去搞勒索、挖矿、数据窃取,典型的黑产SaaS模式。

CanisterWorm是这个生意的2.0版。传播路径没变:npm包投毒、容器镜像篡改、暴露的Redis实例,老套路但好用。真正的新活儿藏在payload里——时区检测模块。

代码逻辑粗暴得像个恶作剧:getTimezoneOffset()返回的值落在伊朗标准时间(UTC+3:30)区间,直接触发wipe函数。Kubernetes环境调用API删全集群,普通虚拟机执行经典Linux删库命令,--no-preserve-root参数确保连系统文件都不留。

非伊朗机器?该干嘛干嘛,继续感染、继续传播、继续给TeamPCP的代理网络添砖加瓦。这种精准的地域歧视在蠕虫史上都罕见——Stuxnet搞伊朗核设施好歹有国家背景,一帮搞黑产赚钱的突然玩起民族主义,图什么?

Eriksen的猜测是:这是技术广告。能写出自适应时区的擦除逻辑,能玩转ICP canister当C2,说明团队里有真懂系统底层的人。展示这种能力,比任何销售话术都管用——"我们连伊朗政府机器都敢抹,你的目标算个屁?"

打开网易新闻 查看精彩图片

区块链遥控器:抓不着、关不掉、还免费

ICP是Dfinity基金会搞的项目,愿景是"把互联网重新去中心化"。canister是他们的核心抽象——类似以太坊的智能合约,但能跑完整Web应用,存储和计算都链上完成,用户只付cycles(类似gas费)。

TeamPCP看中的正是这个架构特性。传统僵尸网络的命门在C2服务器——域名会被 sinkhole,IP会被封禁,基础设施被抓就全完。ICP canister没有固定IP,调用是通过网络神经系统(NNS)随机路由到节点,封单个canister需要ICP治理投票,等投票完蠕虫早换马甲了。

更妙的是成本。cycles用ICP代币换,而代币可以混币洗过再充。Eriksen团队追踪到的控制canister,生命周期内消耗的cycles价值不到200美元——养一个全球僵尸网络的指挥链,比买杯星巴克还便宜。

这种设计把"去中心化"的双刃剑特性暴露无遗。Dfinity官方文档强调canister的"抗审查"和"永久运行",现在成了恶意软件的避风港。社区有人提议引入内容审核机制,但纯链上执行怎么审?审了还叫去中心化吗?

TeamPCP不是第一个打主意的。2023年就有研究团队演示过用以太坊智能合约存C2域名,但那是概念验证。CanisterWorm是第一个大规模实战案例,而且选了个技术门槛更高的平台——ICP的Motoko语言和actor模型,比Solidity小众得多。

npm供应链:蠕虫的高速公路

npm供应链:蠕虫的高速公路

传播层面,CanisterWorm没发明新轮子,只是把旧轮子拧紧了。npm生态的脆弱性是公开秘密:每周下载量过亿的包,维护者弃坑、账号被盗、依赖嵌套像俄罗斯套娃,攻击面大得离谱。

TeamPCP的具体手法没完全公开,但从Aikido的遥测数据能拼凑出轮廓。他们盯上的是几个中等流行度的DevOps工具包——不是lodash那种明星库,而是CI/CD流水线里的螺丝钉,比如某Kubernetes配置生成器、某Docker镜像扫描插件。这些包周下载量几万到几十万,维护者响应慢,被篡改后几周才有人发现。

打开网易新闻 查看精彩图片

感染后的行为也经过精心设计。第一阶段是侦察:收集机器上的云凭证、SSH密钥、kubeconfig文件,回传到ICP canister。第二阶段是横向移动:用偷来的凭证扫描内网,找更多Kubernetes集群和Redis实例。只有确认时区非伊朗,才进入第三阶段——把机器编入代理网络。

伊朗机器跳过第三阶段,直接进终章。这种"白名单"式的地域筛选,让蠕虫在伊朗境外表现得像个普通矿工,低调赚钱;一进伊朗境内就变身自毁装置,高调示威。

一个细节值得玩味:时区检测代码里留了注释掉的GPS坐标检查分支。Eriksen团队认为那是未完成的备用方案——万一伊朗用户把系统时区改成UTC,还有物理位置兜底。这帮人想得挺全。

谁在买这种服务?

谁在买这种服务?

TeamPCP的商业模式是"恶意基础设施即服务"。他们的Telegram频道(现在已被封)曾公开招租:代理网络按流量计费,DDoS按Gbps计价,数据窃取按GB分成。CanisterWorm的加入,相当于产品线多了个"定制擦除"的选项。

但擦除伊朗机器本身不产生收入。Eriksen分析,这可能是两类客户在买单:一类是地缘政治玩家,想搞破坏但不想脏自己的手;另一类是勒索团伙,用"我们能物理摧毁你"来增加谈判筹码——"不给钱?我们不止加密,还让你永远恢复不了。"

伊朗网络安全部门(MAHER)至今没公开回应此事。民间有安全研究员在Twitter发牢骚,说政府部门的日志留存策略一团糟,被抹了都不知道从哪开始查。这种基础设施层面的代差,让"炫技"变成了真伤害。

CanisterWorm的代码里还有处黑色幽默。擦除前会向控制台打印一行波斯语:"بازی تمام شد"——游戏结束。字体用的是伊朗流行的Vazirmatn,显然专门挑过。

这行字现在成了伊朗DevOps社区的梗。有人在GitHub建了监控脚本,检测进程里出现这个字符串就自动断网保平安。更多人则在问:下一个被"游戏结束"的会是谁?TeamPCP的if语句里,还藏着多少国家的时区代码?