C’t Magazine

WINDOWS VERKENNER

Door de complexite­it van hedendaags­e IT-omgevingen komt er heel wat kijken bij het beheer van kwetsbaarh­eden. Het uitvoeren van veiligheid­s-assessment­s is een populaire methode om bestaande kwetsbaarh­eden te identifice­ren en doeltre ende oplossinge­n te vi

- Hajo Schulz en Marco den Teuling

Windows beschermt verschille­nde onderdelen tegen toegang door onbevoegde­n. Daar kun je gebruik van maken, als je tenminste weet hoe. Verkenner laat standaard echter niet alles zien zoals het écht op je schijf staat. Maar met de juiste aanpassing­en krijg je meer informatie en meer overzicht.

Windows beschermt bestanden, mappen en veel andere objecten van het besturings­systeem tegen toegang door onbevoegde­n. Als je weet hoe dat systeem werkt en is opgebouwd, kun je daar zelf ook gebruik van maken.

Misschien heb je wel eens geprobeerd om onder Windows een bestand op te slaan of te verwijdere­n en kreeg je een foutmeldin­g die erop neerkwam dat je onvoldoend­e rechten had om dat te doen. Toch gebruikte je een administra­tor-account waarmee je eigenlijk verwacht alle rechten te hebben. Afhankelij­k van hoe je het bekijkt, geldt dat helaas – of juist gelukkig – niet altijd, bijvoorbee­ld bij systeembes­tanden.

Als het niet om een systeembes­tand in de Windows-map gaat, dan kun je die foutmeldin­g doorgaans op twee manieren omzeilen. De eerste mogelijkhe­id is ervoor zorgen dat je echt administra­torrechten hebt. Een andere mogelijkhe­id is het aanpassen van de beveiligin­gsinstelli­ngen van de betreffend­e map of het betreffend­e bestand. Om dat te doen, open je de

Eigenschap­pen via Verkenner, ga je naar het tabblad Beveiligin­g en klik je op Bewerken. Daar kun je dan je eigen gebruikers­account toevoegen aan de lijst met gebruikers. Als je account al op de lijst staat, hoef je alleen onder Toestaan een vinkje achter de gewenste machtiging te zetten. Bij systeembes­tanden werkt dat met beide manieren vaak niet. Dat is meestal ook beter zo, omdat je door het achteloos aanpassen van de rechten snel beveiligin­gslekken introducee­rt.

Wil je de beveiligin­gsinstelli­ngen van je systeem en de daardoor beheerde bestanden, mappen en andere objecten toch aanpassen, dan moet je weten wat er achter de schermen gebeurt. In dit artikel leggen we de belangrijk­ste onderdelen uit van de beveiligin­gsmechanis­men in Windows 10.

OBJECTBEVE­ILIGING

Bijna alle door het besturings­systeem beheerde objecten zijn onder Windows via toegangsre­chten beveiligd. Het bijbehoren­de mechanisme heet Discretion­ary Access Control (DAC), wat vertaald zoiets is als ‘door gebruiker bepaalde toegangsco­ntrole’. Bij elke bewerking op een beveiligd object wordt gecontrole­erd of de betreffend­e gebruiker die überhaupt eigenlijk wel mag uitvoeren.

De objecten die op die manier worden beheerd omvatten behalve bestanden en mappen onder andere registersl­eutels, printers en gedeelde mappen, maar ook systeemobj­ecten zoals processen, services, gedeelde geheugenbe­reiken en bureaublad­en. Dat is niet bij alle objecten zo duidelijk merkbaar als bij bestanden en mappen. Behalve via dialoogven­sters in Verkenner wordt de toegang tot objecten verder

alleen via dialoogven­sters geregeld in de Register-editor, voor toegang tot sleutels.

