другими словами тогда: нету надёжных техник для отключения пачгварда, но если на компе жертвы стоит виртуальная машина (virtualbox, vmware), то пачгвард отключен, во всяком случае, частично
UbIvItS, может быть вам шрифт на церковно-славянский поменять? Форумный движок это, вроде бы, позволяет. Все время ловлю себя на желании перемещать ваши посты в раздел "Теология"
https://github.com/can1357/ByePg https://github.com/Mattiwatti/EfiGuard Или написать гипервизор, отдающий на чтение память без перехватов, а на исполнение - с перехватами. Или штатный способ: подключить отладчик ядра. В этом случае PatchGuard отключается автоматически. При установке виртуалок PG не отключается ни частично, ни полностью.
вбокс ничего не отключает, он работать не может при активном pass-thru, пч пг режет прямой доступ вирты к железкам. И та же батва с hyper-v. А вот отрубишь пг и вирты пашут в полной мере.
Уверен, что не перепутал PG с чем-то ещё? Контролировать доступ к железкам - не в его компетенции. Всё, что он делает - проверяет целостность ядра, и никаких ограничений на работу с железом не вводит.
Нет, давай пока без проверок: слишком сложный и долгий путь. Что именно не работает и что (и где) ты отключаешь, чтобы заработало? Подозреваю, что ты перепутал PatchGuard и DeviceGuard.
ну-не надо себе всё так утяжелять Ты думаешь в них есть особая разница? как можно эффективно защитить ядро оси, если не блокировать прямые обращения к жестянкам?
UbIvItS, PG это вирта, очень большой криптованный код, выборка из него идёт ко всем системным структурам, для проверки их целостности - дескрипторные таблицы и тп. Железо к этому отношения не имеет.
а толку-то от проверок целостности, если ты не можешь проверить данные? а данные могут подложить чрез файл подкачки, кэши пзу и чрез само же пзу соответственно. в большинстве случаев сам код (того же ядра) пачить не требуется, хватает просто подложить нужные значения переменных/таблиц на вход. и усё
UbIvItS, Я тоже не понимаю. Если есть ядерный доступ, то можно PG элементарно обойти тупо его пропатчить.
Это два совершенно разных механизма. PG - проверяет целостность кода ядра и системных структур. Он ничего не блокирует, ничего не запрещает. Это просто проверка по таймеру. DG - это целый комплекс компонентов: это и изоляция ядра на Hyper-V (которая мешает твоим виртуалкам), и проверка доверенности приложений. DG опционален и отключается в групповых политиках. PG в настройках отключить нельзя, поэтому он становится проблемой для разработчиков читов: ничего в ядре перехватить уже нельзя. Точнее, можно, но до первой проверки по таймеру, которая отправит систему в синий экран. --- Сообщение объединено, 13 дек 2020 --- Для этого понадобится обмануть механизм проверки цифровых подписей. Пропатчишь что-то в бинарнике ядра - слетит подпись. Так можно сказать про обход чего угодно: всего-то что-то пропатчить и что-то куда-то подложить. Вопрос - что и куда? Большинство старых обходов PG уже не работают. Те два, которые скинул выше, вроде ещё живые. Ещё год назад очень перспективным был InfinityHook, позволявший перехватывать сисколлы через правку одного адреса в ETW, который не покрывался PatchGuard'ом, но и его уже прикрыли. А в скором времени, видимо, прикроют и скрытие патчей на самописных гипервизорах. Так что... на словах всё просто: пропатчить да подложить, а на деле это очень нетривиальная задача.
и что же в этой задаче такого нетривиального, если ты можешь подкладывать чрез пзу? нашёл нужные записи в таблицах (тем же методом проб и ошибок) и пометил нужные страницы в озу на исполнение. И таймеры можно нулить, пч они тоже попадают в файл подкачки да прочие кэши. опять же в куче случаев НИЧЕГО в ядре пачить не надо от слова СОВСЕМ == в большинстве случаев хватает данных подложить, а если уж нужна функа, то её можно собрать ропами без всяких пачуль опять-таки
Так что именно найти? Например, тебе надо перехватить какую-то функцию в ядре. Пусть будет ZwAllocateVirtualMemory. Перехватить так, чтобы PatchGuard не нашёл перехватов. Что куда подкладывать?
один из способов == нули таймер проверки целостности ядра и пач нужную тебе функу. Вообще, в таких делах перво-наперво нужно добиться того, чтобы ядро считало себя нецелостным без всяких пачуль и по дампам будешь определять куда оно ломится