如何利用自定义URL Scheme远程突破Mac

假如利用文件下载自互联网,那么当用户履行该利用时,文件隔离机制就会弹出警告窗口:

好消息是有些Mac用户会点击Cancel按钮,但仍有些Mac用户照样会点击Allow按钮(Taha已经确认了这一点,他在演讲中提到WINDSHIFT APT组织已经成功使用了这种进击向量)

一、媒介

在近来几篇文章中,我们评论争论了macOS中存在的一些破绽或者缺陷,使得恶意代码能够履行各类恶意操作,比如绕过SIP、容许安装内核扩展、转储keychain数据以及其他操作然而,这些破绽使用技巧都必要恶意代码已经(经由过程某种要领)获取目标系统上的初始代码履行权限换句话说,这些技巧都属于本地进击范畴,平日会在进击活动的第二阶段所应用

本日我们将评论争论恶意软件不停在应用的一种远程进击技巧,这种技巧可以用来获取已打全补丁macOS系统的初始造访权限,属于第一阶段进击技巧假如与之前先容的各类第二阶段进击技巧结合起来,就可以经由过程优雅又有害的措施来进击macOS系统

留意:

虽然这种远程进击措施仍必要一些用户交互操作,然而切实着实能够搞定具有安然意识的macOS目标用户换句话说,大年夜家必要小心这种进击措施

8月30日,来自DarkMatter LLC的Taha Karim在HITB会议上做了“The Trails of WINDSHIFT APT”主题演讲,他总结道:

WINDSHIFT APT是近来发明的一个隐蔽的收集特工组织,专门进击为政府事情的职员这个进击组织拥有专门的高档渔叉式钓鱼根基举措措施,可以为钓鱼邮件以及SMS进击供给办事,在侦探阶段不间断地跟踪目标职员,也可以经由过程伪装举世及本地的办事商平台,在凭证网络阶段诈骗目标用户

WINDSHIFT APT组织之以是与其他APT组织有所不合,缘故原由在于他们会根据特工和监控目的,只关注特定的个体,并且因为他们惯用的进击手段,我们很难对其追踪溯源WINDSHIFT APT组织很少应用恶意软件进击目标,Dark Matter LLC发清楚明了该进击组织提议的几回进击活动,并且阐发了相关的macOS恶意软件着末,WINDSHIFT APT有独特的macOS感染技术,滥用macOS的原生功能自动将恶意软件送达到目标

演讲中对照有趣的一个内容便是进击者会滥用这种进击措施,成功远程感染中东某政府的Mac系统

留意:

本文的并不是简单地重述Taha的演讲内容,而是在此根基长进一步深入阐发这款恶意软件的感染机制:

1、评论争论macOS上的一些相关细节;

2、供给某些PoC代码片段;

3、评论争论这种远程进击要领的缓解步伐

二、Document Handler及URL Scheme

简而言之,WINDSHIFT APT组织滥用了自定义的URL Scheme来远程感染macOS目标只管该历程中必要用户交互,但资源很小,并且必然程度上可以受进击者“节制”此外,这种进击措施已经有成功的进击案例(进击中东确政府目标),注解必要用户交互并不是一种无法冲破的“屏蔽”

在macOS上,利用法度榜样可以“声明”自己能够支持(或者“处置惩罚”)各类文档类型以及/或者自定义的URL Scheme想象一下,某个利用可能会说“假如有用户考试测验打开foo文档类型或者bar这种URL Scheme,我可以处置惩罚这种场景”大年夜家肯定在macOS上碰着过这种场景比如,当我们双击一个.pdf文档,Preview.app就会被启动来处置惩罚该文档或者在浏览器中,我们点击了指向Mac App Store中的一个链接,App Store.app就会启动来处置惩罚这个哀求

不幸的是,Apple对Document Handler(文档处置惩罚法度榜样)以及自定义URL Scheme的实现(或者“注册”)措施抉择了进击者可以滥用这种功能

从操作系统的角度来看,只管文档处置惩罚法度榜样以及URL Scheme略有不合,但本色上是一样(是以实现措施也异常相似)

首先我们来快速看一下Document Handler,前阶段我刚钻研过这方面内容,写过一篇先容性文章

