FreeBuf|Alerts在macOS上实现持久化,如何利用Calendar( 二 )
首先 , 我们需要配置Mythic , 然后获取ApfellPayload 。 Mythic提供了比较详细的配置文档 , 具体请参考这篇【文档】 。 接下来 , 我们需要使用jsimport命令将功能导入到Apfell中:
文章图片
此时 , 我们的脚本代码已经嵌入到了ApfellPayload中了 。 现在 , 我们需要枚举用户的日历 , 这里可以使用list_calendars函数来实现 , 不过这个操作需要用户授权:
文章图片
这里我们选择Automator日历 , 记录下对应的UID 。 接下来 , 我们使用JXA中的persist_calalert函数来创建新的事件 。 该函数调用方式如下所示:
persist_calalert("MyEvent",//Title"/Users/rookuu/Library/Apfell.app",//TargetApp60,//Delayinseconds"daily",//Frequencyofrecurrence1,//Intervalofrecurrence3,//Numberofevents"711CE045-7778-4633-A6FA-27E18ADD0C17"//UIDofthecalendar)接下来 , 进程将会创建新的事件 , 然后将其插入到日历中 。 Delayinseconds参数表示第一个事件被触发的时间 , 后面的参数分别代表持久化操作触发的频率、间隔以及事件数量 。 在我们的演示样例中 , 我们将连续三天每天创建一个新的事件 , 事件触发时便会执行我们的恶意软件:
文章图片
在Apfell中开始攻击后 , 我们可以在日历中看到操作结果 。 首次事件将在2020年10月9日18:53触发 , 执行指定的应用程序 。 在这个演示样例中 , 我们将执行ApfellPayload , 并且在指定的时间段内拿到Shell , 实现持久化感染 。
macOS沙箱至此 , 我们并没有考虑到macOS系统上的沙箱机制 , 因此我们还要想办法在Calendar沙箱外执行代码 。
文章图片
但是经过分析之后 , 我们发现我们并不需要关心沙箱逃逸的问题 , 因为我们一开始就没有在沙箱里面 。 虽然Calendar是一个沙箱化进程 , 但通过警报方式执行的应用并没有被沙箱化处理 。 如上图所示 , 我们执行的应用CalendarAlarmSandboxTest并没有在沙箱中 。
参考资料https://research.nccgroup.com/2020/05/05/exploring-macos-calendar-alerts-part-1-attempting-to-execute-code/))
https://github.com/FSecureLABS/CalendarPersist?
文章图片
推荐阅读
- 苹果改变立场 称macOS实用程序Amphetamine可继续留在Mac应用商店中
- 苹果发布macOS新版:M1性能、兼容性提升 可共用iOS应用
- 如何在macOS中一次重命名多个文件
- macOS Big Sur 11.1可在M1 Mac上实现iPhone和iPad应用的全屏
- macOS Big Sur 11.1发布 现已支持AirPods Max与隐私标签
- 苹果正在憋大招:iOS 应用已经兼容 macOS 系统
- 在我的安卓手机里,安装Windows和macOS系统
- Apple Music在iOS 14.3和macOS 11.1中添加了动画专辑封面
- 原来MacOS这样实现“显示桌面”功能,比Windows强大
- 威锋网|Big Sur 11.0.1修订版:更新内容未知,苹果发布macOS