PyPi供应链投毒系列事件,Discord助力黑客攻击

简介: 为应对日益扩大的软件供应链攻击风险,阿里云安全团队对主流第三方包管理仓库进行了持续性安全检测,并在近期侦测到十余起基于Discord的PyPi恶意投毒事件

前言


2020年7月,攻击者在PyPI官方仓库中上传了一个名为request的恶意包,致使用户在安装知名Python HTTP库requests时易因为拼写错误而遭受该恶意包攻击;同年11月,随着新冠病毒(COVID-19)在全世界传播,名为covd的恶意包被上传到PyP官方仓库中,旨在模仿一个用于获取新冠病毒实时信息的Python包covid,并成功被广泛传播。


近年,类似的供应链攻击事件披露数量不断上升,其中以PyPi、Npm为代表的第三方包管理仓库尤为受到攻击者的青睐,因该类攻击的攻击难度低且隐蔽性高,影响范围广,给企业和用户带来的安全风险与日俱增。


概述


为应对日益扩大的软件供应链攻击风险,阿里云安全团队对主流第三方包管理仓库进行了持续性安全检测,并在近期侦测到十余起基于Discord的PyPi恶意投毒事件


Discord简介

1.png

Discord是近年国外非常火的一款免费网络实时通话平台,同时也是一个游戏玩家的讨论社区。据相关数据统计,2020年3月起,Discord在全球范围内的热度就居高不下,目前该社区月活跃用户已经超过1.4亿。


2.png

Discord在提供基本的文字语音等功能的基础上,还免费开放用户制作第三方机器人的能力,并提供了完善的文档和接口。这使得大量开发者也进入到Discord中进行机器人等功能的自定义开发,同时促使了大量的第三方Discord包被上传到各大包管理仓库里。

而在Discord提供的API中,用户可以通过Webhook的功能或是Bot功能向自己的Discord服务器的推送消息,其过程仅需要提供一个token信息。这不仅方便用户进行定制化开发,而其匿名性也为黑客提供了便利,导致越来越多的黑客将视线转向Discord ,Discord的该功能成为了黑客搭建C&C服务器的“风水宝地”。而另一方面,Discord机器人开发者人数上升,其开发过程的软件供应链也成为了黑客的优质目标,通过供应链投毒的手法,恶意软件可以有效的在Discord开发者中传播起来。


事件概况

3.png

阿里云安全团队根据IOC与恶意行为特征对PyPi恶意包进行聚类分析发现,多个攻击者最早从2020年7月开始通过不同的用户身份向PyPi仓库不断投递基于Discord进行攻击的恶意包,PyPi下载量统计数据显示,截止目前针对该系列恶意包总下载量超过20000次。


通过恶意包的命名风格可以看出,目前PyPi投毒主要还是以经典的typo攻击模式。恶意包通过模仿正常包包名,使受害用户在安装时因为拼写错误而遭受攻击。其中在用户名为raxishot和nexx74投递的多个恶意包中,还精心伪造了一份内容翔实的Readme文件来伪装自身(如下图),以进一步获取用户信任。


4.png

恶意行为


经过分析发现,这一系列针对Discord的恶意包主要攻击目标是Windows操作系统,其实施的恶意行为具有较高的相似性,并且随着时间推移,后期投递的恶意包中存在的恶意行为在不断的添加和完善。


5.png

该系列恶意包恶意行为触发方式分为两种,一是在用户执行pip install命令时触发,或是在import导入该恶意包并启动运行时完成触发。其攻击过程均利用Discord作为C&C服务器,所有数据回传和命令下发都会通过Discord的网络通信接口发送到攻击者的Discord服务器中。


  1. 2020年7月开始早期投递的恶意包如socketxio、stringhelp、discord-api等包中,恶意行为主要为单一的窃取用户Discord账户的token信息,该token可用于Discord的用户身份认证。
  2. 2021年3月由用户7._4d投递的dishelp-python恶意包中,在窃取Discord账户token的基础上,增加了对受害者系统中Chrome浏览器存储的账号密码的窃取。
  3. 2021年4月投递的noblesse2和noblessev2中,会同时窃取Chrome和Edge中保存的账号密码以及信用卡信息,以及窃取Windows系统激活密钥,同时还会对受害者屏幕进行截图。
  4. 2021年7月上传的colora系列恶意包中,进一步的增加了对Chrome浏览器Cookie的窃取,在窃取Discord账户token的基础上进一步窃取了用户Discord中的个人信息。
  5. 2021年8月最近一次投递的针对Discord的恶意包pyfetchx中,攻击者在窃取各项隐私信息的基础上,基于Discord的机器人功能实现了一个完善的后门和持久化能力,危害性进一步提高。


