Met de beveiligingsarchitectuur van Windows NT als stand-alone systeem is weinig mis. Meestal draait dit systeem echter als server in een netwerk. En hoe is het dan met de beveiliging gesteld? Twee medewerkers van Kpmg doen een boekje open over de architectuur van de beveiliging, en vergelijken de veiligheid van NT met die van andere systemen.
Windows NT is Microsofts meest geavanceerde besturingssysteem. Het systeem dat begin jaren negentig op de markt kwam, is niet meer weg te denken uit de moderne IT-omgeving. Windows NT zal als gedoodverfd opvolger van Windows 98 ook op de desktop een dominerende rol gaan spelen. NT wordt wel een netwerkbesturingssysteem genoemd. Die term stamt nog uit de tijd dat er besturingssystemen zonder netwerkfunctionaliteit bestonden. NT stond destijds voor New Technology. Over de beveiliging van Windows NT doen veel sterke verhalen de ronde. Het systeem zou eenvoudig te verleiden zijn gevoelige gegevens prijs te geven. Ook zou het kwetsbaar zijn voor ‘denial of service’-attacks, waarbij het systeem op afstand wordt uitgeschakeld.
In dit artikel zetten we een aantal zaken op een rij. Hoe is de beveiliging binnen Windows NT geregeld? Kan Windows NT veilig in een netwerkomgeving worden ingezet? En hoe verhoudt Windows NT zich tot twee andere populaire server-besturingssystemen, Novell NetWare en Unix?
Knelpunten
Wat zijn de belangrijkste knelpunten bij het beveiligen van Windows NT?
Allereerst de implementatie. In software zitten nu eenmaal fouten. NT bestaat nog niet zo heel lang en kent daardoor nog veel verborgen fouten. Microsoft herstelt die fouten door service packs en hotfixes aan te leveren en nieuwe releases op de markt te brengen, die soms op hun beurt ook weer fouten bevatten. Soms blijven oude, onveilige systeemfuncties intact omdat ze moeten aansluiten op bestaande omgevingen. Een voorbeeld hiervan zijn de nog steeds in gebruik zijnde smb-protocollen (server message block, zie kader)
Ten tweede de configuratie. Windows NT is sterk gericht op flexibiliteit en gebruiksgemak. Hierdoor zijn de toegangsrechten op een vers geïnstalleerd systeem tamelijk royaal toegekend. De systeembeheerder zal de toegangsrechten achteraf zelf moeten insnoeren.
Het derde zwakke punt is het systeembeheer. Veel systeembeheerders werken onder tijdsdruk. In zo’n geval concentreer je je eerder op functionaliteit en beschikbaarheid dan op beveiliging. Bovendien is beveiliging lang niet ieders favoriete bezigheid. Veel systeembeheerders gaan slordig om met toegangsrechten, installeren noodzakelijke ‘service packs’ en ‘hotfixes’ te laat en laten de operationale bewaking voor wat het is.
De vierde zwakke plek is de gebruiker, en dan vooral de manier waarop deze met zijn gebruikersnaam en wachtwoord omspringt. Een overbekend probleem, waarvoor eigenlijk geen andere oplossing bestaat dan zorgvuldigheid en discipline – een bug fix zit er voorlopig niet in.
Windows NT in netwerkomgeving
Wie Windows NT als ‘standalone’-systeem bekijkt, zal moeten toegeven dat de beveiligingsarchitectuur van het systeem weinig reden tot klagen geeft. NT zet een traditie voort die is begonnen met de ontwikkeling van Multics in de jaren zeventig. NT kan zich meten met een systeem als VAX/VMS, dat in beveiligingskringen een goede reputatie geniet.
Het probleem is dat Windows NT zelden als stand-alonesysteem wordt gebruikt. In negen van de tien gevallen draait NT als server in een netwerk. En dan ontstaat een heel andere situatie. De veiligheid van een netwerkomgeving is immers niet alleen afhankelijk van het besturingssysteem, maar ook van alle andere netwerkcomponenten – van de kabels en de interfaces tot en met de protocollen en de applicaties.
De fundering van het netwerk is TCP/IP. Deze protocollen zorgen voor het transport en de routering van datapakketten door het netwerk en bieden een betrouwbaar communicatiekanaal voor de hoger gelegen applicatieprotocollen. Betrouwbaar is daarbij een rekbaar begrip. Een TCP/IP-verbinding is goed bestand tegen verlies en verminking van de berichtenstroom door min of meer toevallige oorzaken. Een TCP/IP-verbinding is echter niet bestand tegen het manipuleren van de berichtenstroom door een intelligente buitenstaander met geavanceerde tools. Het injecteren van valse datapakketten met valse IP-adressen en valse TCP-volgnummers is daarvan een bekend voorbeeld. Met andere woorden: de fundering van het netwerk deugt niet.
Maar hoe zit het dan met de ‘muren’? Niet veel beter. TCP/IP wordt gebruikt door protocollen die al of niet specifiek zijn voor een bepaalde applicatie. Er zijn een heleboel van dergelijke applicaties en protocollen in omloop. Wat ze met elkaar gemeen hebben, is dat ze vaak nauwelijks bestand zijn tegen onverwachte en ongewenste situaties, gemakkelijk crashen en soms de hele server tot stoppen brengen.
Een ander gebrek van veel applicatieprogramma’s is dat zij informatie die geheim zou moeten zijn, zoals een wachtwoord, zonder meer via een openbaar communicatiemedium uitwisselen. Dit maakt het voor aanvallers eenvoudig de informatie te achterhalen, namelijk door gewoon mee te luisteren. Het versleutelen van wachtwoorden kan daarbij uitkomst bieden. Helaas is de gebruikte encryptietechniek in veel gevallen zo makkelijk te kraken dat zij vrijwel geen bescherming biedt. Een voorbeeld hiervan is de oude Nhash-functie, die Windows NT gebruikt voor de versleuteling van wachtwoorden. Van recentere aard is de ophef rond Microsofts implementatie van het point-to-point tunneling protocol (pptp), dat werd gekraakt door de Amerikaanse cryptografen Schneier en Mudge.
Deugt de gebruikte encryptie wel, dan nog kan het versleutelde wachtwoord in veel gevallen worden gekraakt met een dictionary attack. Bij zo’n aanval vergelijkt de kraker het versleutelde wachtwoord met versleutelde woorden uit een woordenlijst en variaties daarvan, net zolang totdat het gezochte woord gevonden is. Op een doorsnee systeem werkt deze aanval voor circa 25 procent van de wachtwoorden. Ook voor het uitbuiten van deze zwakke plek zijn op Internet speciale tools te krijgen. De bekendste zijn L0phtcrack, nu ook met Windows-interface, en NTcrack.
Kennelijk is niet alleen de fundering zwak, maar vertonen ook de muren gaten. Die gaten zijn structureel. Een protocol dat eenmaal in gebruik is, kan in de praktijk nauwelijks meer worden aangepast. Hooguit zijn de slordigheden in de implementatie te verhelpen.
Vergelijking
Als we Windows NT vergelijken met Unix en Novell Netware, dan springen vooral de overeenkomsten in het oog. Toch zijn er ook verschillen.
Om met Unix te beginnen: volgens Ken Thompson, één van de twee bedenkers van dit populaire systeem, is Unix nooit ontworpen om veilig te zijn. Unix kent eigenlijk geen serieuze beveiligingsarchitectuur. Het beveiligen van een Unix-omgeving kost daardoor meer tijd en moeite dan het beveiligen van een NT-omgeving.
Novell Netware is specifiek ontwikkeld voor ‘file- en printsharing’. In de eerste Netware-versies zaten veel zwakke plekken, die begin jaren negentig met veel publiciteit zijn blootgelegd. In latere versies zijn oude lekken gedicht en is de beveiliging structureel verbeterd. Dit maakt de laatste versie van Netware tot een volwassen besturingssysteem, dat het in de markt steeds vaker tegen NT lijkt af te leggen.
Hoe verschillend de architecturen en implementaties van deze besturingssystemen ook zijn, de sterke en zwakke punten lijken erg op elkaar. NT heeft een sterke beveiligingsarchitectuur als voordeel, en een relatief jonge leeftijd als nadeel. Wat de drie systemen met elkaar gemeen hebben, is dat zij in een netwerkomgeving erg kwetsbaar zijn.
Onveilige netwerkomgeving
Windows NT is een sterk besturingssysteem. Met de beveiligingsarchitectuur van het systeem is niets mis. Versie 5.0 belooft op beveiligingsgebied verdere verbeteringen, zoals de invoering van het sterke authenticatiesysteem Kerberos en file-encryptie. Zwakke plekken treffen we aan in het systeem zelf, maar vooral in de manier waarop we er mee omgaan. En dat laatste valt Microsoft niet aan te rekenen.
Wie Windows NT vergelijkt met Novell NetWare en Unix moet vaststellen dat deze systemen elkaar in beveiligingsopzicht niet veel ontlopen. Met de veiligheid van moderne netwerkomgevingen is het – met of zonder Windows NT – mager gesteld. De fundering is zwak, de muren kieren en het dak lekt. Daar lijkt op dit moment weinig aan te doen. Maar is dat een reden om helemaal geen maatregelen te treffen? Wie een beetje zijn best doet, kan veel narigheid voorkomen. En voor de meeste toepassingen is dat goed genoeg.
J. van der Vlugt en E. Roos Lindgreen zijn werkzaam bij Kpmg EDP Auditors
Architectuur Windows NT
Net als bij het bouwen van een huis of een auto is een goed ontwerp een eerste voorwaarde voor een veilig en betrouwbaar besturingssysteem. Beveiliging moet direct in het ontwerp worden meegenomen. Dat is bij Windows NT gelukkig wel het geval.Figuur 1. Logische structuur Windows NT
Het besturingssysteem is ontworpen door Dave Cutler, die daarvoor bij Digital naam had gemaakt als hoofdontwerper van het hoogwaardige besturingssysteem VAX/VMS. Het is geen toeval dat Windows NT veel kenmerken van VMS in zich draagt.
Windows NT is een klassiek besturingssysteem met een hiërarchische opslagstructuur, een modulaire opzet, een kleine kernel en een ‘reference monitor’. Voeg daarbij uitgebreide audit-functies en de mogelijkheid om een NT-omgeving in domeinen op te splitsen, en je hebt de basisingrediënten voor een sterke beveiligingsarchitectuur.
Deze architectuur kent vier belangrijke aspecten: het logische beveiligingsmodel, de technische structuur van het besturingssysteem, het inlogproces en de uiteindelijke toegang tot objecten.
Logisch beveiligingsmodel
NT verschaft gebruikers toegang tot gegevens. Gebruikers worden in NT vertegenwoordigd door subjects, die overeenkomen met processen. Objects daarentegen zijn systeemresources, zoals cpu-tijd en files met gegevens (zie figuur 1).
De centrale component die de toegang van subjecten tot objecten bewaakt, is de local security authority (lsa). Deze module maakt gebruik van een aantal hulpmodules voor identificatie, authenticatie en autorisatie. Eén van de belangrijkste hiervan is de security reference monitor.
De lsa en andere processen gebruiken de registry waarin vrijwel alle configuratiegegevens zijn opgeslagen; zowel die van de objects als van de gebruikersaccounts, in de SAM-database. De registry is een enorm geheel met vele honderden parameters, waarvan een groot deel met beveiliging te maken heeft.
In de logging kunnen vele soorten gewenste en ongewenste acties van lopende processen worden vastgelegd. Daarnaast zijn toegangspogingen tot objecten te loggen.
Technische structuur van NT
Windows NT is een modulair systeem (zie figuur 2). NT kent twee verschillende modes waarin processen kunnen draaien: de user mode en de kernel mode.Figuur 2. Structuur Windows NT (4.0)
In de ‘kernel mode’ draaien de processen die samen het besturingssysteem (NT Executive) vormen. Het hart van NT is de microkernel. Deze module bevat een beperkt aantal subroutines die te allen tijde beschikbaar moeten zijn. De communicatie tussen ‘kernel mode’-processen onderling is
niet expliciet beveiligd. In de ‘user mode’ draaien de overige processen. Alle processen in deze ‘mode’ hebben de beschikking over proces-eigen geheugenruimte die geen toegang biedt aan andere processen. De communicatie tussen ‘kernel mode’-processen en ‘user mode’-processen wordt gecontroleerd door de lsa (en de ‘security reference monitor’).
De security reference monitor (srm) beheert de objectbeveiliging. De srm geeft ook audit-berichten af, die door de lsa worden gelogd.
Inloggen
Het inlogproces van Windows NT verloopt in een aantal stappen, waarbij het systeem de identiteit en de autorisatie van de gebruiker controleert. NT kent een security attention sequence (sas), meestal Ctrl-Alt-Del, zodat de gebruiker zeker weet dat hij het juiste systeem benadert.
Het verloop van het inlogproces is mede afhankelijk van de NT-omgeving: betreft het een netwerkomgeving of een ‘standalone’-systeem? In het eerste geval worden de wachtwoorden volgens een cryptografisch protocol over de lijn gestuurd en vindt authenticatie op de server plaats. Met behulp van een filter kan het gebruik van niet-triviale wachtwoorden worden afgedwongen.
Voor het inlogproces wordt het server message block (smb) protocol gebruikt. Hieraan zijn bekende beveiligingsrisico’s verbonden. Vanaf Service Pack 3 is een gewijzigde versie van het smb- authenticatieprotocol opgenomen, bekend als het common internet file system (cifs) protocol.
Toegang tot objecten
Alle benoemde objecten en processen hebben in Windows NT security descriptors waarin access control lists (acl’s) zijn opgenomen.
In een discretionary acl (dacl) is onder meer vastgelegd welk subjecten toegang hebben tot het desbetreffende object. Daarbij kunnen toegangsrechten expliciet worden aan- of uitgezet. Is de dacl leeg, dan heeft geen enkel subject toegang. Is de dacl niet gedefinieerd, dan hebben alle subjects toegang. Ieder object kent een eigenaar, die in principe de controle heeft over een object en de bijbehorende toegangsrechten. De eigenaar bepaalt de rechten en kan deze aan individuele gebruikers of groepen toekennen. Toegangsrechten zijn cumulatief: een gebruiker heeft de gecombineerde rechten van alle groepen waarin hij voorkomt. Toegang wordt alleen verleend indien voor het subject alle gewenste toegang tot het object in de dacl is ‘verzameld’.
De ‘registry’ en alle daarin aanwezige keys en subkeys zijn objecten; zij zijn daarom net zo te beveiligen als directories en files. Hetzelfde geldt voor printers. Wordt een gebruiker van het systeem verwijderd, dan blijven de dacl’s intact een klein slordigheidje.