SystemResearch - исследование объектов ядра

Тема в разделе "WASM.PROJECTS", создана пользователем k3rnl, 24 окт 2023.

  1. k3rnl

    k3rnl New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    20
    Доброго времени суток!

    Решил создать отдельную тему для своей утилиты SystemResearch
    0.jpg 1.jpg 2.jpg
    Проект на ранней стадии, много чего задумано и реализуется по мере свободного времени.
    Сборки с новым функционалом буду выкладывать в этой теме.

    Основной упор на код и оптимизацию сделан для Windows 10/11, но также тестирую работу программы в Windows 7. Поддерживаются только 64 битные ОС.
    Среда разработки и компилятор - Pelles C (версия 12.00.2)

    Состав программ:
    1. SystemResearch.exe - основная программа
    2. UI0Detect.exe - сервис (служба) для перехода в терминальную сессию (SessionId = 0)
    3. Wls0wndh.dll - вспомогательная подпрограмма для возврата из терминальной сессии
    4. FDUI0Input.sys - драйвер для устройств ввода-вывода в терминальной сессии

    Инструкция по установке для Windows 10/11:
    1. Файлы UI0Detect.exe и Wls0wndh.dll необходимо поместить в папку Windows\System32
    2. В SystemResearch.exe нажать кнопку Create UI0Detect Service
    3. Установить драйвер FDUI0Input.sys через FDUI0Input.inf
    4. Перезагрузить компьютер

    Перечислять все функции думаю смысла нет, всё интуитивно понятно.
    Списки с процессами и сервисами активируются по двойному щелчку мыши. Правой кнопкой мыши осуществляется обновление списков из контекстного меню.
    Также в программе реализованы всплывающие подсказки при наведении на определенные строки с выведенной информацией.
    Язык программы - английский.

    Из необычных особенностей - специально реализовывал открытие дескрипторов с минимально возможным набором прав. Интересно наблюдать как на это реагируют различные процессы.
    Например процесс csrss.exe - единственный процесс, который не показывает идентификатор сессии если не включена привилегия SeDebugPrivilege у вызывающего процесса.
    В свою очередь для юзермодных процессов можно включать привилегию SeSecurityPrivilege (т.к. используется флаг ACCESS_SYSTEM_SECURITY) заместо SeDebugPrivilege.

    Помимо прочего, при включении в Windows 10/11 изоляции ядра, подключаются гипервизор и два безопасных процесса - Secure System и LsaIso.exe с соответствующим уровнем доверия (Virtual Trust Level).
    Если Secure System является защищенным процессом, то LsaIso.exe спокойно отдаёт свои дескрипторы вызывающему процессу уровня системы. Это создаёт некоторое поле для маневра.

    В общем пока так. По мере свободного времени буду обновлять функционал программы.
     

    Вложения:

    • SystemResearch.zip
      Размер файла:
      41,5 КБ
      Просмотров:
      67
    • UI0Detect.zip
      Размер файла:
      22,7 КБ
      Просмотров:
      61
    • ZeroInput.zip
      Размер файла:
      316,4 КБ
      Просмотров:
      65
    R81..., mantissa, Rel и ещё 1-му нравится это.
  2. k3rnl

    k3rnl New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    20
    С релизом Windows 11 23H2 (build 22631) драйвер FDUI0Input.sys перестал работать (как и предыдущие на предыдущих обновлениях ОС).
    Проблема ребят из FireDaemon в том, что они продолжают упорно привязывать свой драйвер к рабочему столу Default.
    При этом механизм переключения в терминальную сессию (winsta.dll) устроен таким образом, что переход осуществляется на рабочий стол Winlogon.
    Отсюда и все беды. Ждём следующего обновления драйвера.

    Пришлось переделать сервис UI0Detect под современные реалии: теперь подпрограмма для возврата из терминальной сессии Wls0wndh.dll запускается на рабочем столе Winlogon.
    При переключении в терминальную сессию вы увидите окно с кнопкой, но взаимодействовать с ним не сможете через клавиатуру и мышь.
    Сами клавиатура и мышь активируются ровно через 180 сек. (заложено в самой системе в драйвере win32kfull.sys), но взаимодействовать всё равно нельзя.
    Чтобы вернуться нужно: либо делать хардресет с кнопки и перезагружать ПК, либо написать программу с таймером, по истечение которого автоматически сработает механизм возврата.
    Загрузить такую программу можно через SystemResearch.exe (соответствующие коррективы для создания системных процессов в терминальной сессии я внёс).

    Данное обновление небольшое, немного нового функционала, оптимизация кода и исправление небольших багов.
    Теперь можно добавлять права Sacl и Dacl в вызывающий процесс для получения доступа к информации, содержащийся в этих Acl (будет реализовано позже).
    Также следует учитывать - Dacl для защищённых процессов получить пока что невозможно.
    Доработал механизм снятия защиты с сервисов.
    Обратите внимание: для снятия защиты с сервиса нужно, чтобы владельцем (owner) вызывающего процесса была СИСТЕМА (соответственно запуск с токеном Trusted Installer Token).
    Если у вас Windows 11 22H2 (build 22621) и более старые ОС новый (временный) файл сервиса UI0Detect.exe качать не нужно.
     

    Вложения:

    Последнее редактирование: 6 ноя 2023
    Marylin нравится это.