手法分析


检测对抗


在基于Discord的系列恶意包中,部分恶意包对恶意代码进行了一定程度的混淆以对抗静态检测手段。


1、对代码进行编码,如coloramz、Backdoorxrat等恶意包

代码1.jpg

2、使用marshal库对Python代码对象进行序列化,如DiscordSafety恶意包

代码2.jpg


3、尝试混淆代码结构,如discord-api恶意包

代码3.jpg


C&C通信


Discord作为C&C服务器的两种方式,一是通过Webhook功能,攻击者可以轻松的将窃取的数据通过一个Webhook URL传输到自己的Discord中;另一个是通过创建Bot,该方式攻击者不仅可以从受害者机器上传数据,还能够从控制端进行命令下发。

6.png

7.jpg


在该系列投毒事件中,前期恶意包主要通过Webhook功能来回传窃取的敏感信息:

代码4.jpg

而后期的一些恶意包则开始使用Bot功能来实现数据双向通信:

代码5.jpg

信息窃取


1、窃取用户Discord token


若用户在电脑中登陆过Discord,通常Discord token会出现在浏览器或Discord应用程序的数据文件中,该token可用于Discord的用户身份认证,可能的数据文件路径如下:

代码6.jpg

Discord token具有一个固定的格式,可以通过正则表达式[a-zA-Z0-9\-]{24}\.[a-zA-Z0-9\-] {6}\.[a-zA-Z0-9\-]{27}|mfa\.[a-zA-Z0-9\-]{84}进行搜索匹配,具体恶意行为如下:

代码7.jpg

2、窃取用户浏览器信息数据


如今各种浏览器为了方便用户使用均提供了记住密码、信用卡等功能,但不幸的是该功能存在着不小的安全隐患 ,而今成为了攻击者窃取密码等数据的有效途径。在该系列恶意包中,Chrome和Edge就成为了信息窃取的目标。


攻击者首先从C:\User\[UserName]\AppData\Local\Google\Chrome\User Data\default\Login Data获取到Chrome浏览器对数据的解密密钥。


然后访问Chrome保存的用户密码的sqlite数据库C:\User\[UserName]\AppData\Local\Google\Chrome\User Data\Local State以及保存信用卡的sqlite数据库C:\User\[UserName]\AppData\Local\Google\Chrome\AppData\Local\Google\Chrome\User Data\default\Web Data,将其中的数据用密钥继续解密后即轻松的完成了对数据的窃取


同时,攻击者还是使用了browser_cookie3这个Python库来获取用户浏览器中的Cookie信息。


代码8-1.jpg代码8-2.jpg代码8-3.jpg


3、窃取Window系统激活密钥


当攻击者窃取到了Discord用户的token后,即会尝试通过API获取受害者用户的个人信息、好友、频道、支付情况等数据。


相关恶意代码如下:

代码9.jpg

5、截屏


在窃取数据的基础上,该系列恶意包中还存在截屏行为

代码10.jpg


后门植入


后门能力主要是通过Discord的Bot功能实现的,攻击者通过在Discord聊天窗口中发出命令,而受害者中的恶意后门将执行相应的操作。


在pyfetchx恶意包中提供了非常强大的后门功能,包括命令执行、文件传输、剪切板读取、截屏甚至Windows UAC绕过功能,对用户安全威胁极大。

代码12.jpg

同时pyfetchx恶意包还具有持久化能力。恶意包首先将从http://www.dwarforest.tk/updates.txt下载恶意Python代码,并将其编译为pyc文件后拷贝到\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\开机启动目录中,具体操作如下:

代码13.jpg

IOCs

Discord Webhook URL:

