Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2024-44193 — Взлом Windows через iTunes  - локальное повышение привилегий 0-day | Kitploit
Инструменты/GitHubGitHub/mbog14/cve-2024-44193
Повышение привилегийАнализ уязвимостейЭксплуатацияСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubmbog14/cve-2024-44193

CVE-2024-44193

Взлом Windows через iTunes  - локальное повышение привилегий 0-day

Репозиторий
98151 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Взлом Windows через iTunes  - локальное повышение привилегий 0-day

Представляем CVE-2024–44193

Это разбор CVE-2024–44193 — эксплойта локального повышения привилегий в iTunes версии 12.13.2.3.

Она была исправлена Apple 12 сентября 2024 года. Ссылка на Security Advisory Apple: Apple's Security Advisory

iTunes версии 12.13.2.3 устанавливает службу Apple Device Discovery Service: C:\Program Files\Common Files\Apple\Mobile Device Support\AppleMobileDeviceService.exe, которая уязвима к эксплойту локального повышения привилегий.

TL;DR

Из уважения и понимания к тем, кому неинтересен очередной плохо написанный и, вероятно, слишком длинный разбор, вот краткая версия:

Уязвимость возникает из-за неправильного управления правами пользователей в пути C:\ProgramData\Apple\*. Это позволяет членам локальной группы "Users" записывать произвольные файлы в этот путь. Когда служба AppleMobileDeviceService.exe перезапускается, что может быть вызвано непривилегированным пользователем, можно подготовить примитив произвольного удаления папок/файлов, чтобы добиться произвольного выполнения кода в системе с привилегиями SYSTEM.

Tooling:

Предупреждение! Далее посредственные объяснения инструментов.

Пропустите этот раздел, если вы уже знакомы с инструментами.

  • Oplock

SetOpLock

Инструмент Oplock — это инструмент для использования «оппортунистической блокировки» (opportunistic lock) в Windows. Он позволяет нам «приостанавливать» процесс, блокируя файл до тех пор, пока не будут выполнены определённые требования; однако его также можно использовать для «приостановки» процесса во вредоносных целях, например, чтобы получить достаточно времени для запуска нашей полезной нагрузки эксплойта.

  • FolderContentsDeleteToFolderDelete

FilesystemEoPs

Инструмент FolderContentsDeleteToFolderDelete работает следующим образом: автоматически создаётся папка с файлом внутри. Затем на файл устанавливается оппортунистическая блокировка (oplock), чтобы приостановить процесс. Когда процесс остановлен, файл перемещается из папки. Затем папка удаляется и пересоздаётся как NTFS junction на целевой каталог. Когда oplock отменяется и процесс продолжает работу, удаление файла/папки следует по вновь созданному NTFS junction к целевому каталогу и удаляет этот файл перед продолжением выполнения.

  • FolderOrFileDeleteToSystem

FilesystemEoPs

Этот инструмент, вероятно, лучше всего описан в Zero Day Initiative, поэтому вот ссылка на объяснение непосредственно от них:

Злоупотребление произвольным удалением файлов для повышения привилегий и другие отличные трюки

Сам разбор

Введение в уязвимую службу AppleMobileDeviceService.exe

После установки iTunes также устанавливается служба: AppleMobileDeviceService.exe, которая работает с привилегиями SYSTEM. Когда я исследовал эту службу с помощью Windows Sysinternals Process Monitor (Procmon), я сразу заметил вызывающее беспокойство поведение.

Служба рекурсивно проходит по всем файлам в пути C:\ProgramData\Apple\Lockdown\* и удаляет все папки и файлы, которые там не должны находиться.

Для локального тестирования я использовал ProcessHacker2, чтобы принудительно перезапустить службу и проверить поведение программы.

Наблюдаемое поведение: служба, работающая как SYSTEM, запрашивает каталог и все вложенные подкаталоги, а затем выполняет операцию CreateFile с включённым параметром Delete On Close. Это означает, что служба SYSTEM запрашивает путь C:\ProgramData\Apple\Lockdown\*, рекурсивно обходит вложенные папки и файлы в этом каталоге и удаляет их.

Alt text

Проблемные права пользователей в пути: C:\ProgramData\Apple\*

Windows Sysinternals https://learn.microsoft.com/en-us/sysinternals/ accesschk64.exe можно использовать для проверки прав доступа к конкретным папкам. Члены локальной группы "Users" имеют права на запись в папке C:\ProgramData\Apple\Lockdown\, что позволяет низкопривилегированным пользователям записывать произвольные файлы в эту папку.

Alt text

Примитив произвольного удаления файлов/папок

Поскольку мы можем записывать произвольные файлы в путь Lockdown, а процесс SYSTEM удаляет их при перезапуске службы, стало возможным создать примитив произвольного удаления файлов/папок. Чтобы проиллюстрировать это, я создаю две вложенные папки внутри папки Lockdown. Подпапка a и подпапка b внутри подпапки a. Это будет выглядеть так: C:\ProgramData\Apple\Lockdown\a\b

В подпапке a есть текстовый файл aa.txt, а в подпапке b — текстовый файл bb.txt

C:\ProgramData\Apple\Lockdown\a\aa.txt

C:\ProgramData\Apple\Lockdown\a\b\bb.txt

Alt text

Как видно на скриншоте выше, операция "CreateFile" выполняется с параметром "Delete On Close" для aa.txt, удаляя его.

Когда процесс SYSTEM выполняет операцию CreateFile над aa.txt и bb.txt с параметром Delete On Close, процесс SYSTEM AppleMobileDeviceService.exe удаляет эти файлы. Теперь мы можем создавать произвольные файлы внутри папки Lockdown и удалять их, что подводит нас к следующему изящному трюку.

