作者:[腾讯洋葱反入侵系统] vspiders、七夜、柯南
1. 概述
4月11日,腾讯洋葱反入侵团队监测到一起PyPI软件供应链攻击事件,经过追溯疑似是由境外APT组织 FIN8首次使用该手法进行的针对性攻击,攻击者在PyPI官方仓库伪造上传了guzzlehttp恶意包,该恶意包通过伪造著名PHP库 guzzlehttp/guzzle的名称 ,诱导用户认为是官方包的Python版本而进行下载安装,试图窃取 chrome浏览器用户数据、社交账号数据(微信、QQ、Telegram、Skype等),桌面文件、主机数据等敏感信息。
由于guzzlehttp/guzzle库非常流行,受众很广,而且国内开源镜像站均同步于PyPI官方仓库,所以该问题不仅会通过官方仓库,还会通过各个开源镜像站影响用户,导致影响范围成倍扩大。目前已通知官方下架,从下载量统计仅PyPI官方渠道就有数百名用户被攻击,国内镜像站感染用户数暂无统计数据。
2. 事件影响
(1) 境外APT组织 FIN8 定向攻击
经过溯源定位确认此次软件供应链攻击是由FIN8 组织发起的定向攻击,攻击目标是guzzlehttp/guzzle库的用户。
FIN8 是⼀个⽹络⾦融犯罪组织,它的典型攻击模式是从销售点(PoS)的环境中窃取
⽀付卡的数据,特别是针对零售商、餐馆和酒店⾏业的销售点。该组织⾄少从2016年以来就⼀直很活跃,但是在2019年中期沉寂了1年多时间,在2020年回归之后,陆续被国外安全⼚家发现并追踪其最新攻击⾏为,FIN8组织详细介绍见附录文章。
此外根据国内外公开的FIN8攻击报告统计,此次发现的软件供应链攻击行为尚属首次,疑似FIN8组织在软件供应链上尝试新的攻击方式。
(2) guzzlehttp/guzzle简介
guzzlehttp/guzzle 是一个非常流行的PHP库,主要应用场景是作为 HTTP客户端,特点是可以便捷发送HTTP请求,并能与Web服务快速集成。guzzlehttp/guzzle使用范围广,影响力大,拥有庞大的用户量。
1、guzzlehttp/guzzle所在github仓库 (https://github.com/guzzle/guzzle/) star数量:20.7k,fork数量:2.2k, 在2020年最流行的100个PHP库排行榜中排名第8,迭代更新接近10年。
2、根据 PHP Package Repository(https://packagist.org/packages/guzzlehttp/guzzle) 的数据统计,guzzlehttp/guzzle库 已下载安装 263,628,670 次,有至少 4,905 PHP框架/应用对此库有依赖。
(3) 受影响用户地区分布
根据PyPI官方仓库的下载记录,在guzzlehttp恶意包从4月11日上线到4月15日被官方下架期间,仅从PyPI官方仓库下载就达数百次,来源IP涉及超过6个国家或地区。
但由于PyPI代理源的普遍使用,大部分用户并不会直接从PyPI官方仓库进行下载安装,因此实际感染数量将远大于此。guzzlehttp恶意包感染地区分布如下图所示:
3. 供应链攻击手法
(1) 采用跨平台抢注手法
跨平台抢注指的是 软件包官方仅在单一平台提供软件的下载和安装,而在其他平台没有提供相应方式,攻击者可以通过在不同平台注册相同或相似的包名上传恶意软件,诱导用户下载安装。**这种方式对拥有庞大用户量的软件包,尤其有效。
**
(2) 项目主页伪装
为了增加迷惑性,对guzzlehttp钓鱼包所在的PyPI仓库主页进行一定程度的伪装,直接复用guzzlehttp/guzzle官方对软件包的描述,同时将项目链接替换为 guzzlehttp/guzzle官方github仓库地址。
4. 恶意样本分析
guzzlehttp钓鱼包在执行安装时,会将两个b64编码内容解密并落地到文件执行,主要会释放两个文件。
(1) 植入Python后门
第一个b64字符串 解码文件为一个python后门,通过app.omitrezor.com进行通讯,并远程执行该C&C服务器返回的指令。代码如下:
(2) 敏感信息窃取
第二个b64字符串解码后的文件功能主要用于macos、windows的敏感信息窃取。
根据系统的不同,分别使用php脚本和exe进行信息窃密,两个文件的功能相似,都会窃取机器的各种敏感数据并压缩后发送至collect-sync.jsdelivrs.com。
通过分析,恶意二进制样本首先会对win进行检测,主要会对路径、uname和网络进行初始化判断。
之后恶意文件会获取机器的IP、mac、hostname等信息,并将消息封装发送至远程CC。
该恶意样本提供了两种运作方式,如果执行时带有参数,则通过指令获取指定的敏感信息
否则默认发送全部信息。
收集的敏感信息列表如下:
● 微信、QQ、Telegram、Skype等社交账号数据
● Chrome浏览器:包括cookies、书签、历史、设置、最常访问、网页缓存和登录信息
● PC桌面文件
● 主机信息:系统名称,用户名,MAC,IP,进程列表
5.IOC
域名:
cdn-93887294.img.sj.mozilla.work
collect-sync.jsdelivrs.com
app.omitrezor.com
MD5:
d6ca8e84e08a5bc3976edb84db09c33d
6. 溯源追踪
(1) 木马样本的通信地址2020年曾经被FIN8组织多次使用
经分析恶意样本通信域名cdn-93887294.img.sj.mozilla.work,发现其中的 mozilla.work 并非mozilla官方使用的域名,在2020年8月通过域名服务商NameCheap注册。
Domain Name: MOZILLA.WORK
Registry Domain ID: D_01C33DB7_83EF59A6AF9648C680151F591F3C00EF_00000173B05DC62F-WORK
Registrar WHOIS Server: whois.namecheap.com
Registrar URL: https://www.namecheap.com/
Updated Date: 2020-08-12T07:29:02Z
Creation Date: 2020-08-02T18:10:02Z
Registry Expiry Date: 2021-08-02T18:10:02Z
Registrar: NameCheap, Inc.
Registrar IANA ID: 1068
经过分析发现,该域名cdn-93887294.img.sj.mozilla.work是一个伪造的cdn域名,结合威胁情报跟踪追溯到 FIN8 APT组织,历史上至少两个以上的FIN8 APT 木马曾与该地址存在过通信。
上图中已定性的FIN8木马 IOC信息如下:
SHA-256:
cb4b6c107d58ddbb0d3f1725c3097b416c20e700bbfa9dfe2f8b97ad5ca9eeed
3b52ee03e6b7e04148a8e76598519fde54e01508b8f5651394008ef76805809a
(2) 窃密木马样本 和 FIN8 历史某样本高度相似
通过mozilla.work 域名和发现时间进行关联,找到以上FIN8历史样本,发现hxxp://cdn-93887294.img.sj.mozilla.work/qs/urlsc.exe 的代码结构与本次供应链攻击的样本 hxxp://cdn-93887294.img.sj.mozilla.work/collect.exe 极其相似。
由此推测本次供应链攻击事件是FIN8组织发起,用于利用新型供应链攻击窃取用户敏感信息。
7. 总结
近几年脚本语言社区因管控薄弱、攻击成本低成为软件供应链攻击的重灾区,到目前为止,腾讯洋葱反入侵系统已经发现多起严重的软件源投毒事件,并向业界提前发出通知。
4、腾讯洋葱反入侵系统检测到多例恶意Python库供应链投毒
同时,我们秉承共建安全生态的原则,主动向外界分享了洋葱反入侵系统针对软件源投毒场景的检测方案。
源头之战,不断升级的攻防对抗技术 —— 软件供应链攻击防御探索
兵无常势,水无常形,黑客投毒的手法越来越隐蔽,攻防对抗的难度也随之不断升级,唯有一直紧跟技术发展趋势,持续不断进阶,才能在安全攻防对抗中取得先机。
关于洋葱反EDR
“洋葱”端点检测与响应系统(EDR,又名反入侵系统)是腾讯公司安全平台部自研的服务器安全系统,担负着数百万服务器、虚拟机、镜像的安全基线管理、入侵检测和应急响应。
附录:
https://attack.mitre.org/groups/G0061/
https://valhalla.nextron-systems.com/info/rule/APT_FIN8_NET_Stager_Jun19_1
https://packagist.org/packages/guzzlehttp/guzzle
https://github.com/guzzle/guzzle/
来源:freebuf.com 2021-04-30 17:58:28 by: 腾讯安全平台部
请登录后发表评论
注册