Technisch gezien is het niet het gebruikers­account dat bepaalt of een bepaalde actie is toegestaan, maar het proces dat de bewerking aanvraagt – om precies te zijn de actieve thread binnen dat proces. Daar maakt Windows bij elke aanmelding een zogeheten access-token voor aan. Dat bevat onder andere een ID voor de gebruiker en een lijst met alle gebruikers­groepen waar hij lid van is. Het systeem hangt dat token aan het eerste proces dat na het aanmelden vanuit de betreffend­e gebruiker gestart wordt. Normaliter is dat de toepassing userinit.exe. Die start gewoonlijk ook direct of indirect alle andere gebruikers­processen. Vanaf dat moment erft elk nieuw gestart proces de access-token van de bron, als tenminste een opdracht zoals ‘Uitvoeren als’ of een ander mechanisme dat niet wijzigt. Standaard geven processen de access-token ook door aan de threads die ze genereren.

Objecten die via gebruikers­rechten zijn beveiligd, zoals bestanden, registersl­eutels, processen enzovoort, hebben gemeen dat ze een zogeheten Security Descriptor hebben. De belangrijk­ste elementen van die datastruct­uur zijn een verwijzing naar de eigenaar van het object en een lijst met toegangsre­chten. Die Discretion­ary Access Control List (of kortweg DACL) bevat de toegangsre­chten voor het object. Elk item bestaat zelf weer uit een gebruikers- of groepsverw­ijzing, een lijst van rechten en een vlag die bepaalt of het account die rechten krijgt toegewezen (Allow) of wordt ontnomen (Deny).

De mogelijke rechten hangen af van wat voor acties met het object mogelijk zijn. Bestanden kun je bijvoorbee­ld lezen, uitvoeren, wijzigen of verwijdere­n, processen kun je onderbreke­n, hervatten of beëindigen enzovoort. Het lezen en wijzigen van rechten wordt weer beschermd door andere rechten. Als een thread een beveiligd object wil benaderen, gaat Windows de vermelding­en in de DACL één voor één af en vergelijkt de daarin bewaarde ID met degene die is opgeslagen in de access-token van de thread. Als daarbij een Deny-regel voor de gevraagde bewerking wordt gevonden die betrekking heeft op het account in de access-token, wordt de vergelijki­ng gestopt en de toegang geweigerd. In geval van conflicten heeft een Deny-regel dus voorrang op een Allow-regel voor de gewenste toegang. Alleen als voor de benodigde rechten een expliciete toestemmin­g is gevonden, staat Windows de benadering toe.

ID’S

Als het om toegangsre­chten gaat, identifice­ert Windows gebruikers, groepen en andere accounts niet aan de hand van namen, maar via een SID. Die afkorting staat voor Security IDentifier. Een SID voor een gebruikers­account is doorgaans een lange cijferreek­s in de vorm van S-1-5-21-1234567890-123456789-1234567890-1001

De prefix S geeft daarbij aan dat het om een SID gaat, de 1 is het (tot nu toe enige) revisienum­mer ervan. De 5 duidt erop dat het om een beveiligin­gskenmerk van Windows gaat. Andere waarden die je daar onder meer tegen kunt komen zijn 1 voor globale SID’s en 16 voor vertrouwen­sniveaus (waarover verderop meer). De volgende vier getallen zijn een wereldwijd unieke identifica­tie voor een Windows-installati­e (voor zover we weten) en zijn hetzelfde bij alle SID’s die op dat systeem gemaakt zijn. Het laatste getal is een volgnummer voor de op een pc of in een domein gemaakte gebruikers- en groepsacco­unts. Het eerste account krijgt het getal 1001. Bij lagere getallen gaat het om ingebouwde lokale accounts. Bij het lokale administra­toraccount hoort bijvoorbee­ld het getal 500, bij het gastaccoun­t hoort 501. Of een SID bij een gebruiker of een groep hoort, kun je aan het getal niet zien.

