Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

  • 事件背景:2025年7月,慢雾安全团队发现Solana生态中多个开源项目(如audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot)暗藏恶意代码,通过配置文件窃取用户私钥并外传至攻击者服务器。

  • 攻击手法

    • 恶意代码隐藏在config.rs文件的create_coingecko_proxy()方法中,伪装成正常功能(如价格查询)。
    • 通过解码硬编码的HELIUS_PROXY(Base58格式)获取攻击服务器地址(如http://103.35.189.28:5000/api/wallets)。
    • 读取.env文件中的私钥,构造POST请求将数据发送至攻击者服务器,且不处理响应以避免暴露。
  • 技术细节

    • 私钥长度小于85时程序会陷入死循环,大于85时则封装为Keypair对象并外传。
    • 攻击者定期更新GitHub仓库中的服务器地址编码(如替换为storebackend-qpq3.onrender.com),动态切换目标。
  • 动态验证

    • 安全团队通过搭建测试服务器,替换恶意地址并生成测试私钥,成功捕获到恶意项目发送的私钥数据。
  • 入侵指标(IoCs)

    • 攻击IP:103.35.189.28(位于美国)。
    • 相关域名:storebackend-qpq3.onrender.com
    • 恶意仓库及类似项目链接(如BitFancy/Solana-MEV-Bot-Optimized等)。
  • 安全建议

    • 警惕来源不明的GitHub项目,尤其是涉及私钥操作的工具。
    • 在独立环境中测试可疑程序,避免直接使用含敏感信息的真实环境。
总结

作者:Joker&Thinking

编辑:KrsMt.

背景

在 2025 年 7 月初,慢雾安全团队接到一名受害用户的求助,请求协助分析其加密资产被盗的原因。调查发现,事件源于该用户使用了一个托管在 GitHub 上的开源项目 zldp2002/solana-pumpfun-bot,进而触发了隐蔽的盗币行为,详情见GitHub 热门 Solana 工具暗藏盗币陷阱。

近期,又有用户因使用类似的开源项目 —— audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot,导致加密资产被盗,并联系到慢雾安全团队。对此,团队进一步深入分析了该攻击手法。

分析过程

静态分析

我们首先通过静态分析的方式,寻找攻击者设置的陷阱。经分析,发现可疑代码位于/src/common/config.rs配置文件中,主要集中在create_coingecko_proxy()方法内:

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

从代码可见,create_coingecko_proxy() 方法首先调用了 import_wallet(),该方法进一步调用 import_env_var() 来获取私钥。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

在 import_env_var() 方法中,主要用于获取 .env 文件中的环境变量配置信息。

调用过程中,如果环境变量存在,则直接返回;若不存在,则进入 Err(e) 分支,打印错误信息。由于存在无退出条件的 loop {} 循环,会导致资源持续消耗。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

PRIVATE_KEY(私钥)等敏感信息也存储在.env文件中。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

回到 import_wallet() 方法,当其中调用 import_env_var() 获取到 PRIVATE_KEY(私钥)后,恶意代码会对私钥长度进行判断:

  • 若私钥长度小于 85,恶意程序将打印错误信息,并由于存在无退出条件的 loop {} 循环,会导致资源持续消耗,恶意程序无法正常退出;
  • 若私钥长度大于 85,则使用 Solana SDK 将该 Base58 字符串转换为 Keypair 对象,其中包含私钥信息。

随后,恶意代码使用 Arc 对私钥信息进行封装,以支持多线程共享。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

回到 create_coingecko_proxy() 方法,在成功获取私钥信息后,恶意代码接着对恶意 URL 地址进行解码。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

该方法首先获取编码后的 HELIUS_PROXY(攻击者服务器地址)这一硬编码常量。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

随后,恶意代码使用 bs58 对 HELIUS_PROXY(攻击者服务器地址)进行解码,将解码结果转换为字节数组,并通过 from_utf8() 将该字节数组进一步转为 UTF-8 字符串。

通过编写脚本可还原出 HELIUS_PROXY 解码后的真实地址如下:

http://103.35.189.28:5000/api/wallets

恶意代码在成功解码出 URL (http://103.35.189.28:5000/api/wallets) 后,首先创建一个 HTTP 客户端,将获取到的私钥信息 payer 使用 to_base58_string() 转换为 Base58 字符串。

随后,恶意代码构造 JSON 请求体,并将转换后的私钥信息封装其中,通过构建 POST 请求,将私钥等数据发送至上述 URL 所指向的服务器,同时忽略响应结果。

无论服务器返回何种结果,恶意代码仍会继续运行,以避免引起用户察觉。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

此外,create_coingecko_proxy() 方法中还包含获取价格等正常功能,用以掩盖其恶意行为;该方法名称本身也经过伪装,具有一定的迷惑性。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

通过分析可知,create_coingecko_proxy() 方法在应用启动时被调用,具体位于 main.rs 中 main() 方法的配置文件初始化阶段。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

在配置文件 src/common/config.rs 的 new() 方法中,恶意代码首先加载 .env 文件,随后调用 create_coingecko_proxy() 方法。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

据分析,该服务器的 IP 地址位于美国。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

(https://www.virustotal.com/gui/ip-address/103.35.189.28)

观察到该项目在 GitHub 上于近期(2025 年 7 月 17 日)进行了更新,主要更改集中在 src 目录下的配置文件 config.rs 中。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

在 src/common/config.rs 文件中,可以看到 HELIUS_PROXY(攻击者服务器地址)的原地址编码已被替换为新的编码。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

使用脚本对原地址编码进行解码后,可获得原服务器地址。

// 原地址编码 HELIUS_PROXY:2HeX3Zi2vTf1saVKAcNmf3zsXDkjohjk3h7AsnBxbzCkgTY99X5jomSUkBCW7wodoq29Y// 解码得到的原服务器地址https://storebackend-qpq3.onrender.com/api/wallets

动态分析

为了更直观地观察恶意代码的盗窃过程,我们采用动态分析方法,编写了一个 Python 脚本,用于生成测试用的 Solana 公私钥对。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

同时,我们在服务器上搭建了一个能够接收 POST 请求的 HTTP 服务器。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

编写 Python 脚本生成测试服务器对应的编码,并将其替换原攻击者设置的恶意服务器地址编码,即 HELIUS_PROXY(攻击者服务器地址)处。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

随后,将 .env 文件中的 PRIVATE_KEY(私钥)替换为刚生成的测试私钥。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

接下来,启动恶意代码并观察服务器端接口的响应。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

我们可以看到,测试服务器成功接收到了恶意项目发送的 JSON 数据,其中包含 PRIVATE_KEY(私钥)信息。

Solana生态再现恶意机器人:配置文件暗藏私钥外传陷阱

入侵指标(IoCs)

IPs:

103.35.189.28

Domains:

storebackend-qpq3.onrender.com

SHA256:

  • 07f0364171627729788797bb37e0170a06a787a479666abf8c80736722bb79e8 - pumpfun-pumpswap-sniper-copy-trading-bot-master.zip
  • ace4b1fc4290d6ffd7da0fa943625b3a852190f0aa8d44b93623423299809e48 - pumpfun-pumpswap-sniper-copy-trading-bot-master/src/common/config.rs

恶意仓库:

https://github.com/audiofilter/pumpfun-pumpswap-sniper-copy-trading-bot

类似实现手法:

  • https://github.com/BitFancy/Solana-MEV-Bot-Optimized
  • https://github.com/0xTan1319/solana-copytrading-bot-rust
  • https://github.com/blacklabelecom/SAB-4
  • https://github.com/FaceOFWood/SniperBot-Solana-PumpSwap
  • https://github.com/Alemoore/Solana-MEV-Bot-Optimized
  • https://github.com/TopTrenDev/Raypump-Executioner-Bot
  • https://github.com/deniyuda348/Solana-Arbitrage-Bot-Flash-Loan

总结

本次分享的攻击手法中,攻击者通过伪装成合法开源项目,诱导用户下载并执行该恶意代码。该项目会从本地读取 .env 文件中的敏感信息,并将盗取的私钥传输至攻击者控制的服务器。这类攻击通常结合社会工程学技术,用户稍有不慎便可能中招。

我们建议开发者与用户对来路不明的 GitHub 项目保持高度警惕,尤其是在涉及钱包或私钥操作时。如确需运行或调试,建议在独立且无敏感数据的环境中进行,避免执行来源不明的恶意程序和命令。

分享至:

作者:慢雾科技

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:慢雾科技如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
19分钟前
1小时前
1小时前
2小时前
2小时前
3小时前

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读