Compartilhar via


Hvorfor Patchguard?

Tenkte bare å skrive meget kort om hva Patchguard er og hva den gjør i Windows Vista 64bits versjon. Som vel de aller fleste vet har Windows (og de fleste andre OS) en kjerne som oftest omtales på engelsk, Kernel. Denne har blant annet ansvaret for kommunikasjon mellom hardware og software, allokering av minne, skedulering av CPU tid og håndtering av Interupts. Mer skal jeg ikke si om kernel her, les heller artikkelen om Kernel på Wikipedia.

 

Kernel'en styrer systemet og er således enormt viktig av mange grunner, deriblant sikkerhet og stabilitet som to overordnede. Kernel har også en rekke tabeller som brukes f.eks ved Systemkall eller Interupts.

 

  • SSDT (System Service Descriptor Table)
  • GDT (Global Descriptor Table)
  • IDT (Interrupt Descriptor Table)
  • System images (ntoskrnl.exe, ndis.sys, hal.dll)
  • Processor MSRs (syscall, sysenter)

 

Mange ulike typer software, kanskje spesielt anti-virus, modifiserer disse tabellen og legger til egen kode som kjører sammen med kernel. Om dette er ønskelig er en diskusjon i seg selv, men det er hvertfall ganske innlysende at det ikke er ønskelig at kernel modifiseres uautorisert eller galt. Det er blant annet på den måten rootkits kan gjemme seg "helt" på maskinen. Og det er her PatchGuard kommer inn og gjør jobben sin.

 

Bakgrunn

"Kernel Patching" eller "Kernel Hooking" kalles det når man benytter egen kode til å modifisere eller erstatte eksisterende kernel kode og/eller endre tabellene over. Dette er noe Microsoft aldri har støttet og ikke vil støtte da det kan ha særdeles store konsekvenser for systemet, på stabilitet, ytelse, sikkerhet m.m. Mange kjenner sikkert eksempelet fra Windows XP der en ikke helt fungerende skjermdriver vil gi blåskjerm når den kræsjer. Kernel'en er også en av komponentene som testes mest på Windows og er i seg selv meget solid i utgangspunktet.

 

 Både utviklere av malware og anti-malware software er veldig glad i nettopp "kernel hooking". Anti-malware kan f.eks legge sin kode mellom en bruker applikasjon og kernel når applikasjonen gjør et system-kall. Dette kan være f.eks for å holde kontroll på hvilke applikasjoner som oppretter nye prosesser.  

Malware derimot kan gjøre dette for å gjøre seg selv usynlig i systemet, logge tastetrykk eller nettverkstrafikk uten at brukeren kan detektere det, for så å sende dette ut over nettet.

 

PatchGuard

PatchGuard ble, i motsetning til hva enkelte hevder, ikke innført i Windows Vista. Systemet har vært med både Windows XP 64bits og Windows Server 2003 64bits.

PatchGuard monitorer om Kernelkoden eller ressurser denne bruker er blitt modifisert. Dersom en uautorisert endring detekteres vil systemet skru seg av. 

Dette beskytter ikke systemet mot alle typer rootkits eller annen malware, men det er en av flere sikkerhetsfunksjoner som er med å gjøre en måte å angripe systemet på mye vanskeligere.

 

Andre relevante endringer

For å gjøre det mulig å lage Anti-virus, skjermdrivere eller annen software uten å endre på kernel eller kjøre koden sin i kernel-space i det hele tatt er det laget nye API'er og drivermodeller som vil gjøre det lettere for utviklere å følge supporterte løsninger fra Microsoft. Og i mange tilfeller er dette med å øke stabiliteten betraktelig. F.eks vil en skjermdriver kunne restartes uten blåskjerm eller at hele maskinen må startes på nytt.

Det nye systemet for filovervåkning, File System Mini Filter, vil også være med å gjøre antivirus scanning raskere noe flere produsenter av slik programvare allerede har innsett. Og for monitorering av nettverkstrafikk kan Windows Filtering Platform benyttes uten behov for å patche Kernel. Det er altså lagt opp til at det skal være enkelt å utvikle samme typen funksjonalitet uten å endre Kernel. Dette er selvsagt også mulig, og anbefalt, på 32bits systemer.

 

Konklusjon

PatchGuard handler om å beskytte kjernen av operativsystemet, slik at denne kan utføre sin jobb slik den er ment å skulle gjøre. Dette igjen kan gi fordeler for sikkerheten, stabiliteten og ytelsen til systemet.

Og det er fortsatt fullt mulig å utvikle de samme løsningene for systemet som det alltid har vært, selv med PatchGuard tilstedet.

 

 

Ofte stilte spørsmål om PatchGuard