PatchGuard

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

  1. cddee3

    cddee3 Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2020
    Сообщения:
    55
    Привет
    какие есть/или не есть сейчас способы бороться с PatchGuardом?
     
  2. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    прям шоб ж/б == таких нет, но ежли юзверу нужны полноценные вирты, то зрада ця тамо вырублена :)
     
  3. cddee3

    cddee3 Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2020
    Сообщения:
    55
    Интересное дело... Вот человек вроде по-русски говорит, да? А нихрена не понять
     
  4. UbIvItS

    UbIvItS Well-Known Member

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

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    UbIvItS,
    01.jpg
    может быть вам шрифт на церковно-славянский поменять? Форумный движок это, вроде бы, позволяет. Все время ловлю себя на желании перемещать ваши посты в раздел "Теология" :)
     
    Microedition нравится это.
  6. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    https://github.com/can1357/ByePg
    https://github.com/Mattiwatti/EfiGuard

    Или написать гипервизор, отдающий на чтение память без перехватов, а на исполнение - с перехватами.

    Или штатный способ: подключить отладчик ядра. В этом случае PatchGuard отключается автоматически.

    При установке виртуалок PG не отключается ни частично, ни полностью.
     
    cddee3 и TermoSINteZ нравится это.
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    а ты попробуй запустить виртуалбокс и подцепить к вирте реальный хдд :)
     
  8. HoShiMin

    HoShiMin Well-Known Member

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

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    вбокс ничего не отключает, он работать не может при активном pass-thru, пч пг режет прямой доступ вирты к железкам. И та же батва с hyper-v. А вот отрубишь пг и вирты пашут в полной мере.
     
  10. HoShiMin

    HoShiMin Well-Known Member

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

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    ответ тут простой == запусти и проверь на том же hyper-v :grin:
     
  12. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Нет, давай пока без проверок: слишком сложный и долгий путь.
    Что именно не работает и что (и где) ты отключаешь, чтобы заработало?
    Подозреваю, что ты перепутал PatchGuard и DeviceGuard.
     
    cddee3 нравится это.
  13. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    ну-не надо себе всё так утяжелять :)

    Ты думаешь в них есть особая разница? :) как можно эффективно защитить ядро оси, если не блокировать прямые обращения к жестянкам?:blush2:
     
  14. Indy_

    Indy_ Well-Known Member

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

    PG это вирта, очень большой криптованный код, выборка из него идёт ко всем системным структурам, для проверки их целостности - дескрипторные таблицы и тп. Железо к этому отношения не имеет.
     
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    а толку-то от проверок целостности, если ты не можешь проверить данные? а данные могут подложить чрез файл подкачки, кэши пзу и чрез само же пзу соответственно. в большинстве случаев сам код (того же ядра) пачить не требуется, хватает просто подложить нужные значения переменных/таблиц на вход. и усё :)
     
  16. Indy_

    Indy_ Well-Known Member

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

    Я тоже не понимаю. Если есть ядерный доступ, то можно PG элементарно обойти тупо его пропатчить.
     
  17. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Это два совершенно разных механизма.
    PG - проверяет целостность кода ядра и системных структур. Он ничего не блокирует, ничего не запрещает. Это просто проверка по таймеру.
    DG - это целый комплекс компонентов: это и изоляция ядра на Hyper-V (которая мешает твоим виртуалкам), и проверка доверенности приложений.

    DG опционален и отключается в групповых политиках.
    PG в настройках отключить нельзя, поэтому он становится проблемой для разработчиков читов: ничего в ядре перехватить уже нельзя.
    Точнее, можно, но до первой проверки по таймеру, которая отправит систему в синий экран.
    --- Сообщение объединено, 13 дек 2020 ---
    Для этого понадобится обмануть механизм проверки цифровых подписей.
    Пропатчишь что-то в бинарнике ядра - слетит подпись.

    Так можно сказать про обход чего угодно: всего-то что-то пропатчить и что-то куда-то подложить.
    Вопрос - что и куда?
    Большинство старых обходов PG уже не работают.
    Те два, которые скинул выше, вроде ещё живые.
    Ещё год назад очень перспективным был InfinityHook, позволявший перехватывать сисколлы через правку одного адреса в ETW, который не покрывался PatchGuard'ом, но и его уже прикрыли.
    А в скором времени, видимо, прикроют и скрытие патчей на самописных гипервизорах.

    Так что... на словах всё просто: пропатчить да подложить, а на деле это очень нетривиальная задача.
     
    q2e74 нравится это.
  18. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    и что же в этой задаче такого нетривиального, если ты можешь подкладывать чрез пзу? :) нашёл нужные записи в таблицах (тем же методом проб и ошибок) и пометил нужные страницы в озу на исполнение. И таймеры можно нулить, пч они тоже попадают в файл подкачки да прочие кэши.
    опять же в куче случаев НИЧЕГО в ядре пачить не надо от слова СОВСЕМ == в большинстве случаев хватает данных подложить, а если уж нужна функа, то её можно собрать ропами без всяких пачуль опять-таки :grin:
     
  19. HoShiMin

    HoShiMin Well-Known Member

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

    Например, тебе надо перехватить какую-то функцию в ядре. Пусть будет ZwAllocateVirtualMemory.
    Перехватить так, чтобы PatchGuard не нашёл перехватов.
    Что куда подкладывать?
     
  20. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.077
    один из способов == нули таймер проверки целостности ядра и пач нужную тебе функу. Вообще, в таких делах перво-наперво нужно добиться того, чтобы ядро считало себя нецелостным без всяких пачуль и по дампам будешь определять куда оно ломится :)