RID Hijacking: повышаем привилегии обычного user до Administrator (rid_hijack, metasploit, Kali Linux)
@webware
Иногда довольно сложно удержать доступ к машине жертвы после успешного проникновения, особенно если нет возможности выполнить вредоносный код от имени администратора или создать и добавить пользователя в привилегированную группу. Сегодня хотел бы поговорить о методе пост эксплуатации под названием RID Hijacking — уязвимости, которая известна почти год, но патча от Microsoft всё еще нет…
RID Hijacking (или “угон RID”) — уязвимость найденная специалистом по безопасности из Колумбии Себастьяном Кастро, которая представляет из себя возможность получить права админа и добиться устойчивого присутствия в системе. Метод основан на подмене одного из параметров учетных записей в системе — относительного идентификатора (RID).
Интересно, что данную уязвимость специалист опубликовал в своем блоге еще в декабре 2017, но новость осталась незамеченной и даже несмотря на то что эксперт отправил в Microsoft отчет сразу после проверки своей теории на практике, ответа он не получил, а патч так и не вышел.
RID — это уникальное порядковое число, присвоенное учетной записи, которое добавляется в конец SID (Security ID). Например RID учетной записи администратора всегда имеет значение 500, а RID для учетной записи гостя имеет значение 501.
Данная атака основана на изменении ключей реестра Windows, что позволяет присвоить идентификатор на любую учетную запись, тем самым предоставляя права, которые привязаны к этому идентификатору(RID). Подобная техника крайне полезна хакерам, которые уже проникли в систему жертвы и пытаются реализовать методы постэксплуатации. Подмена RID позволит запустить вредоносное ПО от имени администратора, даже после перезагрузки ПК. К этой уязвимости подвержены почти все версии Windows — начиная от XP и заканчивая последними обновлениями Windows 10, а также и серверные ОС с Windows Server 2003 до 2016. Пока Microsoft “думает“ над патчем, специалисты подготовили готовый модуль для Metasploit, который доступен в последней версии фреймворка.
Реализация атаки
Атака будет реализована на Kali Linux, а атакуемый будет использовать Windows 7. В первую очередь обновим наш Metasploit командой apt update && apt install metasploit-framework. После запускаем фреймворк командой msfconsole и переходим к модулю для подмены RID.

Прописываем команду info, чтобы узнать какие опции необходимы для реализации атаки.
- GETSYSTEM: если true, попытается получить привилегии SYSTEM
- GUEST_ACCOUNT: если true, будет использовать учетную запись “Гость” для подмены ID
- PASSWORD: если указано, подменит пароль для учетной записи
- RID: RID, который будет присвоен учетной записи
- USERNAME: если указано, будет искать определенную учетную запись пользователя и использовать его для подмены идентификатора, если GUEST_ACCOUNT = true, будет проигнорирован
- SESSION: указать номер сессии Meterpreter (подразумевается, что у нас имеется сессия)
Так, как это инструмент постэксплуатции, понятное дело, что у нас должна быть готова сессия Meterpreter. О том, как получить сессию с помощью атаки EternalBlue я показывал в одном из своих видео. Если атакуемый не подвержен к этому виду атаки используйте любой другой вариант(например реализация уязвимости dde_delivery). Но это уже совсем другая история.
В моем примере я реализовал атаку EternalBlue для получения сессии обычного пользователя Windows 7 без прав администратора. Чтобы узнать имя учетной записи жертвы необходимо перейти к shell-оболочке и прописать whoami, либо загрузить mimkatz и прописать команду wdigest (о том, как это делается). Далее я использовал опцию background для того, чтобы сессия не закрывалась при выходе из Meterpreter-оболочки и можно было перейти к модулю RID Hijack.

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

Узнаем RID прописав команду whoami /all в cmd. RID указан в конце Security ID и он равен 1010.

Итак, для реализации эксплойта укажем параметры username, password и session, а остальные параметры оставляем дефолтными.

Прописываем exploit и скрипт моментально находит учетную запись, меняет RID и изменяет пароль.

Теперь необходимо перезайти в пользователя. При входе прописываем пароль “qwerty”, который указывали в опции “password”. Убеждаемся, что RID поменялся: для этого в командной строке прописываем команду whoami /all.

Обычный юзер “переобулся” в админа и теперь может запускать программы от имени администратора и например создавать, редактировать, удалять файлы в каталоге system32.

Ну и напоследок создаем учетную запись с правами администратора, перезаходим в новую учетку и радуемся полноценной админкой.


В завершении
Обнаружить данный вид атаки очень непросто, потому что она задействует стандартные ресурсы системы и не привлекает внимание атакуемого. Так как используются механизмы самой ОС, антивирусы, скорее всего, не “учуют” подобный эксплойт. Ну а в логах системы все операции будут фиксироваться как пользовательские.
Результаты своего исследования автор эксплойта представил на нескольких конференциях и отравил отчет представителям Microsoft еще в начале 2018-го, но уязвимость доступна по сей день на последних патчах Windows 10.
Спасибо за внимание.
Ссылки:
Статья с обзором уязвимости от исследователя (на англ.)
Выступление специалиста на DerbyCon 2018 с подробным разбором (видео)