先介绍下相关背景:
本人正在投递Web3相关工作,大概就是加密货币那些东西,一般从事这一行的自己肯定有一个钱包账户,钱包私钥/助记词泄露 ≈ 这个钱包的控制权泄露。别人可以直接转走你钱包里的链上资产。
事发昨日半夜,TG上有一个人加我,跟我说之前是听XX提起的我,他们急需用人。
虽然这个人我没听说过,但是我确实在找工作,我就顺着往下聊了,后续问我要了简历相关后跟我聊了点技术、语言相关。开始提出技术测验,本来我已经躺下并且对方很着急但是想着说不定是个机会还是爬起来了。
后续又对项目给我提了一些问题后让我运行项目,我当时并没有起疑
重点来了
npm start 后我的电脑风扇转速明显提升,在夜里比较明显,并且电脑CPU飙升(9850X3D),我立刻警铃大作,怀疑被投毒,决定立刻断网。
处理
迁移项目到另一台电脑上用codex分析,项目根目录中一个js文件被混淆了恶意代码,不贴源码了,大概贴一下代码问题
module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
"./public/index.html",
],
theme: {
extend: {
colors: {
primary: {
dark: "rgb(92, 35, 7)",
orange: "rgba(215, 129, 66, 1)",
light: "rgba(230, 124, 31, 1)",
},
mint: "#00ffa3",
blue: "#5865f2",
},
fontFamily: {
montserrat: ["Montserrat", "sans-serif"],
bakbak: ["Bakbak One", "sans-serif"],
},
backgroundImage: {
"gradient-primary": "linear-gradient(25deg, rgba(215, 129, 66, 1) 3%, rgba(230, 124, 31, 1) 32%, rgba(92, 35, 7, 1) 62%)",
},
},
},
plugins: [],
};
// 后面被追加了大量混淆恶意 JavaScript。
// 为避免误执行或再次传播 这里不再展示
分析结果
-
下载/控制地址:
http://45.59.163.198:1244/s/90284f194823 -
用户目录落地位置:
C:\Users\XXX\.vscode -
主要落地文件:
-
f.js -
package.json -
package-lock.json -
node_modules -
ex3 -
sid -
font3 -
plog3 -
pomt3 -
tpath
-
落地的 f.js SHA256:
FB484315DF79FAC9D832861CE7B955C7733BF3F4073DD0659CEC24E260A442E0
其依赖里出现过这些包名:
-
@nut-tree-fork/nut-js -
axios -
basic-ftp -
clipboardy -
msgpack-lite -
plist -
request -
screenshot-desktop -
sharp -
socket.io-client -
ssh2 -
unzipper -
uuid
这些特征更接近远控/信息窃取器
伪代码结构
文件:tailwind.config.js
1. 先导出正常 Tailwind 配置
- content 指向 src 和 public
- theme.extend 定义颜色、字体、背景渐变
- plugins 为空数组
2. 正常配置后面追加混淆 JavaScript
- 通过大量编码字符串、数组重排、动态解码隐藏真实逻辑
- 让肉眼审查时不容易看到 URL、路径、命令和依赖名
3. 当 react-scripts 加载 Tailwind 配置时,Node.js 执行追加代码
4. 恶意追加代码的大致流程
主流程:
如果当前环境不符合条件:
退出
设置落地目录:
用户目录 = C:\Users\xxx
伪装目录 = 用户目录\.vscode
创建伪装目录:
如果 .vscode 不存在:
创建目录
准备二阶段文件:
目标文件 = .vscode\f.js
目标 package.json = .vscode\package.json
从远端地址请求载荷:
远端地址 = http://45.59.163.198:1244/s/90284f194823
把返回内容写入:
.vscode\f.js
.vscode\package.json
在 .vscode 目录里安装依赖:
触发 npm install 或等价流程
启动二阶段:
让 Node.js 执行 f.js
5. 二阶段 f.js 的大致能力
初始化:
生成或读取 sid
记录本机标识
连接远端控制端
建立通信:
连接 socket.io 控制通道
等待远端命令
上传执行结果
信息收集:
扫描浏览器/钱包/SSH/FTP/系统信息相关路径
读取剪贴板
截屏
收集文件列表或特定敏感文件
远程控制:
接收远端指令
执行文件上传/下载
执行交互控制相关动作
维持会话状态
清理或隐藏:
使用 .vscode 作为伪装目录
用普通 node 子进程运行
命令行可能显示为 node -
后续:
- 火绒全盘查杀
- 利用codex、claude code进行扫描分析
- 必要时考虑重装系统
- cookie重置
个人分析:
- 该攻击精确针对web3从业者,个人钱包余额不多并且断网及时未造成任何损失
- 在墙内被保护得太好的,佬友们在外面一定要警惕投毒,避免造成任何资损
网络安全不容忽视!
9 个帖子 - 5 位参与者