Начальный доступ — обычная проблема при агрессивных операциях с macOS. Любой, кто прошел через этот процесс, знает, как легко сделать ошибки, которые блокируют выполнение. Кроме того, нелегко проанализировать эти методы без изучения прошлых образцов / отчетов о вредоносных программах с точки зрения защиты. Чтобы устранить эти болевые точки, Лео Питт разработал Mystikal. Инструмент для решения проблем начального доступа в macOS.
Эта статья служит руководством по использованию Mystikal, обзором различных полезных нагрузок начального входа и обсуждает артефакты, оставленные этими методами начального входа в систему для обнаружения.
Mystikal
Mystikal — это генератор полезной нагрузки macOS, интегрированный с Mythic. Mystikal использует скрипты Mythic для входа в систему и генерирует необходимую полезную нагрузку для выбранного метода начального доступа. Mystikal создает полезную нагрузку Apfell или Leviathan в зависимости от выбранного первоначального метода доступа.
В оставшейся части этой статьи мы рассмотрим несколько примеров использования, а также связанные с ними обнаружения.
Пакеты установщика с функциями JavaScript
Background
Обычной полезной нагрузкой, используемой для начального доступа, является пакет установщика. Эти пакеты представляют собой архивы расширяемого ARchiver (XAR), которые соответствуют определенной структуре папок и имеют расширение файла .pkg.
Простое сравнение с Windows — это установщики Windows, которые обычно имеют расширение файла .msi.
Как и в случае с установщиками Windows, выполнение пакетов установщика обычно приводит к тому, что конечному пользователю предоставляется мастер установки для инсталяции.
Пример установочного пакета (.pkg)
Для агрессивного использования типичное выполнение пакета установщика зависит от сценариев до и после установки, которые представляют собой простые сценарии
bash
, которые выполняются в процессе установки. Альтернативный метод зависит от злоупотребления
JavaScript в распространяемых файлах расширяемого языка
разметки (XML) с использованием
InstallerJS.
InstallerJSот Apple — это интерфейс прикладного программирования (API), который используется в XML-файлах распространения для выполнения проверок установки.
В API InstallerJS есть тег system.run
, который может выполнять системные команды. Вредоносная программа Silver Sparrow недавно использовала этот метод. Злоупотребляя XML-файлом распространения, злоумышленники могут выполнять те же задачи, которые обычно выполняются в сценариях до и после установки. Преимущество этого метода в том, что он немного усложняет просмотр действий, выполняемых установочным пакетом. Кроме того, из-за времени вызова XML-файла распространения пакет установщика не должен завершать процесс установки для выполнения.
Применение
Для создания полезной нагрузки Mystikal вы сначала должны обновить файл MythicSettings.py,
находящийся в Settings / MythicSettings.py,
в соответствии с вашим сервером Mythic. Затем, чтобы создать эту полезную нагрузку, вы выбираете вариант 1 для пакетов установщика.
Главное меню для Mystikal
Примечание: эта статья не охватывает все методы, показанные выше. Для получения дополнительной информации о профилях мобильной конфигурации, в которых используются полезные нагрузки
Leviathan, я настоятельно рекомендую просмотреть блог
Xorrior. Для освещения вредоносных образов дисков я рекомендую
блог Патрика Уордла.
Затем в подменю выберите вариант 4 для пакета установщика с функциями JavaScript.
Выбран вариант 4 для установочного пакета с XML-кодом распространения
Наконец, выберите в подменю вариант 1 для выполнения, встроенного в XML-файл распространения.
Выбран вариант 1 для размещения выполнения в XML-файле распространения
Mystikal выполнит процесс сборки, сначала создав полезные данные Apfell. Эта полезная нагрузка Apfell создается на основе информации в файле Settings / MythicSettings.py
(информация о хосте обратного вызова) и файле Modules / Installer_JS.py
(выбранные команды полезной нагрузки). Затем Mystikal изменяет XML-файл распространения шаблона и по умолчанию сохраняет пакет установщика как JSPackage.pkg.
Выходное сообщение для опции полезной нагрузки
Исполнение
В зависимости от метода, используемого для передачи полезной нагрузки на целевой компьютер (например, загрузка браузера, вложение электронной почты и т. д.), Вы, вероятно, будете подчиняться контролеру. Чтобы подробно ознакомиться с Gatekeeper, я настоятельно рекомендую
блог Говарда Окли по этой теме. Вкратце,
Gatekeeper — это механизм
Apple, предотвращающий запуск ненадежного кода на устройствах MacOS. Из-за этого цель, вероятно, увидит следующее приглашение при двойном щелчке по приложению.
Двойной щелчок по установочному пакету, загруженному через Chrome
Это приглашение не дает нам возможности выполнить приложение. Законные приложения также иногда сталкиваются с этим. Как и в случае с законными приложениями, злоумышленник может исправить это под предлогом, указав, как открыть приложение. Например, простой щелчок правой кнопкой мыши (или щелчок с нажатой клавишей Control, если у вас Apple Magic Mouse) и открытие приложения приводит к следующему запросу, который дает нам возможность запустить пакет.
Щелкните правой кнопкой мыши пакет установщика, загруженный через Chrome
Примечание: злоумышленник может пойти по пути подписания и нотариального заверения пакета, чтобы свести к минимуму эти запросы, но это сопряжено с риском сжигания
сертификатов вашей программы разработчика Apple. Получение этих сертификатов требует длительного процесса авторизации, который
стоит 99 долларов в год.
Прежде чем обсуждать артефакты, стоит отметить дополнительную подсказку, генерируемую Big Sur. Похоже, что в приложении выполняются проверки, чтобы определить, прикреплены ли к пакету установщика действия перед установкой.
Следующее сообщение отображается, когда либо сценарии установки, либо XML-файлы распространения прикрепляются к пакету установщика, чтобы дать конечным пользователям еще одну паузу перед выполнением. Это сообщение не появилось на моей виртуальной машине.
Сообщение, указывающее на действия перед установкой в пакете
Обнаружение
Crescendo, средство просмотра событий в реальном времени для macOS, использует
Apple Endpoint Security Framework (ESF) и помогает фиксировать события процессов и файлов. Используя
Crescendo, я мог легко отслеживать выполнение команды
bash
в файле
distribution.xml
. В процессе
установки
был порожден дочерний элемент
bash
, что привело к появлению других процессов, участвующих в полезной нагрузке. В данном случае это
curl & osascript.
Выполнение Bash, извлечение и запуск полезной нагрузки Apfell
Как видите,
PID 4133 bash
имеет родительский идентификатор
installer
PID 4131
.
TrueTreeотображает дерево процессов для запущенных в данный момент процессов. Используя
TrueTree, я мог отслеживать запущенный процесс
osascript
, у которого был родительский процесс
installer
application.
Выдержка TrueTree, показывающая выполняющуюся полезную нагрузку Apfell
Агент Apfell в Mythic Запуск в osascript PID 4135
Популярным инструментом для проверки пакетов установщика перед запуском является
SuspiciousPackage. Хотя он отлично подходит для идентификации сценариев установки, у него возникают трудности с распространением файлов XML. Однако, поскольку эти файлы являются
архивами XAR, вы можете использовать
xar -xvf JSPackage.pkg
для расширения файла. Вы также можете использовать
pkgutil --expand JSPackage.pkg save / to / path
для просмотра содержимого пакета. Журнал установки находится в
/var/log/install.log
, но записи в нем не содержат информации о XML-файле распространения.
Microsoft Office Macros
Background
Выполнение через документы
Microsoft Office (Word, PowerPoint, Excel) — это устоявшийся и популярный метод выполнения. Ребята из
F-Secure недавно провели отличный веб-семинар, посвященный выполнению и обнаружению традиционных форм макросов в macOS. У Патрика Уордла есть отличный
блог, в котором также рассказывается об этом методе. Интересный пункт в блоге касался исследования
Стэна Хегта, в котором использовался старый формат файла
SYmbolic LinK (
.slk
) и старый язык программирования макросов
Excel 4.0 Macro (XLM), предшественник Visual Basic для приложений (VBA). Используя этот метод, мы можем получить то же самое выполнение, что и традиционный метод, но использовать расширения файлов .slk или
.csv.
Применение
Чтобы создать эту полезную нагрузку, вы выбираете вариант 5.
Выбран вариант 5 для макросов XLM в файлах SYLK
Содержимое файла macro.slk
представляет собой простой макрос XLM, основанный на примере Патрика, который вызывает curl
и osascript
для извлечения и выполнения полезной нагрузки Apfell с нашего сервера Mythic.
Содержимое файла macro.slk
Исполнение
Как и ожидалось, двойной щелчок по файлу приводит к предупреждению:
Запрос при двойном щелчке по файлу Excel
Как указывалось ранее, вы также можете использовать расширение файла .csv,
но это приведет к появлению дополнительного запроса, показанного ниже.
Обнаружение
Используя TrueTree, мы можем отследить, что запущенный процесс osascript PID 12982
порожден PID 12958
процесса Microsoft Excel
, что является ненормальным поведением.
Выдержка TrueTree, показывающая выполняющуюся полезную нагрузку Apfell
Агент Apfell в Mythic Запуск в osascript PID 12982
Используя Crescendo, мы можем захватить содержимое выполнения bash
, которое было запущено Microsoft Excel PID 12958.
Выполнение Bash, извлечение и запуск полезной нагрузки Apfell
Укрепленные PDFs
Background
Изучая варианты полезной нагрузки для начального доступа, я наткнулся на
блогtokyoneonо создании поддельного
трояна PDF с помощью
AppleScript. Этот метод создает приложение, которое выглядит как типичный файл в формате
Portable Document Format (PDF), загружая и открывая законный PDF, и выполняет наши полезные данные Apfell, чтобы скрыть наши истинные намерения от конечного пользователя.
Применение
Чтобы создать эту полезную нагрузку, выберите опцию 7.
Выбранный вариант 7 для вооруженных PDF-файлов
Mystikal создает приложение с ..app
в имени файла, чтобы просто скрыть фактическое расширение файла.
Выходное сообщение для опции полезной нагрузки
Исполнение
Опять же, в зависимости от метода, используемого для доставки полезной нагрузки к цели, вы, вероятно, будете подчиняться к Gatekeeper. Целевой объект, скорее всего, увидит следующее приглашение при двойном щелчке по поддельному приложению PDF.
Двойной щелчок по поддельному PDF-файлу, загруженному через Chrome
Опять же, злоумышленник может предоставить некоторые инструкции, чтобы заставить цель щелкнуть правой кнопкой мыши и, возможно, открыть файл. В случае успеха им будет представлена следующая подсказка с опцией открытия.
Щелкните правой кнопкой мыши пакет установщика, загруженный через Chrome
Обнаружение
Используя Crescendo, я проследил выполнение команды в поддельном PDF-файле (приложение, изображающее PDF-файл). applet
процесса приложения порождал дочерний элемент bash
, в результате чего выполнялись другие вовлеченные процессы. В данном случае это были curl & osascript.
Выполнение поддельного PDF-приложения
Выполнение Bash извлекает поддельный PDF-файл, открывает PDF-файл, извлекает и запускает полезную нагрузку Apfell
Вышеупомянутая команда отключена; Ниже приведен простой файл AppleScript, который Mystikal создает и компилирует в поддельное приложение PDF.
Содержимое AppleScript, который компилируется в приложение
Этот фрагмент показывает, что приложение вытягивает (curl
) и открывает (Preview.app
) фактический PDF-файл, который мы хотим открыть целевой. Затем он извлекает полезную нагрузку Apfell (curl
) и выполняет ее в фоновом режиме (osascript
).
Используя TrueTree, я мог отслеживать запущенный процесс osascript
, у которого был родительский элемент приложения Fake PDF (Doomfist.pdf..app
).
Выдержка TrueTree, показывающая выполняющуюся полезную нагрузку Apfell
Агент Apfell в Mythic Запуск в osascript PID 633
Заключение
Целью Этой статьи было познакомить с Mystikal и выделить некоторые менее известные методы начального доступа в macOS и артефакты, которые они создают. Проект все еще находится на начальной стадии и в активной разработке. Я надеюсь, что эта статья проливает свет на методы начального доступа для macOS и дает краткое введение в артефакты, которые они создают, чтобы помочь усилиям по обнаружению.