Słowem wstępu
W 64 bitowych systemach operacyjnych Windows została zaimplementowana funkcja Kernel Patch Protection, zwana także PatchGuard. Dowiedzmy się co to takiego oraz jakie wynikają z tego korzyści.
Na wstępie wyjaśnić najpierw należałoby, czym jest ów kernel. Mianowice jest to jądro systemu operacyjnego, które stanowi podstawę każdego OS'u i odpowiada za wszystkie jego zadania. Jako ciekawostkę możemy dodać, iż jądro, jakie znajduje się w Windows jest hybrydowe, czyli jest swego typu kompromisem między jądrem monolitycznym (Linux) oraz mikrojądrem (Mac OS X). Natomiast termin Kernel Patching określa nieautoryzowane zabiegi i praktyki, mające na celu modyfikację jądra. Technologia ta zadebiutowała wraz z dodatkiem Service Pack 1 dla systemu Windows Server 2003 x64 oraz XP Professional x64 i oczywiście została zaimplementowana w najnowszych edycjach okienek bazujących na 64 bitowej architekturze. Podstawowym zadaniem mechanizmu Kernel Patch Protection jest ochrona integracji (spójności) kernela Windows, w wyniku czego otrzymujemy następująco:
- Wyższą niezawodność
- Stałą wydajność systemu operacyjnego
- Bezpieczeństwo
Niezawodność
Dzięki mechanizmowi Kernel Patch Protection otrzymujemy wysoką niezawodność systemu operacyjnego. Ochrona jądra uniemożliwia modyfikowanie jego struktur, a co za tym idzie, niemożliwe jest doprowadzenie do destabilizacji środowiska systemu Windows.
Wydajność
PatchGuard nie powoduje spadku wydajności komputera, nawet wtedy jeśli zostanie wykryta próba modyfikacji kernela to stan systemu pozostaje nienaruszony. Daje to użytkownikowi wydajne środowisko pracy niepoddające się czynnikom zewnętrznym.
Bezpieczeństwo
Funkcja Kernel Patch Protection chroniąc jądro systemu operacyjnego uniemożliwia złośliwemu oprogramowaniu jego modyfikację podnosząc tym samym bezpieczeństwo pracy z systemem Windows.
Funkcja ta jest domyślnie włączona i nie mamy możliwości jej dezaktywacji. Jednakże jest ona automatycznie wyłączana, gdy jest dołączony debuger do jądra. Pozwala to na modyfikowanie kernela podczas sesji debugowania. Kernel Patch Protection zaimplementowany jest w następujących systemach operacyjnych Windows:
- Windows XP Professional x64 z dodatkiem Service Pack 1 lub późniejszym
- Windows Server 2003 x64 z dodatkiem Service Pack 1 lub późniejszym (wszystkie edycje)
- Windows Vista x64 (wszystkie edycje poza Starter)
- Windows "Longhorn" Server 2008 x64 (wszystkie edycje)
Nie znajdziemy jej więc, jak widzimy, w systemach stworzonych do pracy pod kontrolą procesorów Intel Itanium - ia64 (czeka na implementację), ani w Windows opartych na architekturze 32 bitowej (x86).
A jak to działa?
Kernel Patch Protection nadzoruje, czy zasoby używane przez jądro systemu oraz ono samo nie jest modyfikowane. Mechanizm ten działa w tle i nie wymaga żadnej ingerencji ze strony użytkownika. Należy jednak zaznaczyć, iż funkcja ta nie chroni bezpośrednio przez złośliwym oprogramowaniem, lecz tylko pośrednio, gdyż zapobiega zmianom w strukturze kodu systemu, które to tego typu oprogramowanie może wyrządzać. Więc wynika z tego jasno, iż posiadając system 64 bitowy nadal jednak powinniśmy korzystać z oprogramowania antywirusowego i innych - pomagających środowisko pracy oraz użytkownika.
W momencie wykrycia próby modyfikacji kernela, przez sterownik lub oprogramowanie, system operacyjny wygeneruje błąd kontrolny, a następnie zostanie zamknięty. Poniżej przedstawiamy listę powodów, które mogą doprowadzić do tej sytuacji:
- Modyfikacja tablic usług systemowych
- Modyfikacja tablicy deskryptora przerwań (IDT)
- Modyfikacja tablicy deskryptora globalnego (GDT)
- Użycie stosów kernela zabronionych przez jądro
- Modyfikacja któregokolwiek składnika jądra
- Próba modyfikacji dodatkowych zasobów kernela (czeka na implementacje)
Należałoby by dodać, iż funkcja ta jest powiązana z mechanizmem Execute Disable Bit, który jest dostępny także w 32 bitowych edycjach Windows. Jednakże w systemach bazujących na architekturze x86 jest to rozwiązanie czysto programowe, natomiast w 64 bitowych Windows działanie jest już wspomagane sprzętowo (implementacja obsługi w 64 bitowych procesorach).