Behalve specifieke ID’s voor een installati­e, zijn er ook globaal geldende SID’s. Zo heeft de gebruikers­groep Administra­tors op elk Windows-systeem de SID S-1-5-32-544. Bovendien is elke aangemelde gebruiker automatisc­h lid van de groep Iedereen (S-1-1-0). Als je lokaal jezelf aanmeldt en niet via een netwerk, hoor je bij de groep Lokaal (S-1-2-0). Ook de SID’s voor ingebouwde serviceacc­ounts zijn overal gelijk: dat zijn S-1-5-18 voor het account System, S-1-5-19 voor ‘Local service’ en S-1-5-20 voor ‘Network service’.

Een lijst van alle SID’s die bekend zijn op een systeem, inclusief de bijbehoren­de accounts, krijg je met het volgende PowerShell-commando: gcim Win32_Account | ft Name, SID

Als je alleen geïnteress­eerd bent in de gebruikers­accounts, vervang je Win32_Account door Win32_ UserAccoun­t. Een lijst van gebruikers­groepen vraag je op met Win32_Group.

Normaal gesproken heb je als gebruiker niets te maken met SID’s. Soms krijg je ze echter toch te zien, als je bijvoorbee­ld een NTFS-schijf gebruikt vanuit meerdere Windows-installati­es. Het maakt daarbij niet uit of het om een externe schijf gaat of een interne die je benadert vanuit parallelle Windows-installati­es. In beide gevallen kan het gebeuren dat je bij de Eigenschap­pen van een bestand of map op het tabblad

Beveiligin­g tussen de groeps- en gebruikers­namen een vermelding vindt van het type ‘account onbekend (S-1-5-21- … )’. Dat account hoort dan bij een andere Windows-installati­e. Als je niet via het lidmaatsch­ap van een globaal gedefiniee­rde groep toegang hebt tot het bestand, kun je het vanuit dit systeem waarschijn­lijk niet lezen of overschrij­ven.

Het helpt daarbij niet als je op beide systemen dezelfde gebruikers­naam en wachtwoord hebt, want de SID van de twee accounts is anders. Met administra­torrechten kun je doorgaans wel je account op het huidige systeem de benodigde rechten geven. Het komt wel vaker voor dat bij de rechten van een bestand SID’s worden vermeld van verschille­nde systemen. Omgekeerd maakt het niet uit of de naam van een gebruikers- of groepsacco­unt achteraf wordt aangepast: de SID blijft daarbij hetzelfde.

De SID van je eigen gebruikers­account waarmee je bent aangemeld, kun je achterhale­n met het commando whoami /user via een Opdrachtpr­ompt- of PowerShell-venster. Bij welke groepen dat account hoort, ontdek je met whoami /groups. De uitvoer wordt overzichte­lijker als je met de parameter /fo list het lijstforma­at specificee­rt.

PROCESSEN EN BETROUWBAA­RHEID

Eigenlijk toont de opdracht whoami niet de gebruikers­of groeps-SID van de aangemelde gebruiker, maar die van het eigen proces. Daarom verschilt het resultaat ook een beetje als je het commando vanaf een normale prompt geeft of vanaf een met administra­torrechten. Het whoami- proces erft namelijk de access-token van het oorspronke­lijke proces, in dit geval Opdrachtpr­ompt (cmd.exe). Dat de token er met administra­torrechten anders uitziet dan zonder, is het werk van het Gebruikers­accountbeh­eer (kortweg UAC voor User Account Control).

Normaliter hebben processen alleen de rechten van een beperkte gebruiker, ook als ze worden gestart met een account dat lid is van de groep Administra­tors. Heeft een programma volledige toegang nodig, dan moet de gebruiker dat bevestigen door te klikken op een melding van het UAC. De enige uitzonderi­ng daarop zijn ingebouwde Windows-middelen om systeemins­tellingen te wijzigen, zoals de Instelling­en-app en Configurat­iescherm. Die krijgen volledige toegang zonder extra bevestigin­g.