在之前的文章中,我阐发了Mac File Opener这款广告软件(adware),该软件滥用了自定义的文档处置惩罚法度榜样来实现隐蔽的持久化目标简而言之,这款恶意软件“声明”自己能够支持跨越200种类型的文件,一旦用户打开此中一种文件,恶意软件就会被操作系统自动启动来处置惩罚(理论上是显示)文档异常耐心的持久化措施

留意:假如已经有一个法度榜样注册了一种文件类型(比如.pdf、.html等),(据我所知)这种绑定关系无法被窜改

当然这里第一个问题是,Mac File Opener广告软件(或者其他利用)若何“声明”自己能够支持哪些文件(是以在用户造访此类文件时会被调用)第二个问题是,操作系统若何处置惩罚并注册这种信息?我保举大年夜家涉猎这篇文章,此中具体回答了这两个问题,然则这里我们也会简单地做一下总结

那么利用法度榜样若何奉告操作系统自己能够处置惩罚哪类文件?谜底就在于法度榜样的Info.plist文件总前面提到过,Mac File Opener支持跨越200种文件类型,我们可以导出它的Info.plist文件:

在“原始的”plist中,这个信息寄放在一个数组中(CFBundleDocumentTypes键)根据Apple的说法:

CFBundleDocumentTypes(iOS及OS X上的数组)包孕一个字典数组,将一个或多个文档类型与详细利用关联起来每个字典都为类型定义(type-definition)字典,包孕用来定义文档的详细键(key)

举个例子,.7z(7Zip)文件类型的Mac File Opener具体信息如下所示,请留意此中的CFBundleTypeExtensions这个key,对应的值为该广告软件声明的可以处置惩罚的文件扩展名:

$ cat “Mac File Opener.app/Contents/Info.plist”

“1.0” encoding=”UTF-8″?>

“-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

“1.0”>

BuildMachineOSBuild

[1] [2] [3] [4] [5]下一页

14F27

CFBundleDevelopmentRegion

en

CFBundleDocumentTypes

CFBundleTypeExtensions

7z

CFBundleTypeName

DocumentType

CFBundleTypeOSTypes

????

CFBundleTypeRole

Viewer

LSHandlerRank

Alternate

NSDocumentClass

Document

为了回答第二个问题,我们必要确定macOS若何处置惩罚这些文件的“注册”哀求在“Click File, App Opens”这篇文章中提到,这是一个自动化历程,一旦利用保存到本地磁盘上就会履行该操作简单总结下,大年夜致步骤如下:

1、利用(或者恶意软件)下载或者保存到本地文件系统中;

2、该历程会导致一个XPC消息发送到launch services daemon(lsd);

3、lsd守护进程解析该利用,将利用的“document handlers”信息提取并保存到一个数据库中

# fs_usage -w -f filesystem | grep Info.plist

open/Users/user/Desktop/Mac File Opener.app/Contents/Info.plistlsd.16457

fstat64F=4lsd.16457

readF=4B=0x18a97lsd.16457

# /usr/libexec/lsd

(lldb) po $rsi

