PatchGuard

Тема в разделе "WASM.HEAP", создана пользователем cddee3, 10 дек 2020.

  1. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Так его ещё найти надо, там очень хитрый механизм запуска проверок
     
  2. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    вот выведешь ядро в нон-стоп аварийный режим и локализуешь, где тот хитрый механизм расположен :) по поводу ядер нужно не забывать, одну забавную и крайне болезненную для разрабов вещь == циклы в ядре строятся по минимуму операций, то бишь напХать тудЫ кучу обработчиков НЕВОЗМОЖНО. :)
     
  3. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.173
    Адрес:
    подполье
    R81... и q2e74 нравится это.
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Сорцы вбокса открыты - покажите нам эти строчки кода.
    Зачем вообще виртуалке отключать PatchGuard если она ничего не перехватывает в ядре windows?
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    PG это процедура весьма большая, она криптована(вирта). Что мешает пропатчить её начало, скипнуть врядле получится. Но так как это обычная процедура, то из неё будут выборки в память. А это значит что с начала её выполнения и до конца можно выборку подменять, при выходе прекратить трансляцию. Тем более что мод общий, можно тупо на ловушках сделать, примитивно протрассировать хардом.
    --- Сообщение объединено, 14 дек 2020 ---
    HoShiMin,

    > очень хитрый механизм запуска проверок

    dpc etc, а какая разница - туда воткнуть тупо int3, ловушку загрузить и дальше всё PG больше нет. Крутишь/трассируешь и подменяешь выборку на ориг данные. Я это не делал, но не вижу каких то возможных трабл.
     
  6. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Indy_, давай будем последовательны.
    Пока мы ничего не знаем про PG и хотим перехватить какую-нибудь функцию. Трамплин поставили - что делаем дальше?
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    Получаем управление до вызова PG. Тем же патчем, я выше говорил тупо туда останов поставить, пропатчить, не важно как. После получения управления, это вызов PG крутим и подменяем выборку к изменённым областям. Не имеет значения что там вирта, выборка всегда прямая, например к какой то дескрипторной таблице - прямое чтение данных. Крутнуть эмуляцией/трансляцией получится, на счёт трейса хардом врядле выйдет, там наверно антидебаг, как хард так наверно и по таймингу.
     
  8. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Сразу вопрос: откуда мы узнаем, где PG получает управление?
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    HoShiMin,

    Он в отдельной кодовой секции, этот адрес можно получить как угодно, статистикой(тк вирта) сигнатурами в общем это не задача даже. Можно и динамикой найти, по той же выборке. Сначала ловушка сработает, только потом будет вызван PG.
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    --- Сообщение объединено, 15 дек 2020 ---
    HoShiMin, вообще, при проверке целостности по хэш-суммам читают только головы проверяемых фунок (то бишь первые энн байт) в силу тормознутности подобных проверок == такого дикобраза можно обойти, поставив ловушку с энн + 1го байта. Однако, есть другой подход для контроля целостности...
    Код (C):
    1. ... func(...){
    2. op_1
    3. ...
    4. op_k
    5. updateMark
    6. op_k+2
    7. ...
    8. op_k+m
    9. updateMark
    10. }
    обновление отметки показывает контролёру текущий статус исполнения функции, а пачуля обрывает такие сообщения :)
     
  11. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    UbIvItS,
    вы сами себе противоречите.
    Вначале пишете, что PG отключен, оперируя тем что виртуалка должна быть установлена, а потом пишете что виртуалка ничего не отключает.
    Тогда кто его отключает?
     
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    мне нужно вирту запустить, значит я и отключаю.
     
  13. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    А как именно отключаешь?
     
  14. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    на лтсц..
    [​IMG]
     
  15. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Это HyperVisor Code Integrity (HVCI), один из компонентов DeviceGuard.
    К PatchGuard'у эти настройки не имеют никакого отношения и он продолжает работать так же, как и работал.
     
    TermoSINteZ нравится это.
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    довольно странное заявление == даже не вдаваясь в подробности, мы можем видеть надписи core isolation & memory integrity. если убираем эти два параметра, то что же остаётся для пг??? чем же он занимается? :blush::blush2:
     
  17. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Проверкой целостности ядра и системных структур.

    DeviceGuard (а именно, его компонент HVCI), опираясь на виртуализацию, защищает "активно": пока он включен, ты не можешь модифицировать системные компоненты, не можешь запустить недоверенный гипервизор, не можешь выделять в ядре исполняемую память.
    Не можешь ничего, что могло бы нарушить целостность ядра.
    Он опциональный и отключаемый.

    PatchGuard сам ничего не запрещает: он лишь периодически проверяет контрольные суммы ядра, системных компонентов и системных структур.
    Даже если он включен, ты по-прежнему можешь менять код ядра, ставить свои перехваты и делать с ядром что угодно. До первой проверки.
    Он неотключаемый и работает постоянно.

    Это два совершенно разных и независимых компонента защиты.
     
    Последнее редактирование: 26 дек 2020
  18. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    то есть memory integrity. Однако, я ж уже сказал..
    ну-так мы можем отключить пг иль всё же ещё у него есть некие загадочные фун-ки? :grin:
     
  19. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Эта настройка включает только HVCI. Не важно, какое там пересечение в терминологии. Этот компонент - защита памяти на основе виртуализации.
    PatchGuard она не отключает и никак на него не влияет.
    Говорю же, это два разных компонента, они друг с другом никак не связаны и называются по-разному.

    Единственный штатный способ - подключить отладчик ядра.
    Все сторонние способы сводятся к тому, чтобы сломать сам PatchGuard: или не дать ему запуститься, или не дать ему свалить систему в синий экран.
    Или с помощью самописного гипервизора скрыть свои модификации, чтобы PatchGuard, читая память, видел немодифицированный оригинальный код.
    И все эти способы оперативно закрывают.
     
  20. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    ох, не надо так :) мокрые не настолько бешеные, чтоб в корпи версию не поставить штатный выключатель этого хлама :)
    Ты это у мокрых прочитал аль ещё где? :)