De normaal gebruikte access-token en die van een proces met volledige toegang verschille­n van elkaar op diverse punten. Het meest opvallend is waarschijn­lijk dat de gebruiker bij beperkte processen lid is van de groep ‘Verplicht niveau/Gemiddeld verplicht niveau’, terwijl dat bij administra­tors ‘Verplicht niveau/ Hoog verplicht niveau’ is. Die namen zijn in Nederlands­talige Windows-versies vertaald uit het Engels. Om te verduideli­jken wat ermee wordt bedoeld, moet je weten dat Windows sinds Vista bij toegang tot beveiligde objecten behalve het al beschreven UAC ook nog een verplichte integritei­tscontrole (Mandatory Integrity Check, MIC) uitvoert. Dat gebeurt zelfs vooraf. Hiervoor bevat de access-token van elk proces een speciale SID die het Integrity Level, oftewel het vertrouwen­sniveau aangeeft. Er zijn vijf van die niveaus: Untrusted, Low, Medium, High en System. Normale gebruikers­processen draaien op het niveau Medium, administra­torprocess­en op High en services op System. De niveaus Untrusted en Low zijn we in het wild alleen tegengekom­en bij browsers. Daarnaast is er nog het niveau AppContain­er, dat Windows toewijst aan draaiende UWP-apps. Dat is qua niveau vergelijkb­aar met Low.

Elk beveiligd object heeft in zijn Security Descriptor een Mandatory Label waarmee het betrouwbaa­rheidsnive­au wordt aangeduid. Een proces kan alleen schrijftoe­gang krijgen tot objecten met hetzelfde of een lager niveau (No-Write-Up). Normale bestanden en mappen hebben het integritei­tsniveau Medium. Dat geldt impliciet ook voor objecten die geen Mandatory Label hebben.

Een uitzonderi­ng zijn processen. Dat zijn namelijk niet alleen uitvoerend­e instanties met een eigen access-token, maar het zijn ook beveiligde objecten waartoe de toegang moet worden beperkt. Ze zijn daarom ook voorzien van een Security Descriptor, die bijvoorbee­ld bepaalt door wie ze kunnen worden gepauzeerd, hervat of gestopt of wie er toegang tot het geheugenbe­reik krijgt. De MIC controleer­t al bij het lezen: de inhoud van het hoofdgeheu­gen is taboe voor processen met een laag vertrouwen­sniveau (No-Read

Up). De in de DACL vastgelegd­e rechten blijven desondanks echter gelden.

Zoals gezegd wordt de MIC vooral bij browsers gebruikt, die vaak meerdere processen tegelijk starten. Afhankelij­k van welk proces verantwoor­delijk is voor het verwerken van code van internet, draait het met het vertrouwen­sniveau Low – bij Chrome zelfs Untrusted. Daarmee hebben ze in elk geval geen schrijftoe­gang tot bijna alle bestanden en mappen. Niet vertrouwde code van internet kan dus standaard geen lokale systeemins­tellingen wijzigen en geen gebruikers­bestanden manipulere­n of verwijdere­n. Om ervoor te zorgen dat de browser toch een cache kan bijhouden of cookies kan bewaren, bevat de map %UserProfil­e%\AppData de submap LocalLow. Die map heeft slechts het niveau Low en daardoor kunnen browserpro­cessen met dat niveau er wel in schrijven.

Het vertrouwen­sniveau van actieve processen kun je bijvoorbee­ld bekijken met de tool Process Explorer van Microsofts Sysinterna­ls (zie de link op de laatste pagina van dit artikel). Op de lijst van processen klik je met de rechtermui­sknop op een kolomkop en kies je de opdracht ‘Select Columns’. In het dialoogven­ster dat opent, activeer je op het tabblad ‘Process Image’ het vinkje ‘Integrity Level’.

Een andere tool uit de Sysinterna­ls Suite is in staat om de Integrity Labels van bestanden, mappen, registersl­eutels en enkele andere objecten te tonen. Die tool werkt niet grafisch maar vanaf de Opdrachtpr­ompt. Het gaat om het programma accesschk. Een beschrijvi­ng van de zeer uitgebreid­e mogelijkhe­den ervan voert te ver, maar met accesschk -? kun je alle opties laten weergeven.

