
Инструмент для перечисления macOS, вдохновленный инструментом перечисления Seatbelt на Windows от harmjoy. Автор: Cedric Owens
SwiftBelt — это инструмент для перечисления macOS, вдохновлённый утилитой Seatbelt от @harmjoy, предназначенной для Windows. SwiftBelt не использует никаких утилит командной строки, а вместо этого использует код Swift (с применением Cocoa Framework, библиотек Foundation, OSAKit и т.д.) для выполнения системного перечисления. Этот инструмент может быть использован с атакующей стороны для сбора информации после получения доступа к хосту macOS. Я намеренно не включил функции, вызывающие всплывающие окна (например, перечисление связок ключей).
Спасибо Ramos04 за вклад в код по поиску различных инструментов Objective See, а также mattreduce за код для истории zsh и учётных данных Azure.

Убедитесь, что Swift установлен на вашем хосте macOS.
Из терминала перейдите в каталог SwiftBelt и выполните: "swift build" для создания двоичного файла. Бинарный файл будет помещён в папку .build/debug внутри каталога SwiftBelt и будет иметь имя SwiftBelt.
Скопируйте на нужный хост, снимите атрибут карантина ($ xattr -c SwiftBelt) и сделайте файл исполняемым ($ chmod +x SwiftBelt).
Запустите.
SwiftBelt Options:
-CheckFDA --> Проверить наличие полного доступа к диску (Full Disk Access) (без вызова запроса TCC пользователю, даже если Терминал не имеет никаких разрешений TCC). Это делается путём поиска TCC.db с помощью запросов Spotlight db API. Возвращает, был ли уже предоставлен FDA вашему контексту приложения или нет.
-SecurityTools --> Проверить наличие распространённых инструментов безопасности macOS (по крайней мере, тех, с которыми я знаком).
-SystemInfo --> Проверить текущий контекст выполнения, доступ к специальным возможностям (TCC Accessibility), базовую информацию о системе, время последней загрузки, время бездействия, информацию о том, заблокирован ли экран в данный момент, и переменные окружения.
-LockCheck --> Проверить, заблокирован ли экран (я добавил эту проверку отдельно, а также объединил её с SystemInfo).
-SearchCreds --> Искать учётные данные ssh/aws/azure/gcloud.
-Clipboard --> Извлечь содержимое буфера обмена.
-RunningApps --> Список всех запущенных приложений.
-ListUsers --> Список локальных учётных записей пользователей.
-LaunchAgents --> Список агентов запуска (Launch Agents), демонов запуска (Launch Daemons) и файлов конфигурационных профилей.
-BrowserHistory --> Попытка извлечь историю Safari, Firefox, Chrome и карантина (обратите внимание: если Chrome или Firefox активно запущены, инструмент не сможет прочитать заблокированную базу данных для извлечения информации). Однако заблокированную БД можно скопировать в другое место и прочитать оттуда.
-SlackExtract --> Проверить наличие Slack и, если он есть, прочитать информацию о cookie, загрузках и рабочих пространствах (использует исследование, проведённое Cody Thomas).
-ShellHistory --> Прочитать содержимое истории оболочки (Bash или Zsh).
-Bookmarks --> Прочитать сохранённые закладки Chrome.
-ChromeUsernames --> Читать из ~/Library/Application Support/Google/Chrome/Default/Login Data, который хранит URL вместе с именами пользователей для каждого.
-UniversalAccessAuth --> Читает из /Library/Preferences/com.apple.universalaccessAuthWarning.plist для отображения списка приложений, на которые пользователь получил запросы авторизации, вместе с 1 (принять) или 2 (отклонить).
-StickieNotes --> Читает содержимое любых открытых файлов Stickie Note в системе.
-TextEditCheck --> Проверяет наличие несохранённых документов TextEdit и пытается прочитать содержимое файлов.
-JupyterCheck --> Проверяет наличие базы данных истории ipython (которую использует Jupyter notebook) и, если найдена, читает её содержимое (включая выполненные команды Python).
Для запуска всех опций:
./SwiftBelt
Для указания определённых опций:
./SwiftBelt [option1] [option2] [option3]...
Пример:
./SwiftBelt -SystemInfo -Clipboard -SecurityTools ...
Хотя этот инструмент не использует никаких утилит командной строки (которые легко обнаружить), он считывает несколько файлов в системе, что может быть обнаружено любыми инструментами, использующими Endpoint Security Framework (в частности, эти чтения файлов фиксируются событиями ES_EVENT_TYPE_NOTIFY_OPEN в ESF).