Решение проблем начального доступа в macOS

Решение проблем начального доступа в macOS

Начальный доступ — обычная проблема при агрессивных операциях с macOS. Любой, кто прошел через этот процесс, знает, как легко сделать ошибки, которые блокируют выполнение. Кроме того, нелегко проанализировать эти методы без изучения прошлых образцов / отчетов о вредоносных программах с точки зрения защиты. Чтобы устранить эти болевые точки, Лео Питт разработал Mystikal. Инструмент для решения проблем начального доступа в macOS.

Эта статья служит руководством по использованию Mystikal, обзором различных полезных нагрузок начального входа и обсуждает артефакты, оставленные этими методами начального входа в систему для обнаружения.

Mystikal

Mystikal — это генератор полезной нагрузки macOS, интегрированный с Mythic. Mystikal использует скрипты Mythic для входа в систему и генерирует необходимую полезную нагрузку для выбранного метода начального доступа. Mystikal создает полезную нагрузку Apfell или Leviathan в зависимости от выбранного первоначального метода доступа.

В оставшейся части этой статьи мы рассмотрим несколько примеров использования, а также связанные с ними обнаружения.
 

Пакеты установщика с функциями JavaScript

Обычной полезной нагрузкой, используемой для начального доступа, является пакет установщика. Эти пакеты представляют собой архивы расширяемого ARchiver (XAR), которые соответствуют определенной структуре папок и имеют расширение файла .pkg. Простое сравнение с Windows — это установщики Windows, которые обычно имеют расширение файла .msi. Как и в случае с установщиками Windows, выполнение пакетов установщика обычно приводит к тому, что конечному пользователю предоставляется мастер установки для инсталяции.

Пример установочного пакета (.pkg)
 
Для агрессивного использования типичное выполнение пакета установщика зависит от сценариев до и после установки, которые представляют собой простые сценарии bash, которые выполняются в процессе установки. Альтернативный метод зависит от злоупотребления JavaScript в распространяемых файлах расширяемого языка разметки (XML) с использованием InstallerJSInstallerJSот Apple — это интерфейс прикладного программирования (API), который используется в XML-файлах распространения для выполнения проверок установки.
 
В API InstallerJS есть тег system.run, который может выполнять системные команды. Вредоносная программа Silver Sparrow недавно использовала этот метод. Злоупотребляя XML-файлом распространения, злоумышленники могут выполнять те же задачи, которые обычно выполняются в сценариях до и после установки. Преимущество этого метода в том, что он немного усложняет просмотр действий, выполняемых установочным пакетом. Кроме того, из-за времени вызова XML-файла распространения пакет установщика не должен завершать процесс установки для выполнения.
 
 

Применение

Для создания полезной нагрузки Mystikal вы сначала должны обновить файл MythicSettings.py, находящийся в Settings / MythicSettings.py, в соответствии с вашим сервером Mythic. Затем, чтобы создать эту полезную нагрузку, вы выбираете вариант 1 для пакетов установщика.
 
 
Решение проблем начального доступа в macOS
 
Главное меню для Mystikal
 
Примечание: эта статья не охватывает все методы, показанные выше. Для получения дополнительной информации о профилях мобильной конфигурации, в которых используются полезные нагрузки Leviathan, я настоятельно рекомендую просмотреть блог Xorrior. Для освещения вредоносных образов дисков я рекомендую блог Патрика Уордла.
 
Затем в подменю выберите вариант 4 для пакета установщика с функциями JavaScript.
 
 
Решение проблем начального доступа в macOS
 
 
Выбран вариант 4 для установочного пакета с XML-кодом распространения
 
Наконец, выберите в подменю вариант 1 для выполнения, встроенного в XML-файл распространения.
 
Решение проблем начального доступа в macOS
 
 
Выбран вариант 1 для размещения выполнения в XML-файле распространения
 
 
Mystikal выполнит процесс сборки, сначала создав полезные данные Apfell. Эта полезная нагрузка Apfell создается на основе информации в файле Settings / MythicSettings.py (информация о хосте обратного вызова) и файле Modules / Installer_JS.py (выбранные команды полезной нагрузки). Затем Mystikal изменяет XML-файл распространения шаблона и по умолчанию сохраняет пакет установщика как JSPackage.pkg.
 
 
Решение проблем начального доступа в macOS
 
 
Выходное сообщение для опции полезной нагрузки
 

Исполнение

В зависимости от метода, используемого для передачи полезной нагрузки на целевой компьютер (например, загрузка браузера, вложение электронной почты и т. д.), Вы, вероятно, будете подчиняться контролеру. Чтобы подробно ознакомиться с Gatekeeper, я настоятельно рекомендую блог Говарда Окли по этой теме. Вкратце, Gatekeeper — это механизм Apple, предотвращающий запуск ненадежного кода на устройствах MacOS. Из-за этого цель, вероятно, увидит следующее приглашение при двойном щелчке по приложению.
 
 
Решение проблем начального доступа в macOS
 