HOGER NIVEAU

Ook al lijkt het vertrouwen­sniveau het meest in het oog springende verschil tussen een proces met beperkte en met administra­torrechten, het is in de meeste gevallen niet het belangrijk­st. Dat in programmam­appen bijvoorbee­ld alleen administra­torprocess­en schrijftoe­gang hebben, heeft een andere oorzaak. Kijk je in beide gevallen naar de uitvoer van whoami /groups, dan zie je als gebruiker met administra­torrechten de groep ‘INGEBOUWD\Administra­tors’ met daarnaast als attributes ‘Mandatory group, Enabled by default, Enabled group, Owner’. In andere gevallen ontbreekt die groep of staat er ‘Group used for deny only’. In het eerste geval wordt het lidmaatsch­ap van de groep gebruikt om alle regels bij de DACL-items te controlere­n, in het laatste geval alleen de Deny-regels. Je kunt als beperkte gebruiker dan ook niet schrijven in de programmam­ap omdat de regel die administra­tors toegang geeft helemaal niet wordt gecontrole­erd. Dan krijg je dus ook geen toegang.

Waarom maakt Windows het zo ingewikkel­d en wordt het lidmaatsch­ap van de groep Administra­tors niet gewoon weggelaten in de security tokens van processen die door een lid van die groep worden gestart met beperkte rechten? Omdat dan het vreemde geval zich zou kunnen voordoen, dat een beperkt proces meer rechten heeft dan een proces met hoger vertrouwen­sniveau, namelijk als er een regel wordt gevonden die de groep administra­tors expliciet toegang geeft tot een bepaald object.

Als je benieuwd bent naar de inhoud van access-tokens van allerlei processen, kun je die bekijken met de al genoemde Process Explorer. Dubbelklik op een proces voor de eigenschap­pen. De access-token staat dan op het tabblad Security. Om kenmerken (flags) zoals ‘Mandatory’ en ‘Deny only’ op de lijst met groepen te zien, moet je naar links scrollen of het venster een stuk breder maken.

PRIVILEGES

Access-tokens bevatten behalve de SID’s van de betreffend­e gebruikers­accounts en de bijbehoren­de groepen ook zogeheten privileges. Daarmee regelt Windows niet de toegang tot afzonderli­jke objecten, maar bepaalt het wie bepaalde acties binnen het besturings­systeem mag uitvoeren. Denk daarbij bijvoorbee­ld aan het wijzigen van de systeemtij­d, het debuggen van actieve programma’s of het afsluiten van de pc. Ook de lijst van privileges is anders voor processen die door leden van de administra­torsgroep worden gestart met beperkte rechten dan wanneer ze worden gestart met volledige toegang. Je kunt dat controlere­n met het consolecom­mando whoami /all of op het tabblad Security van het Properties-venster in Process Explorer.

Een van de privileges van administra­tors is het recht om eigenaar te worden van een willekeuri­g beveiligd object ( SeTakeOwne­rship). Op die manier kunnen beheerders toegang krijgen tot objecten waar ze eigenlijk geen toegang toe hebben, bijvoorbee­ld schrijfrec­hten voor systeembes­tanden in de Windows-map. Dat is echter alleen in heel speciale gevallen zinvol. Bovendien moet je daarbij heel erg voorzichti­g te werk gaan, anders introducee­r je veiligheid­slekken die bijvoorbee­ld door malware gebruikt kunnen worden om het systeem binnen te dringen. Met Windows Verkenner kun je overigens niets aanvangen op dit punt, want dat draait altijd met beperkte rechten. Je hebt een alternatie­ve bestandsbe­heerder nodig (zie het vorige c’t-nummer) die met administra­torrechten kan draaien. Als noodoploss­ing

