我检查了面试的家庭作业项目,发现它是一整套攻击行动

查看原文 HN 讨论

文章摘要

作者收到了一份看起来完全正常的招聘”家庭作业”(take-home)项目——一个 FastAPI 项目,附带一份 PDF 作业说明。出于打 CTF 养成的习惯,他用 tree -a 检查了隐藏目录,结果发现这份作业里带着一整套隐藏的恶意基础设施。

恶意代码藏在项目自带的 .git 目录里的 Git hooks 中。仓库本身是从一个公开的 GitHub 项目(一个个人理财服务)克隆来的,然后被武器化。关键的激活手法非常狡猾:作业 PDF 里刻意安排了 git 相关的任务,正如作者所说,”他们要确保候选人至少会执行其中一条 git 命令,这样 hooks 就会被触发”。

pre-commit hook 里包含操作系统检测逻辑(case "$(uname -s)"),用来判断受害者跑的是 macOS、Linux 还是 Windows,每个分支都会用 curl 或 wget 从 IP 地址 45.61.164.38:5777 拉取对应的远程载荷,请求里还带一个标识参数(id=402)。

载荷是多阶段架构。第一阶段是 pre-commit hook 拉取初始的 Linux 载荷。第二阶段的 tokenlinux.shtokenlinux.npl 的名字下载、重命名为 .sh,然后通过 nohup 在后台执行;这一阶段负责安装 Node.js、配置系统路径并下载后续文件。第三阶段是重度混淆的 parser.js,值得注意的是它是按追踪 ID 为每个受害者单独提供的——这说明这是针对个人定制的钱包窃取,而不是通用的挖矿程序。

package.json 里的依赖进一步暴露了意图:clipboardy(剪贴板访问)、hardhat(以太坊开发工具)、execp 以及进程管理工具,都指向针对加密货币钱包或浏览器扩展的窃取,而非传统挖矿。

在 OPSEC 方面,攻击者使用裸 IP 而非域名——作者调侃这个选择”简直在大喊’我是恶意软件’“。他还对服务器做了 nmap 扫描,发现跑着 OpenSSH 9.6p1,当时没有可利用的漏洞。他也提到这场攻击活动存在其他变种:有受害者收到的是配了 launch 命令的 .vscode 目录,只要在 VS Code 里打开项目就会自动执行,完全不需要手动跑任何 git 命令。文章将其定性为一场利用招聘流程投递定制化恶意软件的成熟社工行动,背后是朝鲜(DPRK)APT 组织。

HN 评论精华