https://discord.com/api/webhooks/845637931749736498/ewOnnjXCvtX1bzTDPhFEe1fFZ4MFh7t-OydnQ3ob2MxQ_sMq2ZXXNIwA36OWBFjP3vbVhttps://discord.com/api/webhooks/857801398062415913/gjtazjRjPG5BhM1fMUJfIpsTpkikHkn4j7V7qWYKDQwB_C0KLlu7EhbM6Tn3ZjH4wR29https://discord.com/api/webhooks/854434670875639829/t03t6B5eUAD9oEYUl1JZSEjCZ4CRyw4C8ZP7BfJ0jXezYMPcyrYEj1fyO72tVWcKp9p1https://ptb.discord.com/api/webhooks/807327703082074143/uwAgm7PQaROJB3USUNDv1RT7uJzfidUsHBsC_y0p2qtChlzNVgpG1vw2zAtkFX-8Xq-xhttps://discord.com/api/webhooks/815048322414936075/SnIr7HTGb_Fr48thne92sW2MV2bVpT-OiTt275g50yFNzmD5y10qdetbcBCYH8IrurNqhttps://discord.com/api/webhooks/818207581465346099/iTb5aFCYX90QwsE_GeblnhX1V9-QOB-JBpp1YdaRrTZvZi_i_JFiBjGkXtZrIO5OFG3Phttps://discord.com/api/webhooks/823687444481835028/XfqnGeox1fI_wp2vUgK9HpmfVMOUl9t6HefjfQEhnyQwgtnzyjr_2uYrWDWQlS0NW6mnhttps://discord.com/api/webhooks/737341936297574491/iYT-5fQ-rWtwjziy2yZubSc56rekTRvl_cPz7XhTsJi8gnUWnPYfO357x1P0bHGvDJx3https://discordapp.com/api/webhooks/746555804047507537/SErkxjuHm1FwqSER8ll7DQtmbbjXAtfMtGk88b3O21Ev_uhbxziZ2-5Qz-1nL4RUsMIO


其他URL

http://www.dwarforest.tk/updates.txt


近期其他高危投毒事件

8.jpg


安全建议

  1. 相关用户和企业请尽快自查,确保恶意包得到清除
  2. 开发者使用第三方库时仔细确认安装方式无误,如避免拼写错误。
  3. 企业可建立内部可信软件源和包管理仓库,避免员工下载未知软件或开发组件
相关文章
|
存储 机器学习/深度学习 人工智能
机器学习 | NumPy超详细教程
机器学习 | NumPy超详细教程
530 0
|
3月前
|
自然语言处理 安全 API
HCL AppScan Standard 10.9.0 新增功能简介
HCL AppScan Standard 10.9.0 新增功能简介
317 0
|
5月前
|
数据采集 人工智能 监控
ISO 50001能源管理体系标准全解析
ISO 50001是国际公认的能源管理体系标准,为企业提供系统化框架以提升能源效率、减少消耗并推动可持续发展。本文深入解析其核心内容,涵盖标准概述、关键要求、使用指南及认证效益。通过实施该标准,企业可降低运营成本、增强竞争力并树立良好形象。此外,MyEMS开源能源管理系统基于ISO 50001开发,支持多场景能源管理,助力实现碳中和目标。
508 0
数据投毒攻击和模型投毒攻击
数据投毒攻击通过污染恶意客户端的训练数据,模型投毒攻击则修改全局模型嵌入后门。前者依赖固定模式触发器或优化触发器模式,但存在异常修改易被检测和异质性导致效果不佳的问题。后者需大量系统先验信息,现实中难以获取,且面对新兴防御策略,成功发动后门攻击愈发困难。
|
Ubuntu Shell
ubuntu追加path环境变量
以上是追加PATH环境变量的方法。不同的方法适用于不同的应用场景,你可以根据自己的需求选择适合的方法。需要注意的是,在对系统文件进行更改时,一定要确保正确无误,避免系统的命令路径出错导致不必要的麻烦。
674 3
ubuntu追加path环境变量
|
前端开发 Java 开发工具
一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)
一款基于 Spring Boot 的现代化社区(论坛/问答/社交网络/博客)
634 0
|
供应链 安全 Shell
|
数据可视化
新建论文三线表模板,一键格式刷(包含word和latex版本)
新建论文三线表模板,一键格式刷(包含word和latex版本)
2350 0
|
SQL 安全 数据可视化
Apache Superset 未授权访问漏洞(CVE-2023-27524)
Apache Superset 存在未授权访问漏洞,攻击者可利用该漏洞验证和访问未经授权的资源。
570 1
|
监控 供应链 安全
【投毒事件】PyPI 官方仓库遭遇150+恶意包投毒影响
2022年06月23日,OSCS 开源安全社区监测发现 PyPI 官方仓库被攻击者上传了 `agoric-sdk` `datashare` `datadog-agent` 等150+个恶意钓鱼包,OSCS官方提醒广大开发者关注。