供应链安全情报 | 恶意py包伪装代理SDK进行后门攻击,目标锁定python开发者
字数 1976 2025-08-24 07:48:22
恶意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
- 编码URL:
-
使用
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
- 使用的C2服务器:
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文件:
[ { "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}
-
预防措施:
- 检查项目中是否使用了受影响组件
- 优先使用官方源而非镜像源
- 安装包前检查setup.py内容
- 使用虚拟环境隔离项目依赖
- 定期更新安全工具和依赖
-
应急响应:
- 如发现已安装恶意包,立即卸载并检查系统
- 监控异常网络连接,特别是到C2服务器的连接
- 检查系统是否有
RuntimeBroker.exe等异常进程
总结
此次攻击具有高度隐蔽性,所有恶意操作都在内存中完成,无文件落盘。攻击者通过PyPI供应链攻击针对Python开发者,国内镜像源的延迟下架增加了风险。开发者应提高安全意识,使用可信源和工具进行安全检测。