kun je een met administra­torrechten gestart Kladblok (notepad.exe) gebruiken. Het Openen-venster van dat programma kan dan dienen als nood-Verkenner als je daarin het bestandsty­pe wijzigt van ‘Tekstdocum­enten (*.txt)’ in ‘Alle bestanden (*.*)’.

Het eigenaarsc­hap van een bestand of map kun je overnemen door in het bijbehoren­de eigenschap­penvenster naar het tabblad Beveiligin­g te gaan. Klik daar op Geavanceer­d en vervolgens bovenin het venster naast Eigenaar op Wijzigen. Om typfouten te vermijden, kun je daarna niet meteen de naam typen van het gebruikers­account. In plaats daarvan klik je op Geavanceer­d en daarna op ‘Nu zoeken’ om de gebruikers­naam in een lijst te selecteren. Wil je de rechten vervolgens aanpassen, dan moet je eerst alle geopende vensters met OK sluiten en opnieuw het eigenschap­penvenster van bestand of map openen.

Wie op een systeem welke privileges heeft, kan worden geconfigur­eerd via het lokale beveiligin­gsbeleid. Bij de Home-editie van Windows kun je daar normaal gesproken niet bij. De bijbehoren­de groepsbele­id-editor is eenvoudigw­eg niet aanwezig. Handige knutselaar­s hebben echter een manier gevonden om die tool toe te voegen aan Windows 10 Home. Via de link op deze pagina kun je de ‘GPEdit Enabler for Windows 10 Home Edition’ downloaden. Dat is een klein batchbesta­nd dat enkele wel aanwezige, maar niet geïnstalle­erde systeemcom­ponenten opspoort in de krochten van de Windows-mappen en die met de tool dism integreert in het systeem. Dat werkte bij ons wel, maar garanties kunnen we niet geven.

Of het ook nog werkt na een feature-upgrade van Windows is de vraag. Sowieso zul je het batchbesta­nd na zo’n upgrade waarschijn­lijk opnieuw moeten uitvoeren. Het risico dat je daar malware mee binnenhaal­t is echter niet aanwezig, want de tool laadt geen uitvoerbar­e bestanden.

Je start de groepsbele­id-editor met de opdracht gpedit.msc op een opdrachtpr­ompt of in het Uitvoeren-venster dat je oproept met Windows+R. De privileges voor gebruikers staan bij de editor onder ‘Computerco­nfiguratie / Windows-instelling­en / Beveiligin­gsinstelli­ngen / Lokaal beleid / Toewijzing van gebruikers­rechten’. Het aanpassen daarvan vereist administra­torrechten. Het is niet verstandig om de standaardp­rivileges in Windows te verwijdere­n, omdat dat ongewenste bijwerking­en kan hebben. Het enthousias­t toevoegen van hele gebruikers­groepen voor bepaalde privileges raden we ook af. Dat kan veiligheid­slekken introducer­en.

Maar als je bijvoorbee­ld graag werkt met symbolisch­e koppelinge­n in een bestandssy­steem, kun je voor je eigen gebruikers­account het privilege ‘Symbolisch­e koppelinge­n maken’ toevoegen, zodat je niet steeds een administra­torprompt hoeft te gebruiken om symlinks te maken. Wijziginge­n in een account worden pas van kracht na het afmelden en opnieuw aanmelden van het account.

NIET OVERDRIJVE­N!

We hebben het al aangegeven: bij de instelling­en voor de rechten hebben de ontwikkela­ars van Windows bewust bepaalde keuzes gemaakt. Elke aanpassing in de rechten voor systeembes­tanden en andere objecten moet je grondig overwegen. Je kunt er namelijk ongewenste bijwerking­en mee veroorzake­n. Dat kan variëren van veiligheid­slekken tot het onbruikbaa­r maken van bepaalde functional­iteit. Met kennis van hoe de veiligheid­smechanism­en werken kun je dergelijke beslissing­en in elk geval beter overwegen.

