Эксплуатация уязвимостей уровня ядра в ОС Windows. Часть 1 – Настройка рабочей среды
В данном цикле статей мы рассмотрим написание эксплоитов уровня ядра в ОС Windows.
Автор: Mohamed Shahat
Эта серия статей появилась по двум причинам. Во-первых, мне нравится работать с проектом HackSysExtremeVulnerableDriver . Во-вторых, я получил массу пожеланий , чтобы осветить эту тему.
Весь код, используемый при написании этой серии, находится в моем репозитории .
В данном цикле статей мы рассмотрим написание эксплоитов уровня ядра в ОС Windows. Важно отметить, что мы будем иметь дело с известными уязвимостями, и в реверс-инжиниринге нет необходимости (по крайней мере, для драйвера).
Предполагается, что после ознакомления со всеми статьями вы будете знать все наиболее распространенные классы брешей и методы эксплуатации, а также сможете портировать эксплоиты с архитектуры x86 на архитектуру x64 (если возможно) и ознакомитесь с новыми методами защиты в Windows 10.
Схема отладки ядра
В отличие от отладки на уровне пользователя, когда приостанавливается выполнение отдельного процесса, на уровне ядра задействуется вся система, и мы не сможем воспользоваться этим методом. Соответственно, нужна отдельная отладочная машина, которая сможет осуществлять коммуникацию с системой, где отлаживается ядро, просматривать память и структуры ядра, а также отлавливать крахи системы.
Дополнительный материал для изучения:
Эксплуатация уязвимостей ядра
Этот процесс проходит намного веселее, чем эксплуатация на уровне пользователя J.
Главная цель – добиться привилегированного выполнения в контексте ядра. А дальше уже все зависит от нашего воображения, начиная от застолья с домашним пивом и заканчивая внедрением вредоносов, спонсируемых государством.
В целом, наша задача заключается в том, чтобы получить шелл с системными привилегиями.
Темы статей этого цикла
- Часть 1: Настройка рабочей среды
- Конфигурирование трех виртуальных машин и системы, которая будет выступать в роли отладчика.
- Конфигурирование отладчика WinDBG.
- Часть 2: Полезные нагрузки
- Изучение наиболее распространенных полезных нагрузок. В последующих частях будут рассматриваться конкретные уязвимости и, при необходимости, указываться ссылки на эту статью.
- Остальные части.
Жизненный цикл разработки эксплоита уровня ядра
- Нахождение уязвимости . Эта тема не будет рассматриваться в данном цикле, поскольку мы уже точно знаем, где находятся бреши.
- Перехват потока выполнения . Некоторые уязвимости предусматривают выполнение кода, для некоторых есть дополнительные требования.
- Расширение привилегий . Главная цель – получить шелл с системными привилегиями.
- Восстановление потока выполнения . Неучтенные исключения на уровне ядра приводят к краху системы. Если вы не собираетесь писать эксплоит для DoS-атаки, следует учитывать этот факт.
Типы целевых систем
Мы будем работать с уязвимостями в следующих системах (конкретная версия не принципиальна):
- Win7 x86 VM
- Win7 x64 VM
- Win10 x64 VM
Начнем с архитектуры x86, и далее будем портировать эксплоит для системы Win7 x64. Некоторые эксплоиты не будут запускать на машинах с Win10 из-за присутствия новых защит. В этом случае мы либо будем изменять логику работы эксплоита, либо будем использовать полностью другой подход.
Используемое программное обеспечение:
Настройка систем для отладки
Отладочные системы, с которыми мы будем взаимодействовать, предназначены для загрузки уязвимого драйвера. На этих машинах часто будут возникать крахи, поскольку большинство исключений в ядре способствуют явлениям подобного рода. Необходимо выделить достаточно оперативной памяти для этих систем.
На каждой машине, которая будет отлаживаться, нужно сделать следующее:
- Внутри директории VirtualKD запустите файл target\vminstall.exe. Добавится новая загрузочная запись и будут доступны функции отладки и автоматическое подключение к серверу VirtualKD, установленному в системе, которая выступает в роли отладчика.
В случае с Windows 10 VM необходимо включить режим test signing, который позволяет загружать неподписанные драйвера в ядро.
После выполнения команды bcdedit /set testsinging on и перезагрузки на рабочем столе появится надпись «Test Mode».
- Запустите OSR Driver Loader. Зарегистрируйте и запустите службу. Возможно, потребуется перезагрузка.
- Установите дополнения на гостевой виртуальной машине (необязательное условие).
- Добавьте учетную запись с низкими привилегиями, которая понадобится во время эксплуатации.
C:\Windows\system32>net user low low /add
The command completed successfully.
В системе, которая будет выступать в роли отладчика, будет использоваться WinDBG. Вы сможете инспектировать память, структуры данных и при необходимости выполнять манипуляции. Наличие удаленной отладочной сессии во время падения целевой системы позволит нам подключаться к виртуальной машине и анализировать крахи.
Хост VirtualKD будет выполнять коммуникацию автоматически через именованный канал, вместо установки соединения вручную. Если вы отлаживаете через сеть в Win10 VM, потребуется протестировать соединение вручную.
- Установите Windows SDK . Вы можете выбрать только «Debugging Tools for Windows».
- Проверьте, что установлен отладчик WinDBG. По умолчанию используется папка C:\Program Files (x86)\Windows Kits\10\Debuggers.
Добавьте этот путь в качестве системного и установите путь к отладчику в VirtualKD
Перезапустите гостевые виртуальные машины. Система с VirtualKD, используемая в качестве отладчика, должна быть запущена. После перезагрузки вы сможете начать сессию в WinDBG.
Если все настроено корректно, WinDBG поставит выполнение на паузу и отобразит некоторую информацию, касающуюся целевой системы.
Рисунок 1: Остановка выполнения кода ядра
Символы содержат отладочную информацию для множества бинарных файлов в ОС Window. Загрузить символы можно при помощи следующей команды:
Включаем режим подробного информирования процесса отладки.
ed nt!Kd_Default_Mask 0xf
Должен загрузиться модуль HEVD:
kd> lm m HEVD
Browse full module list
start end module name
fffff80b`92b50000 fffff80b`92b59000 HEVD (deferred)
Сохраняем настройки профиля и любые изменения рабочей среды:
File -> Save Workspace to File
Введите команду g или нажмите клавишу F5 для продолжения выполнения (перечень других команд, которые вам могут пригодиться, хорошо описан в этом документе ).
Краткое описание модуля HEVD
Процедура DriverEntry является стартовой для каждого драйвера:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) <
UINT32 i = 0;
PDEVICE_OBJECT DeviceObject = NULL;
NTSTATUS Status = STATUS_UNSUCCESSFUL;
UNICODE_STRING DeviceName, DosDeviceName = <0>;
- Эта процедура содержит вызов функции IoCreateDevice, содержащей имя драйвера, которое мы будем использовать во время коммуникации.
- В объект DriverObject будут добавлены нужные структуры и указатели на функции.
- Для нас важен указатель функции, связанный с процедурой DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] , отвечающей за обработку IOCTL (I/O Control; управление вводом/выводом);
- В HEVD эта функция называется IrpDeviceIoCtlHandler , которая представляет собой большое условное выражение со множеством ответвлений для каждого IOCTL. Каждая уязвимость имеет уникальный IOCTL.
Пример: HACKSYS_EVD_IOCTL_STACK_OVERFLOW представляет собой IOCTL, используемый для активации бреши, связанной с переполнением стека.
На этом первая часть завершается. В следующей статье мы поговорим о полезных нагрузках. На данный момент доступна только полезная нагрузка, предназначенная для кражи токенов, которая будет использоваться в третьей части.
Как запустить и настроить режимы Windows 10?
Режимы Windows 10 необходимы для удобства и решения проблем с компьютером. Windows 10 имеет 12 режимов, которые помогают пользователю при работе с компьютером. Давайте рассмотрим все режимы Windows 10, их предназначение, и как пользоваться режимами Windows 10.
Режимы Windows 10 – безопасный режим
Эта опция полезна в решении различных задач и проблем, с которыми сталкивается Windows 10. Его применяют для устранения ошибок с драйверами, детектирования и удаления вирусов, включения локального профиля админа, восстановления ОС из резервной копии или средствами загрузчика Windows 10.
Безопасный режим (Safe Mode) Windows 10 имеет несколько подтипов, которые различаются количеством загружаемых драйверов:
- Минимальный – стандартный функционал с наименьшим каталогом программных компонентов для работы ОС.
- Другая оболочка – добавление к стандартному набору вызов командной строки, для реализации дополнительных функций системы.
- Сеть – подключение к «Минимальный» сетевых драйверов для выхода в локальную сеть и интернет.
- Active Directory – включение в загрузчик контроллера домена Windows, на котором присутствует Active Directory, чтобы восстановить службы каталогов. Опция для ИТ-специалистов.
На скриншоте показаны вариации безопасного режима, которые можно включить при запуске системы, с помощью нажатия клавиши F8 до полной загрузки системы. Все режимы Windows 10 доступны в «Конфигурация системы».
- Нажмите Win+Rи пропишите msconfig;
- Перейдите в раздел «Загрузка».
- Выставите напротив «Безопасный режим» птичку и укажите оболочку.
- Жмите «Применить» и перезагружайте ПК. После перезагрузки автоматически вы войдете в выставленный Safe Mode.
Как отключить режим Windows 10:
- Когда вы находитесь в этой оболочке перейдите в «Конфигурацию системы» аналогичным способом.
- В этой вкладке отмените галочку и жмите «Применить».
- Последующая перезагрузка компьютера произойдет со штатной загрузкой Windows
Если эта опция часто используется для задач, ее реально добавить в список загрузок.
Как запустить безопасный режим Windows 10, чтобы тот появился в разделе «Загрузка»:
- Откройте командную строку с правами админа и вводите поочередно команды. Первая строка покажет Он понадобится в следующей команде.
- Первая строка bcdedit /copy
/d “Безопасный режим” - Вытяните код в текстовый формат, и совместите его с другим кодом.
- Вторая строка bcdedit /set <отобразившийся_GUID>safeboot minimal
- Готово. Теперь здесь появится строка. Здесь же можно выставить таймаут автоматического запуска выставленной по умолчанию системы.
Вопрос, как войти в безопасный режим Windows 10 отпадет сам по себе, поскольку теперь перед загрузкой ОС у вас будет постоянный выбор.
Режимы Windows 10 – отладка
Позволяет проводить расширенную диагностику операционной системы для сисадминов и ИТ-специалистов. Является неотъемлемой частью Safe Mode. Он необходим в случаях, когда компьютер начинает нестабильно работать. С помощью этого режима вы сможете провести проверку компьютера максимально глубоко и исправить проблемы.
Чтобы войти в режим отладки, необходимо при запуске, до появления экрана приветствия, нажать клавишу F8. Альтернативный способ: Открыть меню пуск, зажать клавишу Shift, и не отпуская её выбрать пункт “Перезагрузка компьютера”.
Вы должны попасть на экран “Дополнительные параметры загрузки”. Выберите пункт “Параметры загрузки”, в нем будет доступен режим отладки Windows 10.
Чтобы выбирать пункты, используйте клавиши F1-F9. То есть, чтобы задействовать отладку, необходимо нажать F1.
Внимание! В зависимости от версии Windows 10 меню может немного отличаться.
Пункты меню имеют одинаковую суть. Например, вместо “Поиск и устранение неисправностей” пункт может называться “Диагностика”.
Тестовый режим Windows 10
Если вам нужно протестировать не доведенную до ума программу или драйвер, используйте Тестовый режим Windows 10. В x64 версиях ОС он отключает некоторые ограничения безопасности, тем самым позволяет диагностировать сырой софт в среде Виндовс.
Включить его можно командой в командной строке: bcdedit.exe -set TESTSIGNING ON
Выключить можно аналогичным способом, поменяв значение ON на OFF.
Обязательное условие успешной операции – запуск с правами админа CMD.
Режимы Windows 10 – разработка
Если необходимо установить приложения с разрешением .appx не из Microsoft Store, можно использовать режим разработчика Windows 10. Также, он будет полезен программистам и ИТ-специалистам для решения множественных задач.
Активировать его просто:
- Нажмите Win+Iи зайдите в «Обновление и безопасность».
- Откройте раздел «Для разработчиков», выберите соответствующий пункт.
- Согласитесь с предупреждением.
- Дождитесь окончания активации.
- Перезагрузите ПК, чтобы изменения вступили в силу.
Отключение делается таким же способом, только нужно поставить метку напротив другого пункта «Неопубликованные приложения».
Спящий режим Windows 10
Спящий режим Windows 10 – это особая форма работы системы, во время которой компьютеризированная машина в режиме простоя может существенно сэкономить энергопотребление. Если ПК находится в таком состоянии все его активированные программы сохраняются и будут доступны в том же виде, когда ПК снова запустится.
Включается и отключается опция в одном удобном месте:
- Нажмите Win+I и перейдите в пункт «Система».
- Выберите раздел «Питание и спящий режим».
- Задайте таймер бездействия ПК, при котором тот перейдет в спящий режим.
Если нужно опцию выключить, просто укажите в настойках «Никогда».
Режим гибернации Windows 10
Схожий по концепции с предыдущим, режим гибернации Windows 10. Он тоже направлен на сохранении низкого энергопотребления, но с той лишь разницей, что полностью отключает компьютер.
Если при спящем режиме вся информация из ОЗУ сохраняется в ПЗУ и компьютер потребляет минимальную энергию для работы в этой фазе, то гибернация подразумевает выгрузку всех данных по открытому программному обеспечению на накопитель в файл hiberfil.sys. После этого ПК полностью выключается. Последующая загрузка обращается к файлу гибернации, подтягивает нужные данные, восстанавливая тем самым открытое ПО.
Параметр гибернации по умолчанию скрыт в системе, но его можно открыть:
- Нажмите «Действие кнопок питания».
- Кликните «Изменение параметров».
- Поставьте птичку напротив «Режим гибернации».
- Сохраните изменения. Теперь данный пункт будет отображаться вместе с остальными, если нажать кнопку выключения или Alt+F
Режимы Windows 10 для чистого запуска
Вернуть операционной системе ее первозданный вид, как будто она только что была установлена на компьютер, поможет опция чистого запуска. Сделать режим чистой загрузки Windows 10 просто:
- Нажмите Win+Rи выполните команду msconfig
- Перейдите в раздел «Cлужбы».
- Кликните «Не отображать службы Виндовс» и жмите «Отключите все».
- Нажмите «Применить», перейдите на вкладку «Автозагрузка» и откройте «Диспетчер задач».
- Здесь отключите автозагрузку всех программ.
- После в «Конфигурация системы» жмите ОК и перезагружайте компьютер.
Вернуть все в прежнее состояния поможет обратная процедура активации программ и служб.
Игровой режим Windows 10
Когда на компьютере запускается игра, Game Mode увеличивает частоту кадров (FPS) за счет уменьшения выделяемых ресурсов для фоновых процессов. Активировать опцию просто:
- Нажмите Win+Iи откройте «Игры».
- Поставьте ползунок в положение «Вкл». Игровое меню по умолчанию открывается сочетанием клавиш Win+G
- Запустите любую игру и нажмите Win+G (или другую комбинацию, если вы ее поменяли).
- Нажмите на шестеренку и напротив пункта «Используйте для этой игры игровой режим» поставьте птичку.
- Закройте параметры, выключите игру и вновь ее активируйте. Теперь эта игра каждый раз будет запускаться с применением данной опции до тех пор, пока вы не отключите ее таким же способом.
Прирост FPS в значительной мере заметен в компьютерах и ноутбуках с дискретной графикой и скромными «не игровыми» характеристиками. Прирост еле заметный или полностью отсутствует на игровых компьютерах с хорошей начинкой.
Существенным прирос может оказаться в том случае, если на компьютере запущенна уйма фоновых процессов и их временно нет возможности полностью деактивировать.
S-режим
Благодаря специальной надстройки ОС, именуемой S-режим, создается оболочка Windows 10, максимально направленная на безопасность пользователя.
Пользоваться в системе разрешено только предустановленным программным обеспечение и программами, что предустановлены в Microsoft Store. Переключится в S-режим с обычной операционной системы нельзя.
ОС с данной надстройкой и соответствующей лицензией устанавливается чистой на компьютер. Обычно, такая лицензия необходима для «рабочих инструментов» корпоративного сегмента.
Отключить S-режим можно, однако при переводе ОС в обычное состояние теряется лицензия Security опции:
- Нажмите Win+Iи откройте раздел «Обновление и безопасность».
- Перейдите в «Активация». Здесь жмите «Переключиться на Windows 10 Home / Pro».
- Далее жмите «Обновить выпуск ОС Windows» либо на пункт «Store» для приобретения лицензии в магазине.
- На страничке магазина жмите «Получить». Получите соответствующее уведомление о возможности установки программ из любых источников.
Режим планшета
Достаточно удобная опция, когда подключаешь телевизор к компьютеру через HDMI и желаешь управлять всеми процессами для настройки и просмотра фильма с помощью мышки.
Также – это незаменимая опция при работе с устройств с сенсорным экраном. Включается и выключается опция очень просто:
- В правом нижнем углу панели нажмите на иконку уведомлений.
- Затем кликните «Режим планшета».
Здесь же будет доступна сенсорная клавиатура, которую легко вызывать прямо с панели Пуск.
Режим в самолете
Эта опция становится доступной для компьютеров, оснащенных модулями беспроводной связи Bluetooth и Wi-Fi. Благодаря ей можно в одно мгновение выключить все беспроводные сети:
- Нажмите Win+A и кликните кнопку «В самолете».
- Подождите несколько секунд, чтобы все беспроводные сети перешли в выключенное состояние.
Выключив опцию, вы отмените запрет на выключение беспроводных сетей. Если они были включены, то Bluetooth и Wi-Fi продолжат работу.
Режим бога
Секретная папка Виндовс, в которой присутствуют все имеющиеся элементы администрирования ПК в виде списка. Для активации God Mode:
- Под учетной записью администратора создайте папку и переименуйте ее в GodMode.
.
- Готово, папка без названия ждет, пока ее откроют.
- Используйте собранные здесь ярлыки для быстрого доступа к параметрам ОС.
Режим восстановления системы в Windows 10
Восстановление системы необходимо, когда компьютер вдруг перестал загружаться. Вы можете откатить Windows 10 до более раннего состояния, когда устройство работало стабильно.
Есть 2 варианта восстановления:
- С помощью точек восстановления системы.
- При помощи образа системы.
Если вы отключили создание точек восстановления, то откатиться назад можно только с помощью образа, записанного на установочный диск или загрузочную флешку. Как создавать загрузочную флешку читайте здесь. Инструкция по созданию флешки для Виндовс 8.1, но алгоритм абсолютно идентичен десятке.
После записи образа, вам необходимо вставить флешку в USB разъём компьютера и перезагрузить его. В дальнейшем, следуйте инструкциям на экране.
Если при загрузке компьютер не считывает флешку, то необходимо изменить приоритет загрузки в BIOS.
Заключение
Режимы Windows 10 разрешают операционной системе быть многогранной, приспосабливаться к различным задачам, усиливая позиции в одном направлении и послабляя их в другом. Благодаря таким опциям ОС Windows 10 умеет совмещать комфорт, безопасность и многофункциональность, подстраиваясь под нужды пользователей.