关于 Github 项目投毒事件简单分析
2022-7-25 16:56:37 Author: mp.weixin.qq.com(查看原文) 阅读量:146 收藏

关于 Github 项目投毒事件简单分析

2022年7月24日星期日下午,Github平台上名为“FuckRedTeam”的账号创建了“360tianqingRCE”项目( https://github[.]com/FuckRedTeam/360tianqingRCE ),经研判分析,该项目为恶意投毒项目,攻击者在Python代码中导入了自定义的恶意库,使得代码在运行后加载库中的恶意代码,具体分析请见下文。

简单分析

项目主文件为“360tianqing-RCE.py”,在该文件头部加载了一个恶意库“fake_useragant”,其中将“agent”写成“agant”来混淆视听:

该恶意库已经上传至Pypi官方,现在(2022年7月25日星期一)已经删除,但国内的Pypi镜像站点仍未响应,恶意库依然保留(仍然存在风险),例如清华的站点( https://pypi[.]tuna[.]tsinghua[.]edu[.]cn/simple/fake-useragant/ ):

该恶意库加载之后,在代码中调用了一个exit函数:

而在该恶意库内的代码中,exit函数则是如下的逻辑,执行一个taskkill命令,并且使用了urllib2.urlparse函数:

这里看似没问题,但实际上该库的文件中存在一个urllib2.py的文件,所以此处使用的也是投毒者自己自定义的库:

在urllib2.py文件中,则巧妙的使用“import ... as ...”语法,将导入的pickle库命名为json,并且在后续的urlparse函数中,使用了“json.loads”来加载恶意代码,实际上执行的代码是“pickle.loads”:


“pickle.loads”是用于反序列化字符串的,通过构建传递的参数值可以使得其执行恶意代码/命令,所以此处我们将这一段Base64的参数值进行解码看一下它的内容:

我们可以清晰的看见解码后有一段Python代码,它的作用就是获取 http://i[.]miaosu[.]bid/data/f_20133572[.]png 地址文件的内容,然后按偏移去读取,接着进行Base64解码。

当我们解码之后发现里面又套了一层Python代码:

并且我们也可以很清晰的看见它的逻辑,先进行Base64解码,再进行AES解密:

解密之后又是一层AES(套娃操作),但是在代码的最后我们可以看见解密出来的就是Shellcode,它调用了Windows API去加载:

总结

至此我们可以看到攻击者手法很娴熟,特别是投毒的前置阶段:恶意代码中的各种混淆及套娃操作。

另外国内Pypi恶意库投毒事件已经不是一次两次了,大家一定要小心谨慎,国内镜像站也应积极同步Pypi官方动作,防止恶意攻击范围扩大。



文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNjI3MjI2OA==&mid=2247483820&idx=1&sn=5ea654f9bb4627b76aaf0e301074f749&chksm=c153244ff624ad5965b8606fcda33df8bc74d5d3667820cefdd517f102f5b15a797e821a88eb&mpshare=1&scene=1&srcid=07253pn1IEo0dGAWquTg9jch&sharer_sharetime=1658739388380&sharer_shareid=205c037363a9188e37dfb6bb4436f95b#rd
如有侵权请联系:admin#unsafe.sh