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

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

  1. k3rnl

    k3rnl Member

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

    Решил создать отдельную тему для своей утилиты 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 КБ
      Просмотров:
      89
    • UI0Detect.zip
      Размер файла:
      22,7 КБ
      Просмотров:
      76
    • ZeroInput.zip
      Размер файла:
      316,4 КБ
      Просмотров:
      79
    R81..., mantissa, Rel и ещё 1-му нравится это.
  2. k3rnl

    k3rnl Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    35
    С релизом 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 нравится это.
  3. k3rnl

    k3rnl Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    35
    Давно не обновлял свою утилиту SystemResearch (за это время много всего пофиксено, улучшено, добавлено нового функционала).
    Доработал полностью функционал по управлению сервисами\службами
    0.png 1.png 2.png

    Защита с сервиса снимается если утилита запущена с токеном Trusted Installer и после перезапуска сервиса, процесс будет запущен без защиты.
    Но это касается не всех сервисов, а только части:
    3.png

    Разобрался почему не работала терминальная сессия и в частности клавиатура\мышь.
    Оказалось встроенный в Windows 11 SuperVisor (изоляция ядра и памяти) блокировал драйвер FDUI0Input.sys
    Добавил функционал по распознаванию супервизора и последующий запрет на переход в терминальную сессию.
    Соответственно вернул правильные рабочие станции и рабочие столы для утилит UI0Detect.exe и Wls0wndh.dll

    Следующий этап - таблицы SACL и DACL.
     

    Вложения:

    • SystemResearch.rar
      Размер файла:
      40,8 КБ
      Просмотров:
      62
    • UI0Detect.rar
      Размер файла:
      21,7 КБ
      Просмотров:
      61
    • ZeroInput.zip
      Размер файла:
      316,4 КБ
      Просмотров:
      58
    Marylin и alex_dz нравится это.
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.087
    k3rnl, немножко глупый вопрос - а чем Ты дравера подписываешь?
     
  5. k3rnl

    k3rnl Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    35
    UbIvItS, драйвер FDUI0Input.sys не мой. Это разработка FireDaemon https://kb.firedaemon.com/support/solutions/articles/4000123189
    Несколько раз я им помогал в тестировании и нахождении багов.

    А так, ещё в 2016 году, был опыт с EV сертификацией на сайте MS (LiveID аккаунт имеется).
    INF-файл, CAT-каталог, набор утилит (signtool, inf2cat, makecab).
    Далее предлагалось скачать файл winqual.exe и подписать его своим сертификатом, загружал на сервак для проверки валидности цифровой подписи.
    Как сейчас это работает не скажу точно, давно уже драйверами не занимаюсь.
     
    UbIvItS нравится это.