Содержание:
Большинство хакеров используют многочисленные уязвимости в продуктах компании Adobe, чтобы доставлять полезные нагрузки пользователям Windows через зараженные PDF-файлы. Однако не все знают, что вредоносные PDF-файлы также могут нанести ущерб пользователям Mac, использующим дефолтное приложение для предварительного просмотра PDF. Поэтому дважды подумайте, прежде чем кликнуть по PDF-файлу на вашем MacBook’е — он может оказаться трояном, содержащим внутри руткит.
В этой мини-серии из двух частей мы подробно расскажем, как сделать файл, похожий на обычный PDF-файл, который на самом деле является троянским AppleScript’ом, незаметно запускающим вредоносный код на целевом MacBook или на другом компьютере Mac. На GIF-ке ниже вы можете увидеть реальный PDF-файл, а также его фейковую PDF-версию с вредоносным кодом.
Для начала рассмотрим принцип работы такой атаки.
Система атакующего настраивается на использование Empire и размещает вредоносный Python-скрипт. Делается AppleScript-файл, который выглядит как настоящий PDF. В момент, когда жертва откроет AppleScript, он сначала загрузит и откроет реальный PDF для того, чтобы убедить жертву, что фейковый PDF-файл настоящий, а затем он загрузит с сервера хакера и выполнит вредоносный Python-скрипт. После того, как будет запущен Python-скрипт, между целевым Mac и сервером злоумышленника будет установлено соединение с целью удаленного управления компьютером жертвы.
Шаг 1. Осваиваемся с Empire
Для начала мы будем использовать Empire (ранее известную как PowerShell Empire). Это фреймворк для пост-эксплуатации, прославившийся возможностью генерировать трудно обнаруживаемые полезные нагрузки PowerShell для Windows.
Empire основан на работе нескольких других проектов, используемых для предоставления своих базовых функциональных возможностей и возможностей своих модулей. К счастью, он также поддерживает полезные нагрузки Python, которые можно использовать против MacOS и других Unix-подобных операционных систем.
Читателям, незнакомым с этим инструментом, рекомендуем ознакомиться с руководствами для начинающих по Empire, поскольку мы не будем объяснять, как установить Empire на Kali Linux или подробно описывать все доступные параметры stager и listner.
Последующие шаги можно выполнять на Kali Linux (для локальных сетевых атак) или с виртуального частного сервера на Debian (для глобальных атак).
Шаг 2. Создание HTTP-слушателя Empire
С помощью команды cd перейдите в директорию Empire/ и выполните команду ниже:
./empire
«Слушатели» откроют порты для прослушивания на сервере хакера, на котором работает Empire. Эти порты будут позже использоваться скомпрометированным MacBook’ом для подключения к «слушателю» Empire. Для приема входящих подключений от MacBook также будет создан новый «слушатель».
Чтобы просмотреть список всех имеющихся «слушателей», воспользуйтесь этой командой:
listeners
На свежей установке Empire новых слушателей не будет, и она выдаст сообщение «No listeners currently active» (нет активных слушателей). Можно включить стандартного HTTP-слушателя с помощью команды ниже:
uselistener http
После установки типа «слушателя» можно воспользоваться командой info для просмотра доступных параметров:
info
Здесь есть несколько опций, описание которых (к сожалению) выходит за рамки данной статьи. Параметры по умолчанию отлично работают и можно использовать только их, но мы рекомендуем поиграть с доступными опциями и настроить «слушателей» под себя, под свои нужды.
Убедитесь, что параметры Port и Host были установлены в значениях 80 и 0.0.0.0 соответственно, поскольку эти параметры имеют решающее значение для проработки нашей статьи. Вы можете установить эти значения, используя следующие две команды. Использование хоста с IP 0.0.0.0 говорит Empire, что данный «слушатель» будет доступен на любом интерфейсе. Если Empire используется против MacBook в локальной сети, то «слушатель» будет доступен на локальном IP-адресе хакера (например, 192.168.0.4). В качестве альтернативы, если Empire установлен на VPS, «слушатель» будет доступен через удаленный IP-адрес хакера этого VPS-сервера.
set Port 80 set Host 0.0.0.0
Чтобы запустить «слушателя» Empire, используйте команду execute. В конце концов он должен выдать сообщение: «Listener successfully started!» (Слушатель успешно запущен!)
execute
Для того, чтобы проверить, что «слушатель» действительно запущен, можно еще раз воспользоваться командой listeners:
listeners
Появится список всех ваших активных «слушателей». Обратите внимание на имя слушателя (Столбец Name). По умолчанию оно будет автоматически установлено в значение «http». Если во время тестирования Empire будут созданы несколько слушателей, то по умолчанию все последующие слушатели будут создаваться с именами «http1», «http2» и т.д.
(Empire: listeners/http) > listeners
[*] Active listeners:
Name Module Host Delay/Jitter KillDate
---- ------ ---- ------------ --------
http http http://1x.xxx.xxx.x6:80 5/0.0
(Empire: listeners) > _
С созданием «слушателя» для этой атаки мы закончили. Дальше нужно сгенерировать stager-нагрузку.
Шаг 3. Создание вредоносной Stager-нагрузки для macOS
Стейджеры похожи на полезные нагрузки, их используют для создания подключений к «слушателям» Empire в тот момент, когда пользователь-жертва его откроет.
Чтобы просмотреть доступные stager’ы, введите usestager, затем пробел и нажмите Tab на клавиатуре:
usestager <* PRESS TAB *>
В Empire доступно около десятка stager’ов, посвященных работе с macOS (они начинаются с «osx»). В этой статье мы расскажем, как сгенерировать AppleScript stager’а.
(Empire: listeners) > usestager
multi/bash osx/macho windows/launcher_bat
multi/launcher osx/macro windows/launcher_lnk
multi/macro osx/pkg windows/launcher_sct
multi/pyinstaller osx/safari_launcher windows/launcher_vbs
osx/war osx/teensy windows/launcher_xml
osx/applescript windows/backdoorLnkMacro windows/macro
osx/application windows/bunny windows/macroless_msword
osx/ducky windows/csharp_exe windows/shellcode
osx/dylib windows/dll windows/teensy
osx/jar windows/ducky
osx/launcher windows/hta
(Empire: listeners) > _
AppleScript — это скриптовый язык, созданный Apple. Он позволяет пользователям напрямую управлять скриптовыми приложениями macOS, а также частями самой macOS. С его помощью пользователи могут создавать скрипты для автоматизации повторяющихся задач, комбинирования функций множества скриптовых приложений, добавления новых функций в приложения Mac и создания сложных рабочих процессов. AppleScript в настоящее время включен во все версии macOS как часть пакета средств автоматизации системы.
Для того, чтобы сгенерировать macOS-stager на AppleScript, используйте команду ниже:
usestager osx/applescript
Затем просмотрите доступные параметры, используя info:
info
Большое значение имеет настройка параметра «Listener» для сервера «слушателя», созданного на предыдущем шаге. Это скажет стейджеру, к какому серверу ему нужно будет подключаться, когда AppleScript будет выполнен на целевом MacBook.
(Empire: listeners) > usestager osx/applescript
(Empire: stager/osx/applescript) > info
Name: AppleScript
Description:
Generates AppleScript to execute the Empire stage0 launcher.
Options:
Name Required Value Description
---- -------- ----- -----------
Listener True http Listener to generate stage for.
OutFile False File to output AppleScript to, otherwise displayed on the screen.
SafeChecks True True Switch. Checks for LittleSnitch or a Sandbox, exit the staging process if true. Defaults to True.
Language True python Language of the stager to generate.
UserAgent False default User-agent string to use for the staging request (defauult, none, or other).
Установите значение параметра Listener, используя следующую команду. Здесь должно использоваться имя слушателя — параметр Name (в этом примере мы используем http):
set Listener http
Затем сгенерируйте AppleScript stager’а с помощью команды generate.
generate
Сейчас мы немного изменим содержание сгенерированного стейджера и он будет немного отличаться от его предполагаемого использования. Имейте в виду, что код в приведенном ниже скриншоте представляет собой Python-скрипт с кодировкой base64. Этот скрипт предназначен для выполнения на MacBook и для создания соединения с сервером хакера. Вместо того, чтобы встраивать этот Python-скрипт в AppleScript, он будет размещен на сервере хакера и будет скачен компьютером жертвы при открытии поддельного PDF-файла.
AppleScript мы еще будем использовать в последующих шагах для скачивания и выполнения Python-скрипта, но встраивать его в AppleScript мы не будем. Такая схема работы позволяет избежать обнаружения антивирусами, т.к. фактически Python-скрипт будет отсутствовать в фейковом PDF-файле в момент сканирования программой VirusTotal.
Шаг 4. Сохранение macOS- stager
Прежде чем сохранить сгенерированный Python-скрипт, необходимо создать новую директорию. Эта директория будет заполнена несколькими важными для атаки файлами.
Для начала откройте новый терминал и используйте команду mkdir для создания директории с именем files:
mkdir files
Затем перейдите в эту директорию files/
cd files/
Выделенный раздел в скрипте Python с кодировкой base64 (см. предыдущий шаг) нужно скопировать и сохранить в локальный файл с именем script в директории files/. Это можно сделать с помощью редактора nano:
nano script
Сохраните содержание файла, нажав Ctrl + X, а для выхода Ctrl + Y, затем Enter.
Шаг 5. Запуск веб-сервера Python3
Сервер Python3 можно запустить с помощью следующей команды:
python3 -m http.server 8080 &
Python3 создаст веб-сервер на порту 8080, сделав файлы в этой директории доступными для всех. В нашем случае мы хотим, чтобы скрипт, содержащий закодированный Python-код стал доступен для пользователя-жертвы macOS. Оператор & запустит веб-сервер Python3 в качестве фонового процесса. Использование этого оператора на VPS-сервере будет тоже полезным, поскольку это сделает сервер доступным даже после закрытия SSH-сеанса.
`/ tokyoneon ~/files
> python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
_
Маскировка macOS-stager
Вот и все, что касается установки Empire-слушателя, генерации AppleScript-стейджер и размещения Python-скрипта на веб-сервере. В следующей статье мы покажем, как сделать так, чтобы AppleScript загружал и незаметно выполнял Python-скрипт, а также как сделать AppleScript похожим на настоящий PDF-файл.