Двойной щелчок по установочному пакету, загруженному через Chrome
 
 
Это приглашение не дает нам возможности выполнить приложение. Законные приложения также иногда сталкиваются с этим. Как и в случае с законными приложениями, злоумышленник может исправить это под предлогом, указав, как открыть приложение. Например, простой щелчок правой кнопкой мыши (или щелчок с нажатой клавишей Control, если у вас Apple Magic Mouse) и открытие приложения приводит к следующему запросу, который дает нам возможность запустить пакет.
 
 
Решение проблем начального доступа в macOS
 
 
Щелкните правой кнопкой мыши пакет установщика, загруженный через Chrome
 
Примечание: злоумышленник может пойти по пути подписания и нотариального заверения пакета, чтобы свести к минимуму эти запросы, но это сопряжено с риском сжигания сертификатов вашей программы разработчика Apple. Получение этих сертификатов требует длительного процесса авторизации, который стоит 99 долларов в год.
 
 
Прежде чем обсуждать артефакты, стоит отметить дополнительную подсказку, генерируемую Big Sur. Похоже, что в приложении выполняются проверки, чтобы определить, прикреплены ли к пакету установщика действия перед установкой.
 
 
Следующее сообщение отображается, когда либо сценарии установки, либо XML-файлы распространения прикрепляются к пакету установщика, чтобы дать конечным пользователям еще одну паузу перед выполнением. Это сообщение не появилось на моей виртуальной машине.
 
 
Решение проблем начального доступа в macOS
 
 
Сообщение, указывающее на действия перед установкой в ​​пакете
 

Обнаружение

Crescendo, средство просмотра событий в реальном времени для macOS, использует Apple Endpoint Security Framework (ESF) и помогает фиксировать события процессов и файлов. Используя Crescendo, я мог легко отслеживать выполнение команды bashв файле distribution.xml. В процессе установкибыл порожден дочерний элемент bash, что привело к появлению других процессов, участвующих в полезной нагрузке. В данном случае это curl & osascript.
 
 
Решение проблем начального доступа в macOS
 
 
Выполнение Bash, извлечение и запуск полезной нагрузки Apfell
 
 
Как видите, PID 4133 bash имеет родительский идентификатор installerPID 4131. TrueTreeотображает дерево процессов для запущенных в данный момент процессов. Используя TrueTree, я мог отслеживать запущенный процесс osascript, у которого был родительский процесс installer application.
 
 
 
 
Выдержка TrueTree, показывающая выполняющуюся полезную нагрузку Apfell
 
 
Решение проблем начального доступа в macOS
 
 
Агент 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

Выполнение через документы Microsoft Office (Word, PowerPoint, Excel) — это устоявшийся и популярный метод выполнения. Ребята из F-Secure недавно провели отличный веб-семинар, посвященный выполнению и обнаружению традиционных форм макросов в macOS. У Патрика Уордла есть отличный блог, в котором также рассказывается об этом методе. Интересный пункт в блоге касался исследования Стэна Хегта, в котором использовался старый формат файла SYmbolic LinK (.slk) и старый язык программирования макросов Excel 4.0 Macro (XLM), предшественник Visual Basic для приложений (VBA). Используя этот метод, мы можем получить то же самое выполнение, что и традиционный метод, но использовать расширения файлов .slk или .csv.
 
 

Применение

Чтобы создать эту полезную нагрузку, вы выбираете вариант 5.

Решение проблем начального доступа в macOS

Выбран вариант 5 для макросов XLM в файлах SYLK
 
Содержимое файла macro.slk представляет собой простой макрос XLM, основанный на примере Патрика, который вызывает curlи osascriptдля извлечения и выполнения полезной нагрузки Apfell с нашего сервера Mythic.
 
 
Решение проблем начального доступа в macOS
 
 
Содержимое файла macro.slk
 
 

Исполнение

Как и ожидалось, двойной щелчок по файлу приводит к предупреждению:
 
 
 
Решение проблем начального доступа в macOS
 
 
Запрос при двойном щелчке по файлу Excel
 
Как указывалось ранее, вы также можете использовать расширение файла .csv, но это приведет к появлению дополнительного запроса, показанного ниже.
 
 
Решение проблем начального доступа в macOS
 
 

Обнаружение

Используя TrueTree, мы можем отследить, что запущенный процесс osascript PID 12982 порожден PID 12958 процесса Microsoft Excel, что является ненормальным поведением.
 
 
 
 
Выдержка TrueTree, показывающая выполняющуюся полезную нагрузку Apfell
 
 
 
 
Агент Apfell в Mythic Запуск в osascript PID 12982
 
 
Используя Crescendo, мы можем захватить содержимое выполнения bash, которое было запущено Microsoft Excel PID 12958.
 
 
 
 
 
Выполнение Bash, извлечение и запуск полезной нагрузки Apfell
 
 

Укрепленные PDFs

Изучая варианты полезной нагрузки для начального доступа, я наткнулся на блог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 и дает краткое введение в артефакты, которые они создают, чтобы помочь усилиям по обнаружению.
 
 
 
 
 
 
 
Click to rate this post!
[Total: 1 Average: 5]

Leave a reply:

Your email address will not be published.