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

admin 2022年7月25日17:56:02评论184 views字数 1170阅读3分54秒阅读模式

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

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

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

简单分析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

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

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


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


原文始发于微信公众号(凌驭空间):关于 Github 项目投毒事件简单分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月25日17:56:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于 Github 项目投毒事件简单分析https://cn-sec.com/archives/1199077.html

发表评论

匿名网友 填写信息