{ path = ‘/var/folders/np/85lyz_4545d5lz8wvy04xvlm0000gn/0//com.apple.LaunchServices-134501.csstore’ }

我们可以使用lsregister(详细路径为/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/)来转储lsd的数据库当应用-dump标志调用时,lsregister可以显示指定了“document handler”的所有利用,lsd会自动注册这些“document handler”比如,我们可以看到此中包孕Mac File Opener及其注册的文档(文件类型,比如.7z等):

$ lsregister -dump

Container mount state: mounted

bundle id: 2592

Mach-O UUIDs: 88225C07-0FDC-3875-A3B4-C5328E509B9E, 20A99135-975D-3A7B-A8DD-B7DF2CE428D0

path: /Users/user/Downloads/Mac File Opener.app

name: Mac File Opener

identifier: com.pcvark.Mac-File-Opener (0x80025f61)

executable: Contents/MacOS/Mac File Opener

——————————————————–

claim id: 31508

name: DocumentType

rank: Alternate

roles: Viewer

flags: doc-type

bindings: .7z

一旦利用(或者广告软件)自动注册了document handler,那么当用户考试测验打开匹配的文档时,利用或广告软件就会被自动调用

这个历程由launch services framework认真,更详细一些,是_LSBundleCopyOrCheckNode措施(以及_LSBundleCopyOrCheckNode_block_invoke)认真匹配历程(查找与文档类型匹配的已注册的利用)然后履行已注册的利用:

上一页[1] [2] [3] [4] [5]下一页

(lldb) b ___LSBundleCopyOrCheckNode_block_invoke

(lldb) x/gx $rdx

0x700000115c48: 0x00007fd3b4a9c520

(lldb) po 0x00007fd3b4a9c520

{ flags = 0x00000020, path = ‘/Users/user/Desktop/Mac File Opener.app’ }

总结一下:

1、利用法度榜样可以“声明”能够处置惩罚的各类文档或者文件类型;

2、一旦利用落盘,操作系统就会自动注册这些“document handler”;

3、文件打开时,系统会查询“launch services”数据库,确定该履行哪个利用

以上便是“document handlers”的大年夜概内容,接下来评论争论一下自定义URL Scheme handler从操作系统的角度来看,这种URL Scheme handler平日只是适用于url的document handler

这对自定义URL Scheme handler来说意味着两点:

1、一旦(“声明”支持这些handler的)利用落盘,macOS会自动注册自定义的URL Scheme handler;

2、当自定义URL Scheme被调用时,就会触发(已自动注册的)handler利用

因为这些操作都可以被网页触发,是以我们很轻易就能猜到会呈现什么后果

之前我曾在Box 2017上评论争论过自定义URL Scheme话题(“Oversight: Exposing Spies on macos”)

然而当时并没有涉及到恶意软件或者恶意使用之类的内容

因为我还没有打仗WINDSHIFT恶意软件样本,我之前自己写了PoC示例,演示了进击者若何滥用自定义URL Scheme handler来远程感染Mac主机(该历程涉及一些用户交互操作)

我们先创建Xcode项目,应用Cocoa App模板:

利用本身的逻辑并不关键,但我们必须编辑利用的Info.plist文件,以便“声明”我们将支持一个自定义的URL Scheme在Xcode中,我们添加了一个URL types数组,指定了Scheme的名称(windshift://)以及一个URL标识符:

察看原始的plist,我们可以看到这些信息对应此中的一些key,比如CFBundleURLTypes CFBundleURLSchemes以及CFBundleURLName:

key>CFBundleURLTypeskey>

array>

dict>

key>CFBundleURLSchemeskey>

array>

string>windshiftstring>

array>

key>CFBundleURLNamekey>

string>com.foo.bar.WindShiftstring>

dict>

array>

一旦该利用编译(或下载)完毕,lsd就会解析利用的bundle数据(分外是Info.plist文件),检测是否存在自定义URL Scheme handler,假如有则进行注册留意这些操作都邑自动完成

为了确认这一点,我们可以转储“launch services”数据库(经由过程lsregister -dump敕令)此中切实着实可以看到我们的PoC利用(WindShift.app),以及我们自定义的URL Scheme(CFBundleURLSchemes: (windshift)):

——————————————————————————–

BundleClass: kLSBundleClassApplication

Container mount state: mounted

bundleid:168204

Mach-O UUIDs:E2E77A08-F458-36C1-B7BD-99F409B4DEAC

Device Familie

Counterpart ID

sequenceNum:168204

FamilyID:0

PurchaserID:0

DownloaderID:0

installType:0

appContainer:#

dataContainer: #

path:/Users/patrick/Projects/WindShift/DerivedData/WindShift/Build/Products/Debug/WindShift.app

name:WindShift

….

executable:Contents/MacOS/WindShift

….

CFBundleURLTypes =(

{

CFBundleURLName = “com.foo.bar.WindShift”;

CFBundleURLSchemes =(

windshift

);

}

上一页[1] [2] [3] [4] [5]下一页

);

}

claim id:386204

name:com.foo.bar.WindShift

rank:Default

roles:Viewer

flags:url-type

icon:

bindings:windshift:

假如我们现在应用浏览器(这里应用的是Safari),“浏览”我们的自定义URL Scheme(windshift://),我们可以确认自定义的URL Scheme已被自动注册:

假如我们点击“Allow”(这是个危险操作,后面我们会具体先容),那么利用就会被启动:

三、远程使用

假如我们“不怀美意”,可能就会看到这种技巧的使用偏向现在我们将先容若何滥用自定义URL Scheme,远程定位(并在抱负环境下感染)Mac用户的一种措施

首先,目标必须浏览我们可控的一个网站WINDSHIFT APT组织(成功应用了)钓鱼邮件这种道路

一旦目标浏览我们的恶意网站,就会触发下载操作,下载包孕恶意利用的一个归档(.zip)文件假如Mac用户正在应用Safari,那么归档文件就会自动被解压,这是由于Apple觉得自动打开“安然的”文件是一个对照明智的选择这一点异常紧张,这意味着恶意利用(而不是一个纯真的压缩zip文件)现在会存在于用户的文件系统上,这样就会自动触发自定义URL Scheme handler的注册历程,这一点切实着实应该好好感谢Apple

现在恶意利用的自定义URL Scheme已成功注册(在目标系统中),恶意网站中的代码就可以加载或者“浏览至”自定义的url地址,应用JavaScript可以轻松完成这个义务:

window.location.replace(‘windshift://’);

macOS在后台会查找处置惩罚这个自定义URL Scheme的handler,终极就会找到我们的恶意利用(刚刚下载到目标系统中)一旦查找完毕,操作系统将考试测验启动恶意利用来处置惩罚所哀求的URL!

(对Mac用户来说)幸运的是,较新版的Safari中会弹出一个警告信息:

然而引号中的字符着实可以被进击者所节制,由于这些字符便是利用的名称是以,我们很轻易就可以让弹出的警告窗口看起来对照通俗、无害以致有趣:

留意:

平日环境下利用无法应用类似.txt或者.com之类的扩展名

然而,因为利用名可以包孕unicode字符,是以我们可以使用homograph这种进击技术

这样我们就可以让恶意利用的名称变成类似Attachment.TXT之类的字符串(此中“X”着实是卡里安(Carian)字母X)

虽然最新版的Safari会在启动已注册自定义URL Scheme的利用条件示用户,但老版本的Safari(比如默认安装在EI Capitan上的Safari)就不会履行这种操作相反,这些版本的Safari并不会弹出任何警告信息,会盲目地启动(恶意)利用

抛开Safari的版本,我们还有另一个障碍要绕过:文件隔离(File Quarantine)

此外,我们还可以节制利用的名称,是以可能会让更多用户点击Allow按钮,比如,我们可以添加个emoji神色试一下?

留意:

这里大年夜家可能想知道为何Gatekeeper没有发挥感化?

在默认设置设置设备摆设摆设下,Gatekeeper只容许颠末署名的利用WINDSHIFT APT组织所应用的恶意软件都带有署名(现在大年夜多半恶意软件都邑应用这种措施),是以并没有轮到Gatekeeper上场

在本文总结之前,我绘制如下一张图,先容了这种“自定义URL Scheme handler”进击的具体流程:

四、总结

我们并不是天天都能看到针对Mac用户的APT组织,更何况这类恶意软件应用了相称新颖的感染要领然而,我们再也不能无邪地觉得Mac用户能够免受这类要挟的侵扰,WINDSHIFT APT组织已经给我们好好上了一课

上一页[1] [2] [3] [4] [5]下一页

在本文中我们评论争论了macOS的一些功能,比如document handler以及自定义URL Scheme handler,演示了这些功能若何被恶意软件主动使用幸运的是,这类进击措施(分外是在新版本的macOS上)必要一些用户交互操作然而,这两种功能已经在实际进击活动中被成功使用,是以假如大年夜家正在探求感染Mac用户的靠得住措施,可以斟酌应用这些技巧

假如你是Mac用户,并且对照重视安然,那么可以斟酌应用Google Chrome浏览器:

假如你习气应用Safari,至少必要关闭下载文件的自动解压功能,由于只有在利用被解压时才会触发(恶意)自定义URL Scheme handler的注册操作

假如想关闭这个功能,请打开Safari的首选项,在General选项卡,勾掉落Open “safe” files after downloading这个复选框:

此外,我们还可以将Gatekeeper设置成“仅容许来自Mac App Store的利用”(然后根据需求小心容许第三方利用),这一点并不会带来什么坏处

上一页[1] [2] [3] [4] [5]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包