供应链安全情报 | 恶意py包伪装代理SDK进行后门攻击,目标锁定python开发者
字数 1976 2025-08-24 07:48:22

恶意Py包伪装代理SDK进行后门攻击分析报告

概述

2023年11月28日,在PyPI官方仓库监测到两起伪装成HTTP和SOCKS5代理SDK的开源组件投毒事件。攻击者上传了名为libproxylibsocks5的恶意Python包,这些包在安装时会执行恶意代码,导致开发者系统被植入后门。

攻击影响

  • 本周下载量约500多次
  • 恶意包已从PyPI官方仓库下架
  • 国内部分主流PyPI镜像源仍可访问下载
  • 国内开发者面临较高风险

恶意组件分析

攻击流程

  1. 第一阶段:通过setup.py中的自定义install命令加载远程攻击载荷
  2. 第二阶段:解密并执行shellcode
  3. 第三阶段:经过16轮shellcode解码后植入后门程序

技术细节

第一阶段:加载远程攻击载荷

恶意组件在setup.py脚本中自定义了install命令类VerifyInstallationChecksum。当开发者执行pip install时,会调用该类的run函数:

  1. 解码base64编码的URL

    • 编码URL:aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZXJpay1hcnRlbW92L2I1ZGUyNTE5NWJkMGU5NjFhNTIxYjAzNDU2NjE0ZDRjL3Jhdy8xY2MyMzYzMTBkYTdmM2UwNWI2NTcxZWFhOWRiNGI2NjM2ZmI0Njg0L2d6TGpnT3VqOHkwYmF2VG12Z2tDd1IzaDFrdkVDMUJNLmI2NAo=
    • 解码后URL:https://gist.github.com/erik-artemov/b5de25195bd0e961a521b03456614d4c/raw/1cc236310da7f3e05b6571eaa9db4b6636fb4684/gzLjgOuj8y0bavTmvgkCwR3h1kvEC1BM.b64
  2. 使用urllib下载加密的恶意代码

  3. 解密并调用eval执行第二阶段代码

第二阶段:shellcode解密执行

解密后的代码经过混淆处理,主要逻辑为:

  1. 调用Python ctypes库动态分配RWX(可读可写可执行)内存
  2. 解密内置的加密压缩shellcode
  3. 将shellcode释放到RWX内存
  4. 直接跳转到内存中执行shellcode

第三阶段:后门植入

逆向分析发现:

  1. 初始shellcode(shellcode_stage1)会分配RWX内存并解码下一阶段shellcode
  2. 需要经过16轮shellcode解码(shellcode_stage1shellcode_stage17)
  3. 所有操作都在内存中执行,无文件落盘
  4. 最终阶段(shellcode_stage17)会从攻击者服务器下载后门程序RuntimeBroker.exe并植入系统
    • 使用的C2服务器:3478.qt-api-worker-threads.workers.dev

IoC数据

组件名称 受影响版本 语言 ID 描述 发布日期
libproxy 1.1.4-1.1.5 Python XMIRROR-2023-113001 恶意PyPI组件包投毒 2023-11-30
libsocks5 1.1.1 Python XMIRROR-2023-113002 恶意PyPI组件包投毒 2023-11-30

防护建议

  1. 快速排查

    • 使用OpenSCA-cli工具扫描项目
    • 创建包含以下内容的db.json文件:
      [
        {
          "product": "libproxy",
          "version": "[1.1.4, 1.1.5]",
          "language": "python",
          "id": "XMIRROR-2023-113001",
          "description": "恶意Pypi组件包投毒。",
          "release_date": "2023-11-30"
        },
        {
          "product": "libsocks5",
          "version": "[1.1.1, 1.1.1]",
          "language": "python",
          "id": "XMIRROR-2023-113002",
          "description": "恶意Pypi组件包投毒。",
        }
      ]
      
    • 执行命令:opensca-cli -db db.json -path ${project_path}
  2. 预防措施

    • 检查项目中是否使用了受影响组件
    • 优先使用官方源而非镜像源
    • 安装包前检查setup.py内容
    • 使用虚拟环境隔离项目依赖
    • 定期更新安全工具和依赖
  3. 应急响应

    • 如发现已安装恶意包,立即卸载并检查系统
    • 监控异常网络连接,特别是到C2服务器的连接
    • 检查系统是否有RuntimeBroker.exe等异常进程

