Safari扩展

前言

本系列文章分两部分,介绍macOS浏览器扩展背后的技术,以及恶意插件如何窃取密码、银行细节和其他敏感用户数据。

浏览器扩展是用户能够对安全系统进行最容易的第三方修改之一,但也可能是最危险的修改之一。许多用户把扩展看成是小小的“applet”,它们在上网时提供一些简单但有用的额外功能——阻止广告内容、允许标记、填写表单字段等等——而没有意识到这些扩展被赋予了多么巨大的力量。

在这两篇文章的第一篇中,我们将研究Safari浏览器扩展到包括macOS 10.13的安全含义,并研究广告软件活动中使用的特定浏览器扩展的情况。在第二部分中,我们将介绍如何在macOS 10.14Mojave中更改Safari扩展的安全性,以解决其中的一些问题。

安全漏洞

虽然这里的重点自然会放在提高对坏行为者如何通过浏览器扩展利用用户的意识上,但是让我们首先指出即使使用来自声誉良好且意图良好的开发人员的扩展,也会涉及的安全隐患。

DuckDuckGo今年早些时候主动向用户提供浏览器扩展以阻止广告和其他跟踪内容,这是一个很好的起点。从可信的开发人员那里这是个好主意,但是扩展有一个致命的问题:安装它的用户授予的扩展特权远远超出了它的需要,而这本身就是一个安全问题:

该扩展声称在用户数据“搜索和浏览网页”时保护用户数据,这似乎受到了一些破坏,因为诸如密码之类的敏感数据可能暴露给扩展本身。

不幸的是,这种特权被授予不需要它们的扩展并不罕见。正如Apple的开发者文档所邀请的那样,扩展可以做一些事情,比如将产品评级和评论注入网站,将广告注入网页,下载和注入脚本以及修改网页内容。它们可以在没有用户明确许可的情况下发送通知,并且可以在后台不可见地运行。

这个能力列表听起来像是恶意软件开发人员的梦寐以求的利用工具,尤其如此,因为在Safari扩展中存在几个安全漏洞,这些漏洞可能是恶意开发人员故意利用的,或者是不经意间被恶意开发人员打开的。

扩展不需要包括它们直接在自己的包中使用的脚本;它们可以通过http远程源码它们。如果开发人员不使用安全https协议,则会打开中间人攻击的可能性,从而插入恶意脚本来代替预期的脚本。

它还意味着,坏参与者可以开发恶意扩展,在安装该扩展之后,只需更改通过http(或http s)请求调用的脚本的内容,就可以改变其扩展的行为。

扩展还应该尊重私有浏览,但似乎这要由开发人员来实现。苹果文档只建议:

当处于私有浏览模式时,您的扩展不应该存储关于用户操作的任何信息。

可以通过查询选项卡对象的私有属性(例如,safari.application.activeBrowser..activeTab..)来检查特定选项卡是否处于私有浏览模式。

这是一个相当多的行为目录,足以吸引任何黑帽,难怪像Genieo和Spigot这样的“坏”扩展已经成为广告软件开发者的主要工具之一。正如我们将在下一节中看到的,扩展甚至可以防止用户在没有首先删除相关应用程序的情况下卸载它,并且为诱骗用户进一步危害他们自己的系统提供了成熟的机会。

皮包案的有趣案例

我们最近观察到一个名为“Pitchofcase”的Safari广告软件扩展,它展示了一些有趣的行为。

乍看之下,Pitchofcase就像任何其他的广告软件扩展一样:当启用Pitchofcase时,它会重定向用户在登录pitchofcase.com之前通过几个付费点击地址进行搜索。

http://searchv.oliverto.com/?b598a1d361f67b08aeee82e41686cd1a=FVNQWlVbFAAeXFNRWAFUV1dXV1gBUl9TUFBKQFwLUQFWWwAADAADXF9QUQxQVgNYVAUKU1VXWwFRDFRbB0EE&spt=ext&q=tagSearchQuery

扩展在后台隐形地运行,没有工具栏按钮或任何其他与之交互的手段。

在上面的图像中,注意权限的扩展。值得指出的是,在不提升特权的情况下获得这些权限,并且只需要用户从每个扩展都出现的同一用户警报中单击“信任”,而不管其权限如何:

假设警报包含概括结果的信息性文本,但不幸的是,通过Safari,macOS允许这种级别的特权而不需要密码验证。

当我们试图卸载它时,PtChoFox开始变得有趣起来。单击“卸载”按钮不会像预期的那样删除扩展,而是引发以下警报:

这是不寻常的,但不是闻所未闻的。一些信誉良好的应用程序以同样的方式对用户进行特定的扩展(例如,Parallels Desktop,它坚持在Safari中安装'Internet Explorer'Open)。用户可以毫无问题地禁用扩展,但是删除它需要删除父应用程序。

点击'Show in Finder'可以显示应用程序的位置,还有一个卸载程序:

此时,关注安全性的用户可能对查看Pitchofcase.app、Safari扩展和VirusTotal上的卸载程序如何收费感兴趣。应用程序是“干净”的,但卸载程序会发出警报铃声:

由于我们的主要主题是Safari扩展,因此我们不会深入研究卸载程序要做什么,除了说明对代码的检查显示它显然对安装持久性代理更感兴趣:

并过滤用户的浏览器历史:

而不是做卸载的工作。

