一场失败的国家级攻击剖析:PinpinRAT 分析
一场失败的国家级攻击剖析:PinpinRAT 分析
一项针对开发者的复杂网络钓鱼活动已被曝光,该活动利用多阶段投放器(dropper)来安装名为 PinpinRAT 的远程访问木马(RAT)。此次攻击利用了虚假面试骗局,攻击者伪装成风险投资家,诱导开发者克隆恶意仓库并运行构建命令,从而触发一系列经过混淆处理的有效载荷,绕过标准的杀毒软件检测。
攻击向量:社会工程学
攻击始于高度针对性的社会工程学手段。攻击者使用伪造的人设——伪装成已倒闭或虚假的风险投资公司(例如 "Lua Ventures")的代表——并通过电子邮件和 LinkedIn 联系开发者。
为了建立信任,攻击者:
- 使用看起来很真实的 LinkedIn 个人资料,拥有令人印象深刻但模糊的资历。
- 提及早期阶段的公司,以证明咨询工作的必要性。
- 与目标进行实际的 语音通话,通常以 "正在旅行" 为借口,来解释口音或摄像头使用上的不一致。
- 根据开发者的公开贡献进行针对性攻击,例如在 crates.io 上发布的软件包。
PinpinRAT 投放器的技术分解
恶意有效载荷通过一个以渡轮购票应用程序 "Ticket Harbor" 为主题的 TypeScript 仓库进行交付。感染链设计得非常安静且隐蔽,利用了多层混淆技术:
1. 初始执行
当开发者运行 typecheck 或构建命令时,陷阱就会触发。该过程遵循以下序列:
- Postinstall Hooks: 四个独立的
postinstall钩子会执行patch-package。其中一个钩子会在补丁文件上运行git update-index --skip-worktree,这可以防止修改后的文件出现在git status中。 - Payload Injection: 一个名为
typescript+5.9.2.patch的文件会将一个自执行的、经过 XOR 解密的 base64 blob 注入到typescript.js和_tsc.js中。该存根(stub)避免使用eval()以绕过恶意软件检测。
2. 第二阶段加载
初始存根会读取附加在图像文件(operators/3.png)中的隐藏数据块。该数据包含一个嵌入在自定义 wAsm 数据块中的小型 WebAssembly (WASM) 存根。随后,WASM 存根会产生一个分离的、静默的 Node.js 进程,该进程携带一个 1.68 MB 的经过混淆的第二阶段有效载荷。
3. 持久化与清理
该恶意软件采用了三层清理机制以避免检测:
git skip-worktree技巧隐藏了补丁。- 投放器会重写补丁文件,在首次执行后删除其自身注入的行。
- 第二阶段的临时目录在执行后会自动删除。
PinpinRAT 功能
PinpinRAT 是一款功能齐全的远程访问木马。它使用 RSA-2048 进行密钥交换,并使用 AES-256-CBC 进行会话加密,确保所有流量都通过 HMAC-SHA256 完整性标签进行加密。
启动时,RAT 会收集以下主机指纹信息:
- 主网卡和所有网络接口的 IP 地址。
- 用户名、主机名以及操作系统详情(版本、平台、架构)。
- 进程 PID 和完整的
process.argv。 - Node.js 版本。
攻击者可以向受感染的主机发出以下命令:
env: 渗出所有环境变量。upload: 读取并渗出任意文件。download: 将攻击者提供的字节写入任何路径。spawn: 使用 shell 扩展执行任意进程。ls,cd,pwd,cp,mv: 完整的系统文件操作。dns: 将主机作为任意名称的解析器(可能用于 DNS 隧道技术)。dismantle: 自我移除恶意软件。
失效指标 (IoCs)
如果怀疑系统已被感染,应检查以下指标:
- C2 Server:
89.124.107.161:80 - Windows Scheduled Task:
PinpinWrappedJs - macOS Process Masquerade:
com.apple.WebKit.Networking - Environment Variables:
NODT_PAYLOAD_PATH,NODT_PAYLOAD_ARGS - PNG Chunk Guard:
WASMPACK(wAsm) - Anchor Strings:
12ff4b51,ticket-harbor-tsc-shim-anchor(在typescript.js中发现) - Artifact Directories:
- macOS:
~/Library/Caches/runtime-cache/.cache-<randomhex>/ - Linux:
/tmp/.cache-<randomhex>/ - Windows:
%TEMP%\.cache-<randomhex>\
- macOS:
专家分析与缓解措施
社区讨论表明,这种攻击模式与 Lazarus Group 非常相似,极具特征,该组织以通过 LinkedIn 和面试骗局针对开发者进行攻击而闻名。
为了降低这些风险,开发者应采取以下安全实践:
- 使用临时环境: 绝不要在个人或公司机器上运行来自面试或外部来源的不可信代码。请使用可丢弃的虚拟机 (VM) 或沙盒容器。
- 使用受限运行时: 利用 Deno 的网络拦截/白名单功能,或使用 Bun 的
--ignore-scripts标志来防止恶意postinstall钩子执行。 - 使用供应链工具: 使用像
pnpm这样在供应链安全方面取得进展的包管理器。 - 对 LLM 生成的内容保持警惕: 请意识到,攻击者现在正利用 LLM 来创建极具说服力、听起来很专业的网络钓鱼邮件和 LinkedIn 个人资料。