总结

此次攻击具有高度隐蔽性,所有恶意操作都在内存中完成,无文件落盘。攻击者通过PyPI供应链攻击针对Python开发者,国内镜像源的延迟下架增加了风险。开发者应提高安全意识,使用可信源和工具进行安全检测。

恶意Py包伪装代理SDK进行后门攻击分析报告 概述 2023年11月28日,在PyPI官方仓库监测到两起伪装成HTTP和SOCKS5代理SDK的开源组件投毒事件。攻击者上传了名为 libproxy 和 libsocks5 的恶意Python包,这些包在安装时会执行恶意代码,导致开发者系统被植入后门。 攻击影响 本周下载量约500多次 恶意包已从PyPI官方仓库下架 国内部分主流PyPI镜像源仍可访问下载 国内开发者面临较高风险 恶意组件分析 攻击流程 第一阶段 :通过setup.py中的自定义install命令加载远程攻击载荷 第二阶段 :解密并执行shellcode 第三阶段 :经过16轮shellcode解码后植入后门程序 技术细节 第一阶段:加载远程攻击载荷 恶意组件在 setup.py 脚本中自定义了install命令类 VerifyInstallationChecksum 。当开发者执行 pip install 时,会调用该类的 run 函数: 解码base64编码的URL 编码URL: aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZXJpay1hcnRlbW92L2I1ZGUyNTE5NWJkMGU5NjFhNTIxYjAzNDU2NjE0ZDRjL3Jhdy8xY2MyMzYzMTBkYTdmM2UwNWI2NTcxZWFhOWRiNGI2NjM2ZmI0Njg0L2d6TGpnT3VqOHkwYmF2VG12Z2tDd1IzaDFrdkVDMUJNLmI2NAo= 解码后URL: https://gist.github.com/erik-artemov/b5de25195bd0e961a521b03456614d4c/raw/1cc236310da7f3e05b6571eaa9db4b6636fb4684/gzLjgOuj8y0bavTmvgkCwR3h1kvEC1BM.b64 使用 urllib 下载加密的恶意代码 解密并调用 eval 执行第二阶段代码 第二阶段:shellcode解密执行 解密后的代码经过混淆处理,主要逻辑为: 调用Python ctypes 库动态分配RWX(可读可写可执行)内存 解密内置的加密压缩shellcode 将shellcode释放到RWX内存 直接跳转到内存中执行shellcode 第三阶段:后门植入 逆向分析发现: 初始shellcode( shellcode_stage1 )会分配RWX内存并解码下一阶段shellcode 需要经过16轮shellcode解码( shellcode_stage1 到 shellcode_stage17 ) 所有操作都在内存中执行,无文件落盘 最终阶段( shellcode_stage17 )会从攻击者服务器下载后门程序 RuntimeBroker.exe 并植入系统 使用的C2服务器: 3478.qt-api-worker-threads.workers.dev IoC数据 | 组件名称 | 受影响版本 | 语言 | ID | 描述 | 发布日期 | |------------|------------|--------|----------------|--------------------------|------------| | libproxy | 1.1.4-1.1.5 | Python | XMIRROR-2023-113001 | 恶意PyPI组件包投毒 | 2023-11-30 | | libsocks5 | 1.1.1 | Python | XMIRROR-2023-113002 | 恶意PyPI组件包投毒 | 2023-11-30 | 防护建议 快速排查 : 使用OpenSCA-cli工具扫描项目 创建包含以下内容的db.json文件: 执行命令: opensca-cli -db db.json -path ${project_path} 预防措施 : 检查项目中是否使用了受影响组件 优先使用官方源而非镜像源 安装包前检查setup.py内容 使用虚拟环境隔离项目依赖 定期更新安全工具和依赖 应急响应 : 如发现已安装恶意包,立即卸载并检查系统 监控异常网络连接,特别是到C2服务器的连接 检查系统是否有 RuntimeBroker.exe 等异常进程 总结 此次攻击具有高度隐蔽性,所有恶意操作都在内存中完成,无文件落盘。攻击者通过PyPI供应链攻击针对Python开发者,国内镜像源的延迟下架增加了风险。开发者应提高安全意识,使用可信源和工具进行安全检测。