但是,使用卸载程序作为感染代理是一个聪明的技巧,它与不能在不删除应用程序的情况下删除扩展相吻合。正如我们将看到的,扩展本身是相对无害的,并且看起来只是让用户运行卸载程序的一个诡计。

在狩猎区延伸

Safari扩展本身对VT提出了一些警告,但是这些都是无关紧要的,因为它的“干净”应用程序正在安装扩展。让我们看看扩展的内部并检查它的行为。

Safari扩展只是压缩文件,因此为了查看其中的文件,我们需要做的第一件事情是找出它在文件命令中使用了哪种压缩:

在这种情况下,它是XAR格式。知道我们现在可以重命名文件并解压缩它:

Gualal.HTML文件是我们的第一站。在Safari Extension架构中,该文件是可选的,但是当包含该文件时,它是加载一次性资源(如注入脚本使用的逻辑或数据)的地方。

在这种情况下,我们可以清楚地看到目的:

在我们下一站中,Info.plist清楚地表明,扩展也希望看到安全页面:

虽然这可能与此有关,但是关于扩展的内容,最值得注意的是缺少通常打包到这些浏览器插件中的任何常见资产。这里没有专用的JS跟踪器脚本或帮助函数,也不试图通过eval方法执行恶意代码。与大多数扩展(合法和非法的)相比,Pitchofcase不典型地简洁。

这又让我们回到为了卸载扩展而删除应用程序的需求,以及卸载器的报警功能。Pitchofcase显然是一个经过深思熟虑的技巧:安装一个稍微烦人但基本上无用的扩展,然后诱骗用户运行恶意卸载程序以便删除它。

安全卸货

对于在Safari中单击“卸载”按钮后严格遵循对话框警告文本的用户来说,这里有个好消息。确实,删除扩展的唯一方法是删除相关的应用程序,但是删除并不意味着卸载。

用户应该忽略所提供的Uninstaller.app,简单地将Pitchofcase.app和所有其他组件(包括卸载器)直接移动到垃圾箱。这样做之后,扩展也被删除。

开发人员,不同寻常地,聪明地,指望着抓住那些遵循经常重复的建议的用户,他们总是在使用开发人员的卸载程序来删除应用程序。在处理来自可信的开发人员的复杂安装时,这通常是一个好的实践。在PotfFox的情况下,这是一个狡猾的道奇企图窃取您的数据。

下一个…

在第2部分中,我们将继续探讨在10.14Mojave中macOS扩展是如何变化的,以及用户在将它们添加到Safari浏览器的最新版本时需要了解如何保持安全。

原文链接:https://www.sentinelone.com/blog/inside-safari-extensions-malware-golden-key-user-data/

本文分享自微信公众号 - 安恒网络空间安全讲武堂(cyberslab),作者:caramel

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 专题 | Python编写渗透工具学习笔记二

    目录 0x01编写一个conficker蠕虫 --使用Metasploit攻击Windows SMB服务 --编写Python脚本与Metasploit交互 -...

    安恒网络空间安全讲武堂
  • Web入门之攻防世界

    最近看了一下Web类型的题目,感觉还是很有趣的~学会了查看源码,也就是F12还有使用view-source:,当时还是感觉很有成就感的,感觉自己看到了一些不一样...

    安恒网络空间安全讲武堂
  • 学习分享 | Flipped Ciphertext Bits

    0x00前言 这次蓝盾杯线上赛遇到了一题类似于NJCTF的CBC翻转攻击的题目,不过题目被改简单了,省去了最开始的Padding Oracle攻击部分,直接给出...

    安恒网络空间安全讲武堂
  • 如何细致地为用户提供业务知识服务?

    近年随着深度学习及强化学习技术的进一步深入,智能问答机器人所依赖的知识库构建与维护成本也随之减少。大数据分析和智能语音技术在客服场景深入应用,AI正在变革客服行...

    云问科技
  • 【DB笔试面试433】在Oracle 12c中,在数据泵(expdp)方面有哪些增强的新特性?

    (1)在Data Pump中引入了新的TRANSFORM的选项DISABLE_ARCHIVE_LOGGING,这对于表和索引在导入期间提供了关闭Redo日志生成...

    小麦苗DBA宝典
  • 大话UML中类之间的关系 (r4笔记第83天)

    关于uml的内容在大学的时候学习过,感觉是花拳绣腿的一些知识,想用但是限于自己的认知和经验,实在是很难运用,到了工作的时候,感觉不需要这些工作也照样能做得很出色...

    jeanron100
  • Redis 是如何实现点赞、取消点赞的?

    点赞是个频率比较高的事件,也不是特别重要的记录,使用缓存来存储还是比较合理的,另外像排行榜、热议等都可以使用缓存,先来看看点赞是如何实现的吧,详细代码可以clo...

    java思维导图
  • 印度议会选举,候选人用 DeepFake 伪造方言视频拉票

    内容概要:在近期举行的印度的德里议会选举中,一位候选人使用 DeepFake 技术,生成其他语言的宣传视频,为自己的团队拉取选票。该方式虽然取得了良好的宣传效果...

    HyperAI超神经
  • 怎么样才能正确的学习生信分析呢?—从学徒做起

    (PS : 需要排除部分根本就无心向学的,也许是没有时间,也许是畏难。总之,没有学习条件哪怕是找到我,我也无能为力哈)

    生信技能树
  • CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析

    opacity 用来设置透明度 display 定义建立布局时元素生成的显示框类型 visibility 用来设置元素是否可见。 opacity、vis...

    FEWY

扫码关注云+社区

领取腾讯云代金券