NTFS junctions

В Windows можно использовать NTFS junction, чтобы перенаправить папку в другое место. В некотором смысле это похоже на симлинки в Linux. Для иллюстрации можно создать NTFS junction (симлинк) внутри папки C:\ProgramData\Apple\Lockdown, указывающий на папку на рабочем столе. Вы можете сделать это самостоятельно с помощью PowerShell: New-Item -Type Junction -Path whatever -Target "C:\Users\user\Desktop\AAyes", или просто использовать набор инструментов от ZDI:

FilesystemEoPs

Выполните следующую команду, чтобы направить NTFS junction внутри папки Lockdown на "Target" на рабочем столе.

root@kitploit:~
.\FolderContentsDeleteToFolderDelete.exe /target "C:\Users\user\Desktop\AAyes" /initial "C:\ProgramData\Apple\Lockdown"

Когда служба будет перезапущена, недавно созданный NTFS junction будет указывать на AAyes, расположенный на рабочем столе. Поскольку служба выполняет операцию CreateFile с параметром Delete On Close от имени SYSTEM, файл будет удалён. Поскольку операция выполняется с привилегиями SYSTEM, мы получаем примитив произвольного удаления папок или файлов, а значит, можем добиться выполнения кода на хосте с правами SYSTEM.

Alt text

Примечание:

Потребовалось внести определённые правки в исходный код проекта FolderContentsDeleteToFolderDelete из-за ограничений на имена файлов/папок. Имена файлов/папок должны были быть очень короткими, чтобы удаление происходило. Причина этого неизвестна и не исследовалась, поскольку короткие имена надёжно решали проблему.

Правки исходного кода FolderContentsDeleteToFolderDelete:

root@kitploit:~
const wchar_t folder2path[] = L"C:\\d";
const wchar_t exploitFileName[] = L"e.txt";

// It was required to shorten the two consstants: “folder2path” and “exploitFileName”
// They where changed to: L"C:\\d" and L"e.txt" because it seemed that file and folder name length had a meaningful impact on exploit functionality.

[...]

// We also needed to edit the “folder1path” value to L”c” in order to shorten it.
folder1path += L"c";

Идея эксплуатации

Поскольку служба рекурсивно следует по любым junction (симлинкам), гипотеза заключалась в том, что можно будет произвольно удалять файлы в системе от имени SYSTEM, используя уязвимую службу Apple, которая следует по NTFS junction. Поскольку уязвимая служба удобно позволяет непривилегированным пользователям перезапускать её с помощью трюка («Apps -> Installed apps -> Apple Mobile Device Support -> Modify -> Repair») через графический интерфейс Windows, можно запускать эксплойт по желанию. После перезапуска служба следует по NTFS junction, и предопределённое поведение программы диктует, что служба удалит файлы или папки, на которые выберет указать пользователь.

Другими словами, именно пользователь решает, какие файлы или папки служба удалит. Поскольку она работает от имени SYSTEM, мы можем удалить почти любой файл в системе (кроме файлов, требующих привилегий TrustedInstaller).

Это означает, что мы можем тщательно выстроить цепочку действий, которая сделает следующее:

  1. Подготовить oplock, чтобы приостановить процесс в удобный для нас момент для подготовки шагов эксплуатации
  2. Перезапустить службу — срабатывает oplock, и процесс приостанавливается
  3. Подготовить наш трюк с откатом MSI с помощью FolderOrFileDeleteToSystem.exe
  4. Подготовить NTFS junction, чтобы направить примитив удаления файлов на Config.MSI, созданный на шаге трюка с откатом MSI, с помощью FolderContentsDeleteToFolderDelete.exe
  5. Снять oplock

Доказательство концепции

Доказательство концепции состоит из 5 шагов.

  1. Установите Oplock на C:\ProgramData\Apple\Lockdown\
root@kitploit:~
.\SetOpLock.exe C:\ProgramData\Apple\Lockdown\
Alt text
  1. Запустите перезапуск службы Apps -> Installed apps -> Apple Mobile Device Support -> Modify -> Repair

  2. Подготовьте трюк с откатом MSI

root@kitploit:~
.\FolderOrFileDeleteToSystem.exe
  1. Подготовьте шаг Windows Junction (симлинк), чтобы направить примитив произвольного удаления папок/файлов службы на установщик MSI
root@kitploit:~
.\FolderContentsDeleteToFolderDelete.exe /target 'C:\Config.Msi' /initial "C:\ProgramData\Apple\Lockdown"
  1. Снимите Oplock

Когда в пятом шаге снимается Oplock, мы наблюдаем за процессом FolderContentsDeleteToFolderDelete, чтобы убедиться, что NTFS junction был пройден и что Config.MSI, расположенный в C:, был корректно удалён. Затем мы наблюдаем за процессом FolderOrFileDeletionToSystem.exe, чтобы убедиться, что мы выигрываем состояние гонки и что «вредоносная» папка Config.MSI с изменённым скриптом отката записана. Если всё идёт правильно, мы нажимаем CTRL+ALT+DELETE, открываем меню специальных возможностей в правом нижнем углу и запускаем экранную клавиатуру. Поскольку мы перезаписали HID.DLL в C:\Program Files\Common Files\microsoft shared\ink\HID.DLL с помощью вредоносного скрипта отката, появится командная оболочка CMD от имени SYSTEM, что завершит наш эксплойт. Alt text

Выполнение и мониторинг FolderContentsDeleteToFolderDelete.exe

Alt text

Выполнение и мониторинг FolderOrFileDeleteToSystem.exe

Alt text

Получаем оболочку SYSTEM

Скачать инструмент