- Windows 8.1 Kernel Patch Protection — PatchGuard
- Что охраняет PatchGuard
- Как охраняет PatchGuard
- Как победить
- Windows 10
- История продолжается
- Patchguard windows 7 как выключить
- Как включить или отключить Защитник Windows 7
- Включение и отключение Windows 7 Defender
- Отключение Защитника Виндовс 7
- Способ 1: Настройки программы
- Способ 2: Отключение службы
- Способ 3: Удаление при помощи сторонней программы
- Включение Защитника Виндовс 7
- Способ 1: Настройки программы
- Способ 2: Конфигурации системы
- Способ 3: Возобновление работы через Администрирование
- Активация/деактивация защитника windows
- Основные сведения о защитнике Windows
- Включение защитника
- Отключение защитника
- Для Windows 10:
Windows 8.1 Kernel Patch Protection — PatchGuard
Периодически, как правило во вторую среду месяца, можно услышать истории о том, что Windows после очередного обновления перестает загружаться, показывая синий экран смерти. В большинстве случаев причиной такой ситуации оказывается либо руткит, либо специфичное системное ПО, фривольно обращающееся со внутренними структурами ОС. Винят, конечно, все равно обновление, ведь «до него все работало». С таким отношением не удивительно, что «Майкрософт» не поощряет использование всего, что не документировано. В какой-то момент, а именно с релизом Windows Server 2003, MS заняла более активную позицию в вопросе борьбы с чудо-поделками сторонних разработчиков. Тогда появился механизм защиты целостности ядра — kernel patch protection, более известный как PatchGuard.
С самого начала он не позиционировался как механизм защиты от руткитов, поскольку руткиты работают в ядре с теми же привилегиями, а следовательно, PatchGuard может быть обезврежен. Это скорее фильтр, отсекающий ленивых разработчиков руткитов.
Что охраняет PatchGuard
Самым популярным местом модифицирования ядра была таблица системных вызовов. При помощи модификации указателей на функции системных вызовов можно было легко их перехватывать, фильтровать, логировать и т. п. Причем этот патч был популярен как для руткитов, так и для антивирусного ПО. Другие интересные для патча объекты — таблицы дескрипторов (GDT, IDT). Через модифицирование глобальной таблицы дескрипторов можно было изменять атрибуты сегментов, создавая бекдоры для кода, а через таблицу дескрипторов прерываний можно было перехватывать… прерывания! Продвинутые же парни сплайсили непосредственно функции ядра.
Соответственно, первая версия PatchGuard защищала:
- таблицы системных вызовов (SST),
- глобальную таблицу дескрипторов (GDT),
- таблицу дескрипторов прерываний (IDT),
- образ ядра,
- ядерные стеки.
С развитием NT перерабатывалось множество компонентов ядра, в том числе и PatchGuard. На текущий момент уже сложно перечислить все, что защищается с его помощью:
- множество системных образов, не только образ ядра (nt, hal, WerLiveKernelApi, tm, clfs, pshed, kdcom, bootvid, ci, msrpc, ndis, ntfs, tcpip, fltmgr),
- критически важные структуры данных ядра (например, список процессов),
- набор MSR (например, model specific регистр IA32_LSTAR),
- KdpStub — процедура отладчика, получающая управление после исключений.
Как охраняет PatchGuard
Стоит отметить, что PatchGuard активно использует новую реализацию обработки исключений, введенной в x64-версиях Windows. Используется он как для обфускации самого PatchGuard, так и для проверки целостности защищаемых образов.
В предыдущих версиях Windows обработчик исключений использовал структуры данных прямо на стеке, что даже позволяло обходить stack cookies при эксплуатации уязвимостей. Основное изменение заключается в хранении специальной таблицы внутри исполняемого образа с записями для каждой отдельной его функции.
За счет того, что адрес начала и конца любой функции можно получить прямо в рантайме, задача подсчета контрольной суммы отдельно взятой функции становится тривиальной. Для сравнения — в x86-версиях контроль целостности образов невозможен из-за того, что непонятно, как определить границы отдельной функции, а образ целиком (или даже отдельные его секции) накрывать контрольной суммой нельзя, поскольку в том же ядре присутствуют функции, которые патчатся самим ядром на лету.
При загрузке ОС PatchGuard создает от 1 до 4 контекстов — структур данных, в которых хранятся копии используемых им функций, контрольные суммы защищаемых структур и ключи шифрования самого контекста. Эти контексты хранятся в неподкачиваемом пуле в зашифрованном виде. О проверке контекстов поговорим чуть позже.
Инициализируются контексты PatchGuard в фазе 1 загрузки ОС. Функция, непосредственно занимающаяся созданием контекста, не имеет публичного символа (будем называть ее KiInitializePatchGuardContext), но найти ее можно внутри функции KiFilterFiberContext. Мы нашли два места, в котором возможно создание контекста PatchGuard:
Первый вариант всегда создает хотя бы один контекст, в то время как второй только в 4% случаев. Также первый вариант примечателен тем, что вызывает функцию KiFilterFiberContext неявно, а именно через «вброс» исключения.
Функция, создающая контекст PatchGuard, обфусцирована настолько, что автоматические средства с ней не справляются, а исследователям внезапно становится неинтересно ее реверсить. В статике это полная каша, 10K+ строк декомпилированного «в лоб» кода (сама декомпиляция в IDA Pro занимает около 40 минут).
Все говорит об обширном использовании макросов:
- даже простейшая операция, такая как взятие случайного числа, размазана на 50+ строк ассемблерного кода;
- все циклы развернуты;
- вставлено много «мертвого» кода;
- используется косвенное обращение к переменным и внешним функциям.
Динамика тоже довольно непроста. Вот пара примеров из того, что рассыпано по коду.
Проверка контекста состоит из двух этапов: сперва проверка структуры самого контекста, которая происходит на DPC-уровне, затем планируется work item, осуществляющий проверку защищаемых структур в системном потоке. Если проверка была удачной, старый контекст удаляется и вместо него создается новый, который будет запущен через случайный интервал времени. Если проверка не удалась, PatchGuard зачищает все свои следы, в том числе зануляя стек, и демонстрирует синий экран с кодом ошибки 0x109: CRITICAL_STRUCTURE_CORRUPTION.
Гифка с саморасшифровывающимся на первом этапе проверки контекстом:
Как победить
Существует несколько подходов к обезвреживанию PatchGuard:
- Такой патч образа ядра, чтобы PatchGuard вообще не инициализировался.
- Патч процедур проверки контекста.
- Хук KeBugCheck с восстановлением состояния системы.
- Отмена запланированных проверок — то, что мы реализовали.
Нам понравился последний способ, поскольку он является самым «чистым»: ничего не нужно хукать и пачтить, необходимо просто заменить значение некоторых переменных.
- KeSetCoalescableTimer
Необходимо просканировать все таймеры, DPC для которых будет содержать DeferredContext с неканоническим адресом, и увеличить интервал ожидания для найденных до бесконечности. - Prcb.AcpiReserved
Просто занулить данное поле. - Prcb.HalReserved
Просто занулить данное поле. - PsCreateSystemThread
Просканировать спящие потоки и раскрутить их стек. Если он упирается в функцию из структуры KiServiceTablesLocked, это наш клиент. Выставляем время спячки, равное бесконечности. - KeInsertQueueApc
Просканировать все рабочие потоки с раскруткой стека. Если в стеке встречаются функции не из кодовой секции ядра, причем раскручивающиеся с использованием данных для функций FsRtlMdlReadCompleteDevEx и FsRtlUninitializeSmallMcb, это точно рабочий поток PatchGuard. Обезвреживаем так же, как в предыдущем варианте. - KiBalanceSetManagerPeriodicDpc
Восстановить «законную» процедуру — KiBalanceSetManagerDeferredRoutine.
Эти действия необходимо успеть совершить за 2 минуты по описанным выше причинам. Результат — проверка контекста никогда не будет запущена, а также не будет запланирована новая. PatchGuard не будет работать.
Windows 10
При осмотре KiFilterFiberContext из Windows 10 Technical Preview мы заметили небольшое изменение. Все старые методы планирования остались прежними. Однако появился новый, который пока что безусловно возвращает STATUS_HV_FEATURE_UNAVAILABLE. Немного покопавшись, мы обнаружили функцию KiSwInterruptDispatch, внутри которой явно идет расшифровка и вызов проверки контекста. Очевидно, что будет добавлена возможность осуществлять проверку контекстов по запросу гипервизора Hyper-V. От гипервизора при определенных условиях будет приходить синтетическое прерывание, обработчик которого будет проверять целостность ядра.
История продолжается
В статье мы старались не указывать имена конкретных функций не потому, что нам жалко. Все просто: имена функций, используемых для расшифровки и проверки контекстов, намеренно изменены разработчиками PatchGuard и меняются в разных версиях ОС.
Вот пример несоотвтествия названия функции тому, чем она действительно занимается. Это та самая функция, копия которой используется для саморасшифровки контекста.
Одно хорошо — все эти функции находятся рядом, так что начать можно с функции KiFilterFiberContext. Очевидно, они все лежат в одном файле исходного кода. Однако проверка целостности ядра не ограничивается одним PatchGuard. В различные части ядра вставлены макросы, осуществляющие проверку тех или иных структур. Каждое такое место приходится искать вручную. Пример:
С вероятностью 50% данная функция осуществляет подсчет контрольной суммы для произвольной функции ядра и планирует ее проверку каждые 2 минуты в DPC с функцией CcBcbProfiler.
Так что удачи в поисках! PatchGuard интересен именно тем, что его весело реверсить 😉
Patchguard windows 7 как выключить
Как включить или отключить Защитник Windows 7
Защитник — предустановленный в операционную систему Windows 7 антивирусный компонент. Если вы используете антивирусное ПО от стороннего разработчика, то имеет смысл прекратить работу Защитника, так как в его функционировании остаётся мало практической пользы. Но иногда данный компонент системы отключается без ведома пользователя. Включение его обратно довольно простое, но самостоятельно до него не всегда получается додуматься. Эта статья будет состоять из 3 способов отключения и включения Защитника Виндовс. Приступим!
Включение и отключение Windows 7 Defender
Защитник Виндовс не является полноценной антивирусной программой, поэтому сравнение его возможностей с такими мастодонтами разработки ПО для защиты компьютера как Avast, Kaspersky и прочими, некорректно. Этот компонент ОС позволяет обеспечить простейшую защиту от вирусов, но рассчитывать на блокировку и обнаружение какого-нибудь майнера или более серьёзной угрозы безопасности компьютера не приходится. Также Defender может вступать в конфликт с другим антивирусным ПО, из-за чего этот служебный компонент приходится выключать.
Допустим, вас устраивает работа данного антивирусника, но вот из-за какой-то недавно установленной программы или как результат настройки компьютера другим человеком, он оказался отключен. Не беда! Как и было сказано ранее, инструкция по возобновлению работы Защитника будет указана в этой статье.
Отключение Защитника Виндовс 7
Можно прекратить работу Windows Defender выключив его через интерфейс самой программы Защитника, остановив службу, отвечающую за его функционирование или простым удалением с компьютера с помощью специальной программы. Последний способ будет особенно полезен, если у вас очень мало места на диске и каждый мегабайт свободного дискового пространства имеет ценность.
Способ 1: Настройки программы
Самый простой метод отключения данного компонента находится в его настройках.
- Нам необходимо попасть в «Панель Управления». Для этого нажимаем на кнопку «Пуск» на панели задач или на одноимённую кнопку на клавиатуре (гравировка на клавише «Windows» совпадает с рисунком клавиши «Пуск» в Виндовс 7 или более поздних версиях этой ОС). В правой части этого меню находим нужную нам кнопку и жмём по ней.
Если в окне «Панели Управления» включён вид просмотра «Категория», то нам нужно изменить вид просмотра на «Мелкие значки» или «Крупные значки». Так будет легче найти иконку «Защитника Windows».
В правом верхнем углу окна содержимого находится кнопка «Просмотр» и указан установленный вид. Нажимаем на ссылку и выбираем один из двух подходящих нам видов просмотра.
Находим пункт «Защитник Windows» и один раз нажимаем по нему. Значки в Панели управления расположены хаотично, поэтому придётся самостоятельно пробежать глазами список находящихся там программ.
В открывшемся окне «Защитника» на верхней панели находим кнопку «Программы» и кликаем по ней. Затем нажимаем на кнопку «Параметры».
В этом меню щёлкаем на строку «Администратор», которая находится в самом низу левой панели параметров. Затем снимаем галочку с параметра «Использовать эту программу» и нажимаем на кнопку «Сохранить», рядом с которой будет нарисован щит. В Виндовс 7 щитом обозначаются действия, которые будут выполнены с правами администратора.
После отключения Защитника должно появиться вот такое окошко.
Нажимаем «Закрыть». Готово, Защитник Windows 7 отключён и не должен вас отныне тревожить.
Способ 2: Отключение службы
Этот способ позволит отключить Windows Defender не в самих его настройках, а в конфигурации системы.
- Нажимаем сочетание клавиш «Win+R», которое запустит программу под названием «Выполнить». Нам нужно вписать в неё команду, написанную ниже, и нажать «ОК».
В окне «Конфигурация системы» переходим во вкладку «Службы». Листаем список вниз, пока не найдём строчку «Защитник Windows». Убираем галочку перед названием нужной нам службы, нажимаем «Применить», а затем «ОК».
Если после этого у вас появилось сообщение от «Настроек системы», которое предлагает выбор между перезагрузкой компьютера прямо сейчас и без перезагрузки вовсе, лучше выбрать «Выход без перезагрузки». Компьютер вы всегда сможете перезагрузить, а вот восстановить данные, которые были утеряны из-за внезапного его отключения, вряд ли.
Способ 3: Удаление при помощи сторонней программы
Стандартные средства установки и удаления программ не позволят вам деинсталлировать встроенный в операционную систему компонент, но вот Windows Defender Uninstaller — запросто. Если вы решились на удаление встроенных системных средств, обязательно сохраните важные для вас данные на другой накопитель, ведь последствия данного процесса могут серьёзно повлиять на дальнейшую работоспособность ОС в целом, вплоть до потери всех файлов на накопителе с установленной Виндовс 7.
- Переходим на сайт и нажимаем на «Download Windows Defender Uninstaller».
После того как программа загрузится, запускаем её и нажимаем на кнопку «Uninstall Windows Defender». Это действие полностью удалит Защитник Windows из системы.
Некоторое время спустя в месте для вывода действий программы появится строка «Windows Defender registry key deleted». Это означает, что она удалила ключи Защитника Windows 7 в реестре, можно сказать, стёрла любое упоминание о нём в системе. Теперь Windows Defender Uninstaller можно закрыть.
Включение Защитника Виндовс 7
Теперь мы рассмотрим методы включения Windows Defender. В двух из трёх описанных ниже способов нам потребуется всего лишь поставить галочку. Делать мы это будем в параметрах Защитника, конфигурации системы и через программу Администрирование.
Способ 1: Настройки программы
Этот способ повторяет почти всю инструкцию по отключению через настройки Защитника, разница будет лишь в том, что сам Defender предложит нам его включить, как только будет запущен.
Повторяем инструкцию «Способ 1: Настройки программы» с 1 по 3 шаг. Появится сообщение от Защитника Windows, которое уведомит нас о его выключенном состоянии. Нажимаем на активную ссылку.
Спустя некоторое время откроется главное окно антивируса, выводящее данные о последней проверке. Это значит, что антивирус включился и полностью готов к работе.
Способ 2: Конфигурации системы
Одна галочка и Defender работает вновь. Достаточно просто повторить первый шаг инструкции Способ 2: Отключение службы, а затем второй, только необходимо поставить галочку напротив службы «Защитник Windows».
Способ 3: Возобновление работы через Администрирование
Существует ещё один способ включения данной службы с помощью «Панели управления», но он несколько отличается от первой инструкции по включению, когда мы запускали конкретно программу Защитника.
- Заходим в «Панель управления». Как её открыть, вы можете узнать, ознакомившись с первым шагом инструкции «Способ 1: Настройки программы».
Находим в «Панели управления» программу «Администрирование» и щелчком мыши запускаем её.
В открывшемся окне «Проводника» будет находиться много разных ярлыков. Нам нужно открыть программу «Службы», поэтому нажимаем два раза ЛКМ на её ярлык.
В меню программы «Службы» находим «Защитник Windows». Нажимаем по ней правой кнопкой мыши, затем в выпадающем меню кликаем на пункт «Свойства».
В окне «Свойств» включаем автоматический запуск данной службы, как показано на скриншоте. Жмём на кнопку «Применить».
После этих действий загорится опция «Запустить». Производим нажатие по ней, ждём пока Защитник возобновит работу и щёлкаем «ОК».
На этом все. Надеемся, что этот материал помог вам решить проблему включения или отключения Windows Defender.
Активация/деактивация защитника windows
Основные сведения о защитнике Windows
Защитник берет на себя функции антивируса в случае его отсутствия. На практике рассматриваемое приложение гарантирует защиту только от т.н. «троянов». Для борьбы с прочими вредоносными продуктами надо инсталлировать сторонние антивирусы. Об этом разработчик защитника дополнительно уведомляет владельца.
Арсенал продукта довольно богат. Защитник позволяет делать следующее:
• следить за автозапуском;
• контролировать настройки безопасности;
• следить за приложениями, активирующимися вместе с IE;
• контролировать настройки браузера;
• регулировать работу разного рода файлов и дополнений, стартующих с браузером;
• следить за функционированием драйверов и служб;
• регулировать действия устанавливаемых и уже инсталлированных программ;
• следить за файлами и дополнениями для регистрации и запуска различных программных продуктов;
• контролировать порядок обновления модулей ОС.
Перечень функций может меняться в зависимости от версии защитника и непосредственно Windows.
Включение защитника
Для включения продукта и проверки правильности его работы зайдите в Пуск.
На скриншоте показано окно рассматриваемого продукта. Во всех актуальных версиях ОС меню имеет практически такой же вид.
Если защитник не включается, активируйте его самостоятельно. Найдите через поисковую строку в “Пуске” программу «Службы» и зайдите в нее.
Откройте службу защитника. Перейдите на вкладку Тип запуска, выберите в выпадающем списке автоматически (отложенный запуск) и включите защитник, кликнув на «Запустить».
Защитник будет активирован.
Отключение защитника
При необходимости защитник можно выключить прямо из его настроек.
В панели управления включите «Маленькие значки», а затем найдите пункт «Защитник Windows».
Откройте пункт «Программы».
Нажмите на гиперссылку «Параметры». Далее следует открыть группу настроек «Администратор» в списке слева.
Деактивируйте «Использовать эту программу». Защитник будет выключен.
Для Windows 10:
Первый способ:
1. Запускаем редактор локальной групповой политикик (в поиске введите gpedit.msc). Читайте: Как ускорить работу компьютера
2. Открываем ветку: Редактор локальной групповой политики -> Политика “Локальный компьютер” -> Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Windows Defender или (Endpoint Protection) -> Защита в режиме реального времени и в правом окне выбираем Выключить защиту в реальном времени
Второй способ:
1. Заходим в параметры (настройки)
2. Нажимаем на вкладку “Обновление и безопасность”, а далее все как на картинке.