De rootkit-technologie maakt het mogelijk om kwaadaardige software (malware) beter geheim te houden en maakt deze daardoor over het algemeen effectiever. Het gaat hierbij niet alleen maar om het gewoonweg onttrekken aan de waarneming van een toevallige gebruiker; de rootkit-technologie zorgt ervoor dat malware vele antivirus- en antispywareprogramma's kan omzeilen.

Er zijn weinig legale toepassingen voor deze vorm van technologie, hoewel sommige bedrijven 'verborgen mappen' op de markt brengen die het gebruikers mogelijk maakt om gevoelige informatie te verbergen voor andere mensen die van dezelfde computer gebruik maken.

Aan alle rootkits ligt de mogelijkheid ten grondslag om de resultaten van functieoproepen die door programma's aangemaakt worden te manipuleren. Om bijvoorbeeld het taakbeheerprogramma in Windows een lijst te laten maken van draaiende processen, vraagt het een Windows api-functie (EnumProcesses) op die een lijst met identificators (of proces-id's) geeft, die uit een gegevensstructuur in de kernel wordt verkregen.

Een rootkit onderschept de oproep en filtert de processen die hij probeert te verbergen uit. De rootkits kunnen ofwel in de gebruikersruimte ofwel in de kernel geïmplementeerd worden, waarbij de kernel-rootkits de meest gevaarlijke zijn.

Bestanden, registeringangen en netwerkverbindingen kunnen allemaal op analoge wijze verborgen worden door de resultaten van de juiste functieoproepen te wijzigen. Omdat de meeste antivirus- en antispywareprogramma's op deze oproepen steunen (bijvoorbeeld, voor het zoeken van bestanden om te scannen), zijn bestanden die door rootkits verborgen zijn niet zichtbaar voor een antivirusprogramma. Het apparaat kan geïnfecteerd zijn, maar een antivirusprogramma kan dit niet detecteren.

Rootkits op kernelniveau hebben enkele codes nodig om in de kernel geladen te kunnen worden (normaal gesproken een driver of .sys-bestand). Dit kunnen zij doen door de legitieme route te volgen die drivers op een laag niveau gebruiken (door middel van de service control manager services .exe), of door een paar niet gedocumenteerde manieren om code in de kernel te plaatsen. Eenmaal in het programma kan de code de resultaten van functieoproepen die in de kernel gemaakt worden of de kernelstructuur wijzigen.

Herken de rootkit

Er zijn twee manieren om de aanwezigheid van een rootkit op een geïnfecteerd apparaat te ontdekken: scannen en gebeurteniscontrole. Bij het scannen wordt gekeken naar geïnstalleerde programma's en of deze actief zijn op kernelniveau. Als er iets verborgen is, dan moet dit zichtbaar zijn in de kernel, maar niet in de gebruikersruimte. Onlangs is een aantal programma's beschikbaar gekomen die deze scans verrichten.

In principe is deze techniek goed - rootkits verbergen bronnen, dus is de beste manier om deze te achterhalen, het zoeken naar zaken die verborgen zijn. Er is echter een aantal zwakke plekken in deze aanpak. De eerste is dat als de kernel zelf geïnfecteerd is, de scan van de kernelruimte door de rootkit aangetast kan zijn.

Of dit al dan niet gebeurt hangt af van de details over hoe de scan en de rootkit precies geïmplementeerd zijn. Aangezien een groot deel van de Windows-kernel niet gedocumenteerd is, is het moeilijk om met zekerheid te stellen dat de scan de juiste resultaten geeft. Verder kunnen rootkits worden onttrokken aan de waarneming door zich te verbergen voor alle processen behalve voor de rootkitdetector.

Het alternatief is om gebruik te maken van een realtime monitoringsysteem dat doorlopend toezicht houdt om zo de rootkit te pakken op het moment dat deze geïnstalleerd wordt. Deze programma's worden vaak intrusion prevention systems (inbraakpreventiesystemen; ips) genoemd. Het is belangrijk dat er toezicht wordt gehouden op de werking van het programma vanuit de kernel. Ips-systemen die toezicht houden op gebruikersniveau zijn net zo kwetsbaar voor rootkits als elk ander programma.

Deze systemen kunnen het laden van kernelmodules detecteren en blokkeren. Het is echter onpraktisch om alle kernelmodules te blokkeren - veel legale programma's installeren kernelmodules. Een aantal antivirusprogramma's gebruikt bijvoorbeeld kernelmodules om op verzoek een scan uit te kunnen voeren.

Het is mogelijk om een beter oordeel te vellen of het laden van de module kwaadaardig is door te kijken naar andere eigenschappen van het installatieprogramma en andere verwante programma's. Terwijl een rootkit en een antivirusprogramma gedeelde acties kunnen hebben (bijvoorbeeld installeren in een kernelmodule), zijn er vele andere eigenschappen waarvan het minder waarschijnlijk is dat ze die delen.

Een rootkit kan bijvoorbeeld proberen niet op te vallen door geen zichtbaar venster te tonen, terwijl het antivirusprogramma laat zien dat het aanwezig is om de gebruiker gerust te stellen. Het rootkitprogramma kan ook een keylogger installeren, hetgeen men niet verwacht van een fatsoenlijk antivirusprogramma. Door verschillende gedragseigenschappen (zorgvuldig gekozen zodat zij het overeenkomende gedrag dat samengaat met kwaadaardige code kunnen vastleggen) is het mogelijk om op een betrouwbare manier rootkitprogramma's te traceren. Deze algemene aanpak met de term 'behavioral heuristics', kan in feite op een breder gebied toegepast worden, om ook andere soorten kwaadaardige codes zoals Trojans, bots en spyware te traceren.

Omdat dit type systeem is gebaseerd op heuristiek, kan het fouten maken (normale programma's classificeren als kwaadaardig). De normale techniek die gebruikt wordt om hier mee om te gaan is om uitsluitingslijsten te maken voor de algemene fouten, die vervolgens gehandhaafd dienen te worden.

Rootkits zijn ongetwijfeld een serieus en steeds groter probleem voor computergebruikers. Zij maken kwaadaardige code ontraceerbaar voor de meeste beveiligingssoftware. Zij werken door middel van het manipuleren van resultaten van functieoproepen, waar ze toegang toe krijgen door een keur aan mechanismen.

Het goede nieuws is dat ze traceerbaar zijn, waarvoor momenteel twee mechanismen voor handen zijn - een scantechnologie die ze kan traceren nadat ze geïnstalleerd zijn, en een systeem gebaseerd op gebeurtenissen dat ze aan kan pakken op het moment dat ze geïnstalleerd worden (door hun gedrag in de gaten te houden) - en dus het gevaar in de eerste plaats voorkomen.

Matthew Williamson is senior research scientist bij San Security Bron: Techworld