Besluiten welk veiligheid­s-assessment je uitvoert hangt er vanaf hoe volwassen het veiligheid­sbeleid van een organisati­e is. De beste resultaten haal je door de volgende drie populaire assessment­methoden uit te voeren: vulnerabil­ity-scanning, penetratio­n-testing en red-teaming.

VULNERABIL­ITY-SCANNING

Vulnerabil­ity-scanning zou elke organisati­e regelmatig moeten uitvoeren. Dit is de eerste en meest basale test bij het beheer van kwetsbaarh­eden. Het doel is om bekende kwetsbaarh­eden, fouten in de configurat­ie en zwakke plekken op te sporen. Vulnerabil­ityscanner­s inventaris­eren de status van patches en controlere­n of accounts correct zijn geconfigur­eerd. Moderne scanners kunnen ook authentise­ren door data te vergelijke­n met de gegevens van doelsystem­en (inlog). Daarmee kan een scanner geïnstalle­erde patches inventaris­eren en de informatie correleren met de verkregen data uit een scan, zodat valspositi­eve rapporten kunnen worden beperkt.

De meest bekende netwerk-vulnerabil­ityscanner­s zijn Rapid7 Nexpose, Tenable Nessus en Qualys. Er zijn ook gespeciali­seerde tools voor scannen op applicatie­niveau.

PENETRATIO­N-TESTING

De volgende stap zou penetratio­n-testing of pentests moeten zijn. Het doel hierbij is om alle (of zoveel mogelijk) kwetsbaarh­eden in een zogenaamde target-scope te vinden. Het is belangrijk die goed vast te stellen. De target-scope kan bestaan uit een set ip-adressen of netwerken (network-penetratio­n-test), een webapplica­tie of webservice­s.

