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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/harryanon/r0ak
Повышение привилегийКриминалистика памятиАнализ уязвимостейЭксплуатацияОтладчикиПост-эксплуатацияТестирование на ПроникновениеЭксплуатация Бинарных Файлов
GitHubharryanon/r0ak

r0ak

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

Репозиторий
10873178 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

r0akDownloads

r0ak — это утилита командной строки для Windows, которая позволяет легко читать, записывать и выполнять код на уровне ядра (с некоторыми ограничениями) прямо из командной строки, не требуя ничего, кроме прав администратора.

Быстрый взгляд

r0ak v1.0.0 -- Ring 0 Army Knife
http://www.github.com/ionescu007/r0ak
Copyright (c) 2018 Alex Ionescu [@aionescu]
http://www.windows-internals.com

USAGE: r0ak.exe
       [--execute <Address | module.ext!function> <Argument>]
       [--write   <Address | module.ext!function> <Value>]
       [--read    <Address | module.ext!function> <Size>]

Screenshot

Введение

Мотивация

Ядро Windows — это богатая среда, в которой на типичной системе выполняются сотни драйверов и присутствуют тысячи переменных, содержащих глобальное состояние. Для расширенной диагностики ИТ-специалисты обычно используют такие инструменты, как отладчик Windows (WinDbg), утилиты SysInternals или пишут собственные. К сожалению, использование этих инструментов становится всё более сложным, и они сами ограничены собственным доступом к API Windows и предоставляемым функциям.

Некоторые из сегодняшних проблем включают:

  • Windows 8 и более поздние версии поддерживают Secure Boot, что предотвращает отладку ядра (включая локальную отладку) и загрузку драйверов с тестовой подписью. Это ограничивает инструменты диагностики только теми, которые имеют подписанный драйвер режима ядра.
  • Даже в системах без включённого Secure Boot включение локальной отладки или изменение параметров загрузки, упрощающих отладку, часто запускает режим восстановления BitLocker.
  • Юбилейное обновление Windows 10 и более поздние версии содержат гораздо более строгие требования к подписи драйверов, которые теперь требуют подпись с аттестацией EV от Microsoft. Это ограничивает свободу разработчиков ПО, поскольку драйверы «читай-пиши-всё» не приветствуются.
  • Весеннее обновление Windows 10 теперь включает доступные для пользователей опции включения HyperVisor Code Integrity (HVCI), что ещё больше ограничивает допустимые драйверы и заносит в чёрный список множество сторонних драйверов, которые имели возможность «читать-писать-всё» из-за плохо написанных интерфейсов и рисков безопасности.
  • Такие технологии, как Supervisor Mode Execution Prevention (SMEP), Kernel Control Flow Guard (KCFG) и HVCI с трансляцией адресов второго уровня (SLAT), делают традиционные «трюки» с выполнением кода Ring 0 устаревшими, поэтому требуется новый подход.

В такой среде стало очевидно, что простой инструмент, который можно использовать как экстренную «заплатку»/быстрое исправление и для быстрой диагностики проблем на уровне ядра/системы, которые могут быть выявлены при анализе состояния ядра, может быть ценен для сообщества.

Как это работает

Базовая архитектура

Diagram

r0ak работает, перенаправляя поток выполнения доверенных проверок шрифтов диспетчера окон при попытке загрузить новый шрифт. Для этого он заменяет процедуру сравнения доверенной таблицы шрифтов на альтернативную функцию, которая планирует элемент рабочей задачи (WORK_QUEUE_ITEM), хранящийся во входном узле. Затем правый дочерний элемент доверенной таблицы шрифтов (который служит корневым узлом) перезаписывается буфером записи именованного канала (NP_DATA_ENTRY), в котором хранится пользовательский элемент работы. Этот элемент, его базовая рабочая функция и параметр будут в конечном итоге выполнены выделенным ExpWorkerThread на уровне PASSIVE_LEVEL после попытки загрузки шрифта и выполнения процедуры сравнения, которая получит родительский узел, основанный на именованном канале, в качестве входных данных. Событие трассировки событий Windows (ETW) в реальном времени используется для получения асинхронного уведомления о завершении выполнения рабочего элемента, что позволяет безопасно разрушить структуры, освободить буферы режима ядра и восстановить нормальную работу.

Поддерживаемые команды

При использовании опции --execute эта функция и параметр предоставляются пользователем.

При использовании --write используется специальный gadget для изменения произвольных 32-битных значений в любом месте памяти ядра.

При использовании --read write-gadget используется для изменения указателя и размера буфера HSTI системы (Примечание: это деструктивное поведение для любых других приложений, которые будут запрашивать данные HSTI. Поскольку это необязательное поведение Windows, а этот инструмент предназначен для аварийной отладки/экспериментов, потеря данных была сочтена приемлемой). Затем API запроса HSTI используется для копирования данных обратно в адресное пространство пользовательского режима инструмента, и выводится шестнадцатеричный дамп.

Поскольку используются только встроенные, подписанные Microsoft функции Windows, и все вызываемые функции являются частью битовой карты KCFG, не происходит нарушения каких-либо проверок безопасности, не требуются флаги отладки или использование плохо написанных сторонних драйверов.

Часто задаваемые вопросы

Это баг/уязвимость в Windows?

Нет. Поскольку этот инструмент (и лежащая в его основе техника) требует привилегированного токена уровня SYSTEM, который может получить только пользователь, работающий под учётной записью администратора, не происходит обхода границ безопасности для достижения эффекта. Поведение и полезность инструмента возможны только благодаря повышенному/привилегированному контексту безопасности учётной записи администратора в Windows, и это считается поведением, предусмотренным архитектурой.

Была ли Microsoft уведомлена об этом поведении?

Конечно! Важно всегда сообщать о проблемах безопасности в Microsoft, даже если, казалось бы, не произошло нарушения привилегированных границ – их команды исследователей и разработчиков могут найти новые векторы и способы доступа к определённым путям кода, о которых внешний исследователь мог не подумать.

Соответственно, в ноябре 2014 года в Центр безопасности Microsoft (MSRC) был подан запрос по безопасности, на который ответили: «[…] не подпадает под категорию проблем безопасности, которые мы решали бы с помощью традиционного бюллетеня безопасности. Он […] предполагает наличие прав администратора — места, где архитектурно мы в настоящее время не определяем защищаемую границу безопасности. Поэтому мы не будем заниматься исправлением этого.»

Кроме того, в апреле 2015 года на конференции Infiltrate был представлен доклад под названием Insection : AWEsomely Exploiting Shared Memory Objects, в котором подробно описывалась эта проблема, в том числе для присутствовавших разработчиков Microsoft, которые согласились, что в настоящее время это выходит за рамки архитектурных границ безопасности Windows. Это связано с тем, что существуют буквально десятки (если не больше) других способов, с помощью которых администратор может читать/записывать/выполнять память Ring 0. Этот инструмент просто упрощает коммерциализацию одного из таких векторов для целей отладки и устранения неполадок системы.

Разве это нельзя упаковать как часть комплексного атакующего/эксплойт-кита?

Упаковка этого кода в виде библиотеки потребовала бы тщательного удаления всего интерактивного разбора командной строки и стандартного вывода, после чего, без серьёзных переписываний, «кит»:

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