SwiftBelt 是一个 macOS 枚举工具,灵感来源于 @harmjoy 基于 Windows 的 Seatbelt 枚举工具。SwiftBelt 不使用任何命令行实用程序,而是使用 Swift 代码(利用 Cocoa 框架、Foundation 库、OSKit 库等)执行系统枚举。这可以在攻击侧用于在获取 macOS 主机访问权限后执行枚举。我特意没有包含任何会导致弹出窗口的功能(例如:钥匙串枚举)。
感谢 Ramos04 贡献代码以查找各种 Objective See 工具,以及 mattreduce 贡献的 zshell 历史和 azure 凭据代码。

确保你的 macOS 主机上已安装 Swift
在终端中进入 SwiftBelt 目录并运行:"swift build" 生成二进制文件。二进制文件将放置在 SwiftBelt 文件夹内的 .build/debug 文件夹中,名为 SwiftBelt
复制到目标主机并清除隔离属性($ xattr -c SwiftBelt),然后设置为可执行($ chmod +x SwiftBelt)
执行
SwiftBelt 选项:
-CheckFDA --> 检查完全磁盘访问权限(不会向用户生成 TCC 提示,即使终端未被授予任何 TCC 权限)。通过使用 Spotlight 数据库 API 查询搜索 TCC.db 实现。返回你的应用上下文是否已被授予 FDA 权限。
-SecurityTools --> 检查常见 macOS 安全工具是否存在(至少是我熟悉的那些)
-SystemInfo --> 检查当前执行上下文、TCC 辅助功能访问、基本系统信息、上次启动时间、空闲时间、屏幕是否锁定以及环境变量信息
-LockCheck --> 检查屏幕当前是否锁定(我将其作为单独检查添加,同时也包含在 SystemInfo 中)
-SearchCreds --> 搜索 ssh/aws/azure/gcloud 凭据
-Clipboard --> 转储剪贴板内容
-RunningApps --> 列出所有正在运行的应用程序
-ListUsers --> 列出本地用户账户
-LaunchAgents --> 列出启动代理、启动守护进程和配置文件
-BrowserHistory --> 尝试提取 Safari、Firefox、Chrome 和隔离历史记录(注意:如果 Chrome 或 Firefox 正在运行,工具将无法读取被锁定的数据库以提取信息。但是,可以将锁定的数据库复制到其他地方并读取。)
-SlackExtract --> 检查 Slack 是否存在,如果存在则读取 cookie、下载和工作区信息(利用 Cody Thomas 的研究成果)
-ShellHistory --> 读取 shell(Bash 或 Zsh)历史记录内容
-Bookmarks --> 读取 Chrome 保存的书签
-ChromeUsernames --> 从 ~/Library/Application Support/Google/Chrome/Default/Login Data 读取,该文件存储 URL 以及每个 URL 对应的用户名
-UniversalAccessAuth --> 从 /Library/Preferences/com.apple.universalaccessAuthWarning.plist 读取,显示用户已收到授权提示的应用程序列表,其中 1 表示接受,2 表示拒绝
-StickieNotes --> 读取系统上任何打开的便签文件的内容
-TextEditCheck --> 检查未保存的 TextEdit 文档并尝试读取文件内容
-JupyterCheck --> 检查 ipython 历史数据库(Jupyter 笔记本使用)是否存在,如果找到则读取内容(包括执行的 Python 命令)
要运行所有选项:
./SwiftBelt
要指定某些选项:
./SwiftBelt [选项1] [选项2] [选项3]...
示例:
./SwiftBelt -SystemInfo -Clipboard -SecurityTools ...
虽然此工具不使用任何命令行实用程序(这些很容易被检测到),但此工具确实会读取系统上的多个文件,这些读取操作可以通过任何利用端点安全框架的工具检测到(在 ESF 中,这些文件读取操作尤其会被 ES_EVENT_TYPE_NOTIFY_OPEN 事件捕获)。