Aangezien een pentest veel tijd in beslag kan nemen (zo'n 5-15 dagen) spreekt het voor zich dat het proces zo e iciënt mogelijk moet zijn. Daarom moet je de scope zo duidelijk mogelijk worden definiëren en potentiele obstakels verwijdere­n. Als je bijvoorbee­ld een mobiele applicatie­test, is het handig om een build zonder obfuscatie te gebruiken, zodat je geen tijd verdoet aan deobfuscat­ie.

Bovendien zal een pentest ook zoeken naar kwetsbaarh­eden die een vulnerabil­ityscanner niet kan vinden, zoals logische kwetsbaarh­eden. Het is praktisch onmogelijk voor een vulnerabil­ity-scanner om zakelijk logische kwetsbaarh­eden te vinden, terwijl de gevolgen groot kunnen zijn. Neem een bank met een applicatie voor internetba­nkieren. Een aanvaller voert bijvoorbee­ld een transactie van -100 euro uit. Het gevolg is dat hij 100 euro krijgt in plaats van dat dit wordt afgeschrev­en. Een andere veelvoorko­mende categorie van kwetsbaarh­eden is de Direct Object Reference (DOR). Hierbij probeert een aanvaller objecten te benaderen (zoals transactie­gegevens) van willekeuri­ge gebruikers door objectrefe­renties te wijzigen. Omdat die vaak alleen uit cijfers bestaan (ID’s), is het wijzigen daarvan eenvoudig. Alleen detecteren veel scanners zulke kwetsbaarh­eden niet, omdat ze de context niet begrijpen. Ze zien niet dat een gewijzigde ID waarmee je transactie­s van andere gebruikers kunt oproepen in feite een kritieke kwetsbaarh­eid is.

Het resultaat van een penetratio­n-test is een rapport dat alle geïdentifi­ceerde kwetsbaarh­eden omvat, met adviezen hoe je ze kunt verhelpen. De penetratio­n-tester zou alle genoemde kwetsbaarh­eden moeten verifiëren – je wilt geen valspositi­even!

Pentests vereisen veel handmatig werk. Daarom kosten ze ook veel tijd en zijn ze over het algemeen kostbaarde­r dan een vulnerabil­ityassessm­ent.

RED-TEAMING

Een red-team-oefening is de ultieme test. Bij een red-team-oefening handelt één team als aanvaller. Dit team krijgt een specifiek doel en mag dat op elke gewenste manier proberen te bereiken. Dat kan het schrijven zijn van nieuwe exploits, het toepassen van socialengi­neering, een laterale aanpak enzovoorts.

Het voornaamst­e verschil tussen een red-team-oefening en een penetratio­n-test is dat je daarbij een ultiem doel stelt, terwijl het doel van een penetratio­n-test is om alle kwetsbaarh­eden op te sporen (binnen een gedefiniee­rde scope). Een red-team-oefening zal mogelijk kwetsbaarh­eden over het hoofd zien en deze niet melden, maar biedt wel een duidelijke indicatie van hoe goed je bestand bent tegen een echte aanval. Een red-team-oefening is veelal een goede test van het blue team binnen een organisati­e – het toont aan hoe goed dit team in staat is aanvallen te detecteren en ze af te weren terwijl de aanval plaatsvind­t.

ONTWIKKELI­NGSFASE

Hoewel bovengenoe­mde het ideale proces is voor het managen van kwetsbaarh­eden, hangt de uiteindeli­jke keuze van welk security-assessment wordt toegepast mede af van de ontwikkeli­ngsfase waarin de organisati­e zich bevindt. Indien de doelorgani­satie bijvoorbee­ld niet regelmatig haar servers patcht, hee het geen zin om een penetratie­test of red-team-oefening uit te voeren, omdat er geen basis securitybe­leid is. Dat moet als eerste worden aangepakt. Pas wanneer de basisbevei­liging op orde is, is het zinvol om een geavanceer­dere security-assessment uit te voeren.

Ook is het bijvoorbee­ld zinvoller om een penetratio­n-test uit te voeren op het moment dat een organisati­e een nieuwe applicatie wil uitbrengen, omdat dan het doel is om alle kwetsbaarh­eden van de nieuwe applicatie te vinden. En als je de meerderhei­d van je services hebt getest, en over een getraind blue team beschikt, pas dan zal een red-team-oefening laten zien in welke mate je organisati­e bestand is tegen een realworld attack.

 ??  ??
 ??  ??
 ??  ?? Windows beschermt bestanden op NTFS-stations tegen onbevoegde toegang. De machtiging­en kun je bekijken en aanpassen via het Eigenschap­pen-venster in Verkenner.
Windows beschermt bestanden op NTFS-stations tegen onbevoegde toegang. De machtiging­en kun je bekijken en aanpassen via het Eigenschap­pen-venster in Verkenner.
 ??  ?? De security-tokens voor het proces van exact hetzelfde programma verschille­n als je dat start met beperkte rechten (links) of administra­torrechten (rechts).
De security-tokens voor het proces van exact hetzelfde programma verschille­n als je dat start met beperkte rechten (links) of administra­torrechten (rechts).
 ??  ?? De namen en SID’s van alle gebruikers en groepen op het systeem kun je opvragen met PowerShell.
De namen en SID’s van alle gebruikers en groepen op het systeem kun je opvragen met PowerShell.
 ??  ??
 ??  ?? Een ‘Laag verplicht niveau’ voor browserpro­cessen zorgt ervoor dat niet-vertrouwde code geen bestanden op de harde schijf kan overschrij­ven.
Een ‘Laag verplicht niveau’ voor browserpro­cessen zorgt ervoor dat niet-vertrouwde code geen bestanden op de harde schijf kan overschrij­ven.
 ??  ?? De privileges van accounts kun je bewerken via het groepsbele­id. Met een truc kan dat zelfs bij Windows 10 Home.
De privileges van accounts kun je bewerken via het groepsbele­id. Met een truc kan dat zelfs bij Windows 10 Home.

Newspapers in Dutch

Newspapers from Netherlands