PatchGuard

Discussion in 'WASM.HEAP' started by cddee3, Dec 10, 2020.

  1. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Так его ещё найти надо, там очень хитрый механизм запуска проверок
     
  2. UbIvItS

    UbIvItS Well-Known Member

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

    TrashGen ТрещГен

    Blog Posts:
    0
    Joined:
    Mar 15, 2011
    Messages:
    1,201
    Location:
    подполье
    R81... and q2e74 like this.
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Сорцы вбокса открыты - покажите нам эти строчки кода.
    Зачем вообще виртуалке отключать PatchGuard если она ничего не перехватывает в ядре windows?
     
  5. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    HoShiMin,

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

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

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

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Indy_, давай будем последовательны.
    Пока мы ничего не знаем про PG и хотим перехватить какую-нибудь функцию. Трамплин поставили - что делаем дальше?
     
  7. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    HoShiMin,

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

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Сразу вопрос: откуда мы узнаем, где PG получает управление?
     
  9. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    HoShiMin,

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

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    --- Сообщение объединено, Dec 15, 2020 ---
    HoShiMin, вообще, при проверке целостности по хэш-суммам читают только головы проверяемых фунок (то бишь первые энн байт) в силу тормознутности подобных проверок == такого дикобраза можно обойти, поставив ловушку с энн + 1го байта. Однако, есть другой подход для контроля целостности...
    Code (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 Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    UbIvItS,
    вы сами себе противоречите.
    Вначале пишете, что PG отключен, оперируя тем что виртуалка должна быть установлена, а потом пишете что виртуалка ничего не отключает.
    Тогда кто его отключает?
     
  12. UbIvItS

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    мне нужно вирту запустить, значит я и отключаю.
     
  13. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    А как именно отключаешь?
     
  14. UbIvItS

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    на лтсц..
    [​IMG]
     
  15. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Это HyperVisor Code Integrity (HVCI), один из компонентов DeviceGuard.
    К PatchGuard'у эти настройки не имеют никакого отношения и он продолжает работать так же, как и работал.
     
    TermoSINteZ likes this.
  16. UbIvItS

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    довольно странное заявление == даже не вдаваясь в подробности, мы можем видеть надписи core isolation & memory integrity. если убираем эти два параметра, то что же остаётся для пг??? чем же он занимается? :blush::blush2:
     
  17. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Проверкой целостности ядра и системных структур.

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

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

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

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    то есть memory integrity. Однако, я ж уже сказал..
    ну-так мы можем отключить пг иль всё же ещё у него есть некие загадочные фун-ки? :grin:
     
  19. HoShiMin

    HoShiMin Well-Known Member

    Blog Posts:
    5
    Joined:
    Dec 17, 2016
    Messages:
    1,486
    Location:
    Россия, Нижний Новгород
    Эта настройка включает только HVCI. Не важно, какое там пересечение в терминологии. Этот компонент - защита памяти на основе виртуализации.
    PatchGuard она не отключает и никак на него не влияет.
    Говорю же, это два разных компонента, они друг с другом никак не связаны и называются по-разному.

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

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    ох, не надо так :) мокрые не настолько бешеные, чтоб в корпи версию не поставить штатный выключатель этого хлама :)
    Ты это у мокрых прочитал аль ещё где? :)