Les 9: Afscherming en beveiliging

Slides:



Advertisements
Verwante presentaties
De gemiddelde leerling
Advertisements

De elektronische verzamelaanvraag Ruben Fontaine Markt- en Inkomensbeheer – dienst Aangiftes.
Evaluatie van MS Exchange 2000 en opzetten van een server voor wereldwijde uitwisseling van projectinformatie Bertels David 3ICT1 Stageplaats: Acros Organics.
Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.
ZIEHIER 36 REDENEN WAAROM BIER
OPSLAG.
Personalisatie van de Archis website Naam: Sing Hsu Student nr: Datum: 24 Juni 2004.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
ADOBE PRESENTER Willem vanden Berg Dienst Onderwijsondersteuning en –ontwikkeling KaHo Sint-Lieven 1.
Programmeren met Alice
Workshop Nieuwe begroting
Nieuwe begroting Wat & hoe.
Weddeschalen & Weddebijslagen
Ronde (Sport & Spel) Quiz Night !
© 2006 Consilience B.V.1. 2 E-Dienstverlening in de praktijk Noordwijk, 5 september 2006 K.P.Majoor Adviseur Consilience B.V.
Natuurlijke Werkloosheid en de Phillipscurve
prNBN D addendum 1 Deel 2: PLT
Basisgeheugenschakelingen
Van Nul naar Drie Normaliseren.
Presenteren voor starters
Datastructuren Analyse van Algoritmen en O
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
Leiden University. The university to discover. ICLON, Interfacultair Centrum voor Lerarenopleiding, Onderwijsontwikkeling en Nascholing Denkgereedschap.
© GfK 2012 | Title of presentation | DD. Month

Passie - Verrijzenis Arcabas
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
IN 10 STAPPEN Marc MULTAEL
Oefeningen F-toetsen ANOVA.
Kunstlicht door: Koert Ringelenberg
TUDelft Knowledge Based Systems Group Zuidplantsoen BZ Delft, The Netherlands Caspar Treijtel Multi-agent Stratego.
Hoofdstuk 1, 2 en 3 Toegepaste Mechanica deel 1
Bewegen Hoofdstuk 3 Beweging Ing. J. van de Worp.
Optuigen van datastructuren
Werken aan Intergenerationele Samenwerking en Expertise.
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
Breuken-Vereenvoudigen
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
ribWBK11t Toegepaste wiskunde Lesweek 02
aanvallen moeten ten allen tijden worden weerstaan
DEEL 2 LES 16 De verdieping Les 16 Slembiedingen versie
Cybersecurity puzzelen aan en mét computers Erik Poll
ZijActief Koningslust 10 jaar Truusje Trap
De Dagen van de Kaaien 19, 20 & 21 maart De Kaaien op tafel - inhoud 1.Methodiek tafelgesprekken 2.Aantal tafelgesprekken en aantal deelnemers.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
2 januari 2009Nieuwjaarsreceptie "Meule wal straete" 1 Nieuwjaarsreceptie 2 januari 2009 Eerste bijeenkomst van de bewoners van de “Meule wal straete”
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Fractale en Wavelet Beeldcompressie
Fractale en Wavelet Beeldcompressie
Fractale en Wavelet Beeldcompressie
Opleiding CMS website Gent Bart Nelis Gent: #239/ docentengang Brussel: /naast bibliotheek
De financiële functie: Integrale bedrijfsanalyse©
Oefeningen Workshop RIE Gemeenten
Van papier naar digitaal Casus Digital born materiaal
aangename ont - moeting
Even voorstellen : Groep 3b
De vierkantjes ! Dit is een puzzel om uw hersens eens goed te laten werken. De vraag is bij elk figuur hoeveel vierkanten u ziet.
Sketchup 2014 Les 9.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
Facet De beveiligde site en de beheerder Facet.
ZijActief Koningslust
Cegeka & TenForce Ronde tafel 17/06/2014 Doelstellingenmanagement VO.
Transcript van de presentatie:

Les 9: Afscherming en beveiliging In de laatste decennia hebben we een zeer sterke toename gekend van het belang van afscherming en beveiliging in computersystemen. Tegenwoordig gaat een groot deel van de tijd van een systeembeheerder naar het garanderen van een veilige werkomgeving voor de computergebruikers.

Overzicht Afscherming Afschermingsdomeinen Toegangsmatrix Beveiliging Het beveiligingsprobleem Authenticatie Programmabedreigingen Systeembedreigingen

Afscherming besturingssysteem P1 O1 O2 P3 P2 O3 O4 O5 P4 O6 O7 Een computersysteem bestaat uit actieve entiteiten (processen) die inwerken op passieve entiteiten (objecten zoals CVE, geheugen, bestanden, programma's, semaforen, enz.). Alle objecten hebben een unieke naam of adres en kunnen maar gebruikt worden door middel van een verzameling van operaties die op het object gedefinieerd werden. Zo kunnen bestanden geopend, gelezen, beschreven en gesloten worden, naar printers kan men enkel schrijven, enz. In het ideale geval zou een proces enkel toegang mogen hebben tot die objecten die het minimaal nodig heeft (en dan nog wel met een beperking op de operaties die kunnen uitgevoerd worden), dit om te vermijden dat een corrupt proces schade kan aanbrengen aan objecten die het niet nodig heeft. Dit principe is algemeen gangbaar in programmeertalen waar men als argumenten van een procedure niet alle veranderlijken van de oproeper meegeeft, maar enkel die veranderlijken die de opgeroepen procedure nodig heeft. Het afschermingssysteem moet ervoor zorgen dat processen enkel die operaties waartoe ze gemachtigd zijn mogen uitvoeren. Om goed te zijn moet het afschermingssysteem uit twee componenten bestaan: (i) een mechanisme om toegangsrechten uit te drukken en om vast te leggen wie ze kan manipuleren, en (ii) een beleid dat concreet bepaalt welke processen welke toegangsrechten toegewezen krijgen. P4 O6 O7

Domeinstructuur Afschermingsdomein = verzameling van toegangsrechten Toegangsrecht = <object, operaties> Afscherming zal uitgedrukt worden aan de hand van de verzameling van toegelaten operaties op een object. Het vermogen om een bepaalde operatie op een bepaald object uit te voeren wordt een toegangsrecht genoemd. Rechtstreeks toegangsrechten toekennen aan processen is bijzonder moeilijk omdat processen dynamische entiteiten zijn die enkel bestaan tijdens de uitvoering van een programma en niet daarbuiten. Men zou de rechten kunnen toekennen aan het programma dat gebruikt wordt om het proces mee te creëren, maar ook dat is geen degelijke oplossing: programma’s kunnen immers door verschillende gebruikers opgestart worden. Afhankelijk van de gebruikers zullen de toegangsrechten verschillend zijn. Een proces wordt daarom uitgevoerd in een afschermingsdomein dat aangeeft over welke systeemmiddelen het kan beschikken. Een afschermingsdomein is een verzameling van toegangsrechten. Door een proces te laten uitvoeren in een bepaald domein erft het de toegangsrechten van het domein. Door domeinen met gebruikers te laten samenvallen, kan men b.v. de toegangsrechten laten variëren in functie van de gebruiker.

Domeinen Domein Veranderen van domein Accounts Inloggen als andere gebruiker (su, setuid-bit) Gebruiker/Systeem Systeemoproep en return Functie/subroutine Functie-oproep en -terugkeer Processen Verzenden boodschap Men kan domeinen herkennen op verschillende niveaus in een computersysteem. Een account kan een domein zijn. Dit wil zeggen dat toegangsrechten zullen afhangen van de rechten van de gebruiker die een proces opstart. Men kan van domein veranderen door van loginnaam te veranderen (rlogin of su) of door gebruik te maken van het setuid-bit. Een proces loopt normaal gezien binnen het domein van de gebruiker die het proces start. Als het proces het setuid bit aan staan heeft (in Unix), dan loopt het in het domein van de eigenaar van het programma. Op die manier kunnen ook gewone gebruikers programma’s uitvoeren waarvoor privileges (root) nodig zijn (b.v. het veranderen van hun wachtwoord). De systeemmode en de gebruikersmode zijn ook twee afschermingsdomeinen. Men kan overgaan van het ene naar het andere door een systeemoproep uit te voeren, en terug te keren. De objecten zijn in dit geval de kerngegevens. Een procedure kan een domein zijn. In dit geval zijn de objecten die kunnen gemanipuleerd worden de locale veranderlijken, en kan men van domein veranderen door een procedure-oproep uit te voeren of terug te keren. Een proces kan een domein zijn. In dit geval kan men enkel van domein veranderen door een boodschap naar een ander proces te sturen en te wachten op antwoord. De objecten zijn in dit geval de locale gegevensstructuren van het proces en alle systeemmiddelen die voor het betrokken proces bereikbaar zijn.

Toegangsmatrix access(D4,F1) Toegangsrechten kunnen conceptueel gemakkelijk voorgesteld worden door ze te expliciteren in een toegangsmatrix. Het bijhouden van de toegangsrechten in een toegangsmatrix is in de praktijk echter niet zeer bruikbaar omwille van de omvang van de tabel (denk maar aan het aantal bestanden in een bestandssysteem). Bovendien is het een ijle matrix en dus zullen heel wat cellen leeg zijn. access(D4,F1)

Toegangsmatrix met domeinen als objecten De binding tussen de domeinen en de processen kan statisch of dynamisch zijn. In het geval van een statische binding is een bepaald proces gedurende zijn volledige levensduur gebonden aan een bepaald domein, in het geval van een dynamische binding kan een proces van domein veranderen. Om dat te modelleren kan men ook de domeinen opnemen als objecten en de mogelijke overgangen expliciet maken met de operatie switch. In bovenstaande afbeelding is het b.v. mogelijk om vanuit D1 over te gaan naar D2. In het algemeen is een overgang tussen Di en Dj mogelijk indien switch  access(Di, Dj). In dit geval zijn de domeinen elk op zich statisch, maar kan er dynamisch tussen de domeinen geschakeld worden.

Dynamische toegangsrechten Een alternatieve manier om met dynamische veranderingen om te gaan is om de toegangstabel zelf te veranderen tijdens de uitvoering van het programma. Daartoe heeft men een aantal bijkomende toegangsrechten nodig die toelaten om toegangsrechten toe te voegen of weg te laten. Eigenlijk zou men de tabel zelf ook als object moeten opnemen, evenals de verschillende toegangsrechten in de tabel (komt hier wel een einde aan?). Het recht kopiëren (*) laat toe dat het proces dat draait in domein D2 het recht read kopieert naar de andere cellen uit dezelfde kolom. Hierbij kunnen er een aantal varianten zijn: (i) het oorspronkelijke recht kan verdwijnen of, (ii) het kopieerrecht kan al dan niet meegekopieerd worden. Het recht om toegangsrechten bij te creëren is voorbehouden aan het toegangsrecht ‘owner’. Een proces dat draait in een domein dat het recht ‘owner’ bevat voor een bepaald object is in staat om alle toegangsrechten in de kolom van het object zomaar te wijzigen (toevoegen en weglaten).

Dynamische toegangsrechten Een proces dat draait in een domein dat het recht ‘control’ bevat voor een bepaald domeinobject D4 is in staat om alle toegangsrechten in de rij behorende bij D4 te wijzigen. Dit is een soort van ‘owner’ toegangsrecht, maar dan voor domeinen. Het toegangsrecht ‘switch’ werd eerder al besproken.

Implementatie van toegangsmatrix Globale tabel lijst met <domein, object, rechten> Toegangscontrolelijsten, per object Lijst met <domein, rechten> + default recht. Bevoegheidslijsten, per domein Lijst met <object, rechten> (beschermde wijzer) Slot-sleutelmechanisme Objecten hebben sloten Domeinen hebben sleutels (beschermde wijzers) Een toegangsmatrix kan op verschillende manieren geïmplementeerd worden. Een eerste vaststelling is dat het opslaan van de volledige matrix veel geheugenruimte zal innemen. Doordat de matrix echter ijl bezet is kunnen er alternatieve opslagmethoden gebruikt worden die minder plaats in het geheugen vereisen. Globale tabel Hierbij zal men de matrix opslaan als een tabel van tripletten bestaande uit een domein, een object en een verzameling van toegangsrechten. Het nadeel van deze methode is dat de tabel vrij groot is, en door het ontbreken van structuur moeten veel gegevens gedupliceerd worden. Verder is het zoeken in de tabel traag. Toegangscontrolelijsten per object Hier zal men per object de toegangsrechten per domein bijhouden. De ruimte nodig om deze informatie op te slaan kan beperkt worden door te vertrekken van een ‘default’ situatie en enkel de uitzonderingen hierop op te slaan. Bevoegdheidslijsten per domein Nu worden de rechten gegroepeerd per domein. Per domein worden de objecten opgesomd die voor dat domein toegankelijk zijn, samen met de toegangsrechten. Bevoegdheden worden doorgaans voorgesteld door datatypes die niet door de gebruiker kunnen gemanipuleerd worden (hetzij beschermd door hardware zoals op de AS/400, bijgehouden door de kern, of bijgehouden door de gebruiker, maar geëncrypteerd). Bevoegdheden kunnen in principe niet overgedragen worden tussen domeinen. Slot-sleutelmechanisme Hierbij geeft men aan de objecten een reeks van sloten, en aan de domeinen een reeks van sleutels. Alle objecten waarvan een domein een sleutel bezit kunnen door dat domein gebruikt worden. De sleutels worden beschermd opgeslagen en kunnen niet overgedragen worden tussen domeinen.

Toegangscontrolelijsten U1 U1 U3 Toegangsrechten moeten beheerd worden. Eerder dan toegangsrechten toe te wijzen aan 1000 individuele gebruikers, is het beter om een beperkt aantal rollen (groepen) te definiëren: systeemprogrammeurs, systeembeheerders, studenten, programmeurs, secretariaatsmedewerkers, enz. en de gebruikers op te nemen in bepaalde groepen. Hierbij kunnen gebruikers opgenomen worden in verschillende groepen zodat ze gebruik kunnen maken van de unie van toegangsrechten. Bij het toekennen van toegangsrechten aan groepen en aan gebruikers moet men steeds het principe van het ‘minste privilege’ (least privilege) voor ogen houden. Gebruikers moeten enkel over die rechten kunnen beschikken die ze nodig hebben om hun werk te doen. Bijkomende rechten vormen alleen maar beveiligingsgaten. Door hun kleine aantal is het beheer van de rechten van groepen veel eenvoudiger dan het beheer van alle individuele gebruikers. Daar waar er afwijkingen nodig zijn voor individuele gebruikers kan men gebruik maken van bijkomende individuele toegangsrechten (via zgn. access control lists in Unix). Bij het controleren van de toegangsrechten moeten uiteraard zowel de individuele als de groepstoegangsrechten gecontroleerd worden. U2 rol3 ‘minste privilege’

Intrekken van toegangsrechten Toegangscontrolelijsten – toegangsrechten weghalen Eenvoudig Ogenblikkelijk Bevoegdheidslijsten – de bevoegdheden moeten kunnen opgespoord worden om ze in te kunnen trekken. Bevoegdheden met eindige levensduur Centraal bijhouden van alle bevoegdheden Indirecte bevoegdheden (verwijzen naar globale tabel die centraal kan aangepast worden) Sleutel. Een bevoegdheid is pas geldig indien ze overeenkomt met een centraal bijgehouden sleutel

Toegangscontrolelijsten en groepen Toegangsrechten: read, write, execute Drie groepen van gebruikers RWX a) owner access 7  1 1 1 RWX b) group access 6  1 1 0 c) public access 1  0 0 1 owner group public chmod 761 game -rwxrw-r-- 1 tom user 416382 Oct 29 1999 a.out -rw-rw-r-- 1 tom user 568535 Oct 29 1999 p.xls

Domeinimplementatie Multics Concentrische domeinen Di and Dj If j < i  Di  Dj In Multics worden de afschermingdomeinen hiërarchisch opgedeeld in een aantal concentrische ringen zoals te zien is in de afbeelding. De binnenste domeinen hebben toegang tot meer objecten dan de buitenste domeinen. Alle objecten uit de buitenste domeinen kunnen ook automatisch door de binnenste domeinen gebruikt worden. Het gebruik van een object dat enkel ter beschikking is van een binnenliggend domein is aan strenge controle onderworpen. Als men een procedure uit een buitenring wenst aan te roepen vanuit een binnenring (wat mogelijk is), moet men er wel voor zorgen dat de argumenten van die procedure toegankelijk zijn voor de ring waarin de procedure gedefinieerd werd. Argumenten uit een binnenste ring zullen misschien eerst gekopieerd moeten worden naar een ring met minder afscherming om toe te laten dat ze gebruikt worden door de betrokken procedure. Een dergelijk hiërarchisch systeem – ofschoon theoretisch zeer aantrekkelijk – is in de praktijk niet zo handig gebleken en wordt in de praktijk beperkt tot 2 niveaus (systeem en gebruiker). Multics Rings

Verborgen kanalen Alloceer geheugen of schijfruimte en kijk of er nog informatie in staat Zoek verborgen kanalen (b.v. geopende bestanden, gedrag van virtueel geheugen) Steganografie Doorzoek de prullenmand (dumpster diving) Koop iemand om... (social engineering) Hoe goed de afscherming ook is, het volledig verborgen houden van informatie is bijzonder moeilijk indien men toegang heeft tot een computersysteem, en zeker indien men kan rekenen op de medewerking van personen die toegang hebben tot de informatie. Zo zijn er gevallen bekend waarbij men aan het al dan niet geopend zijn van bestanden vroegtijdig kon afleiden wat de beslissing van het topmanagement was, of waarbij het mogelijk was om aan de hand van het aantal paginafouten bij het controleren van een wachtwoord te weten te komen waar de wachtwoordroutine gestopt was met het wachtwoord te controleren (door het wachtwoord telkens 1 positie te verschuiven en na te gaan bij welke letter er een paginafout optrad kon men afleiden welke letter de volgende was). Verder kan men ook boodschappen opslaan in alle binaire objecten die bits bevatten die mogen veranderd worden (zoals b.v. de laagste bits per pixel in een bitmap, of in ongebruikte bits in de codering van instructies). Het verbergen van boodschappen in schijnbaar onschuldige bestanden wordt steganografie genoemd. Zo kan via een schijnbaar onschuldige digitale foto van het bedrijf een compleet top secret document op de website gezet worden.

Overzicht Afscherming Afschermingsdomeinen Toegangsmatrix Beveiliging Het beveiligingsprobleem Authenticatie Programmabedreigingen Systeembedreigingen

Beveiligingsprobleem Beveiliging dient een systeem te beschermen tegen Ongerechtigd lezen van gegevens Ongerechtigd schrijven van gegevens Ongerechtigd vernietigen van gegevens Denial of service Het is gemakkelijker te beveiligen tegen ongelukken dan tegen kwaad opzet

Beveiliging is gelaagd fysiek gebruikers fysiek netwerk fysiek OS fysiek Beveiliging is gelaagd en moet verschillende barrières opwerpen tegen potentiële inbrekers. Soms is men bij beveiliging meer bezig met de technische aspecten ervan zoals netwerkbeveiliging, encryptie, enz. maar vergeet men de meest elementaire vormen van beveiliging zoals het achter slot en grendel bewaren van de computers en de reservekopieën. Een ander aspect dat al te vaak uit het oog verloren wordt is de betrouwbaarheid van de gebruikers. Als sommige personeelsleden bereid zijn om tegen betaling confidentiële informatie te laten uitlekken, dan hebben zelfs de beste technische beveiligingssystemen niet veel nut.

Beveiligingsmaatregelen hangen af van type aanvallers Alvorens een beveiligingssysteem op te zetten moet men zich de vraag stellen wie de potentiële aanvallers zijn. Het antwoord op deze vraag bepaalt immers mee het soort beveiliging waarin men zal voorzien.

Authenticatie Vaststellen van de echte identiteit van de gebruiker Dient te gebeuren alvorens de gebruiker het systeem kan gebruiken

Wachtwoorden Eenvoudig, maar zeer kwetsbaar Problemen Zwakke wachtwoorden Niet regelmatig wijzigen van wachtwoorden Meedelen van wachtwoorden Ongeëncrypteerde wachtwoorden over het net sturen Login spoofing Kraaksoftware

Vermijden zwakke wachtwoorden Vereisten wachtwoord: minimum lengte (bvb. 7 tekens) zowel gewone letters als hoofdletters minstens 1 speciaal teken of cijfer geen namen of bestaande woorden Systeem dient te controleren op zwakke wachtwoorden en die weigeren Eenmalige wachtwoorden Vraag-Antwoord systeem, al dan niet gebaseerd op een algoritme Single sign-on

Unix wachtwoorden Wachtwoord wordt geëncrypteerd opgeslagen Wachtwoord controleren: tekst encrypteren en vergelijken met wachtwoordbestand (via systeemoproep) Aanval: lijst met geëncrypteerde wachtwoorden Wachtwoord verlengen met een random getal (de ‘salt’) en pas dan encrypteren Zoekruimte wordt veel groter, triviale wachtwoorden worden moeilijker kraakbaar

Kaarten en pasjes Magneetkaart: 140 bytes Een pasje kan ofwel een wachtwoord bevatten (b.v. een magneetkaart), ofwel een heus programmaatje dat kan gebruikt worden om een antwoord te berekenen op de vraag die gesteld wordt vanuit de server. In dit laatste geval beschikt het pasje over een heuse processorchip die in staat is de berekening te maken. Magneetkaart: 140 bytes Chipkaart: 4 Mhz, 8 bit cpu, 16-32 kiB geheugen, 9600 b/s communicatiesnelheid

Biometrie Opmeten fysieke eigenschap moet aanvaardbaar zijn voor gebruiker Vingerlengte Vingerafdruk Retina (oog) Handtekening Stemherkenning Gelaatsherkenning Mensen hebben een aantal unieke kenmerken die gebruikt kunnen worden bij de identificatie. De identificatie wordt vergemakkelijkt doordat de computer enkel maar moet nagaan of iemands profiel overeenkomt met het profiel dat zich in de databank bevindt. Om het zoeken te beperken zal een gebruiker soms eerst zijn identiteit moeten meedelen, waarna er kan nagegaan worden of de biometrische informatie klopt. Biometrische authenticatiesystemen breken voorlopig niet door (i) omwille van hun prijs, (ii) omdat ze niet steeds 100% goed werken (b.v. stemherkenning bij verkoudheid, of vingerafdruk bij een gekwetste vinger) en (iii) omdat sommige biometrische systemen een onprettig gevoel geven. Sommigen vinden het opslaan van vingerafdrukken in een databank al een inbreuk op de privacy. Verder leeft ook de vrees dat dit systeem zo goed is, dat criminele organisaties personen zouden kunnen gijzelen of verminken om toch maar toegang te kunnen krijgen tot bepaalde systemen.

Overzicht Afscherming Afschermingsdomeinen Toegangsmatrix Beveiliging Het beveiligingsprobleem Authenticatie Programmabedreigingen Systeembedreigingen

Programmabedreigingen zijn bedreigingen die kunnen teruggevoerd worden op een probleem binnenin een programma.

Trojaans paard Programma dat er onschuldig uitziet naast zijn onschuldige rol ook een schadelijke actie uitvoert B.v. gewijzigd systeemprogramma ergens in pad zetten (steeds eerst systeemdirectories in pad zetten, steeds volledige padnaam opgeven b.v. /bin/su). originele naam met typfout (b.v. SU) Trojaans paard kan ook door een compiler gegenereerd worden. Een Trojaans paard is een bedreiging die ingebed zit in een gebruikersprogramma. Het gaat om programmacode die deel uitmaakt van een niet-verdacht programma, maar die bijvoorbeeld vertrouwelijke informatie doorstuurt naar derden. Het gebruik van programma's van andere gebruikersdirectories houdt steeds gevaren in voor Trojaanse paarden. In principe beperkt men zich beter tot programma's die op de gebruikelijke manier in de systeemdirectories terecht gekomen zijn. De systeembeheerder moet erop toezien dat de systeemdirectories enkel maar gegarandeerd veilige programma’s bevatten. Het feit dat men de broncode van alle programma heeft, is geen garantie dat er geen Trojaanse paarden kunnen voorkomen. Het zou immers kunnen dat de kwaadaardige code door de compiler gegenereerd wordt, zonder dat er in de broncode ook maar iets terug te vinden is.

Achterdeur … while (1) { printf(“login: ”); get_string(naam); disable_echo(); printf(“wachtwoord: ”); get_string(wachtwoord); v = controleer(naam, wachtwoord); if ((v==1) || (strcmp(naam, “zzzz”)==0)) break; } execute_shell(naam); Een achterdeur heeft niet als eerste bedoeling om de gebruikers schade toe te brengen, maar om de ontwerper van de achterdeur bijkomende privileges te verschaffen. Een achterdeur zal reageren op bepaalde combinaties van gebruikersinvoer en op dat ogenblik mogelijk onrechtmatige toegang verschaffen. Achterdeuren hoeven niet steeds in de broncode zelf te zitten, maar kunnen ook automatisch door compilers gegenereerd worden. In dat geval zijn ze enkel te ontdekken door de gegenereerde code te bestuderen. Heel wat programma's hebben ‘legale’ achterdeuren die de systeembeheerder toelaten om zonder veel authenticatie applicaties te gebruiken. De bovenstaande code geeft een voorbeeld van een achterdeur. Terloops weze opgemerkt dat de code – zelfs zonder achterdeur –zeer gemakkelijk te kraken is. Het volstaat om de voorwaarde bij de voorwaardelijke sprong te inverteren en het programma is gekraakt.

Logische bom … if ((dag(datum) = 13) && eindecontract(“Joe Bad”)) { doeietsergs } Een logische bom is een stuk schadelijke programmacode die pas geactiveerd wordt als er aan bepaalde voorwaarden voldaan is (b.v. vrijdag de dertiende), of een maand nadat de naam van de programmeur van de personeelslijst verdwenen is. De logische bom wordt geïnstalleerd door een ontwikkelaar die ter kwader trouw is. De logische bom kan gebruikt worden als chantagemiddel. Om logische bommen te vermijden kan men bij ontslag iemand de toegang tot het systeem ogenblikkelijk ontzeggen en meteen een ontslagvergoeding uitbetalen. Op die manier kan men verhinderen dat hij de systemen tijdens zijn opzegperiode saboteert.

Buffer overflow buffer reg reg tk adres D i t i s v e e l t e l a n g ! stapel Sommige inputroutines (b.v. gets) dumpen de binnengekregen input op een plaats in het geheugen zonder de lengte ervan na te gaan. Indien de architectuur, het besturingssysteem en de compiler waarmee het programma gecompileerd werd gekend zijn, wordt het mogelijk om een dusdanige input op te geven dat de gegevens die na de buffer volgen in de stapel overschreven worden, waaronder ook het terugkeeradres. Door het terugkeeradres te laten wijzen naar de buffer zelf, en door in de inputstring op die plaats code te plaatsen die kan uitgevoerd worden, kan men het programma eender wat laten doen. Dit is het basismechanisme van de buffer overflow. Maatregelen tegen bufferoverflow zijn: Het niet meer gebruiken van onveilige inputroutines die de lengte van de input niet testen en dus aanleiding kunnen geven tot overschrijvingen. Dit vereist wat discipline. Het onuitvoerbaar maken van de stapel zodat instructies op de stapel niet als code kunnen uitgevoerd worden. Dit betekent niet dat buffer overflow dan niet meer kan voorkomen, maar de aanvaller zal het moeten stellen met code die zich reeds in het codegeheugen bevindt. De Sparc processor heeft een dergelijke bescherming en Solaris maakt er gebruik van. De stapel naar grotere adressen laten groeien. In dat geval zal de inputroutine enkel ongebruikte stapelcellen overschrijven, en niet bij het terugkeeradres kunnen.

Overzicht Afscherming Afschermingsdomeinen Toegangsmatrix Beveiliging Het beveiligingsprobleem Authenticatie Programmabedreigingen Systeembedreigingen

Systeembedreigingen zijn aantastingen van een computersysteem die niet meteen toe te schrijven zijn aan één specifiek programma. Er worden vier soorten systeembedreigingen onderscheiden.

Spyware Verborgen programma dat informatie verzamelt over de gebruiker en deze verstuurt over het Internet. Browsergewoontes Velden in invulformulieren Installatie gebeurt automatisch door te surfen. Adware: automatische popups, gekaapte browser Spyware is eender welke software die onrechtmatig op een computer geïnstalleerd geraakt (automatisch als neveneffect van het surfen of van het installeren van besmette software) en die als bedoeling heeft om informatie naar de buitenwereld te laten uitlekken. Spyware is een bedreiging voor de beveiliging omdat – eenmaal geïnstalleerd – de spyware toegang heeft tot het gehele computersysteem en b.v. een log kan bijhouden van toetsaanslagen, waaruit dan nadien wachtwoorden e.d.m. kunnen gedistilleerd worden. Adware is een soort van spyware die niet als bedoeling heeft om informatie te stelen, maar wel reclame te maken. Dit kan door de gebruiker te overstelpen met popupschermen, of door de homepagina van de browser te kapen. Het verwijderen van spyware en adware is niet eenvoudig. Er bestaan gelukkig een aantal hulpmiddelen voor (b.v. Ad-Aware, en andere). Een vorm van actieve spyware is login spoofing waarbij een programma het loginscherm van een computer nabootst. Als de nietsvermoedende gebruiker zijn wachtwoord in een dergelijk programma ingeeft, wordt zijn wachtwoord opgeslagen, en krijgt hij de melding dat de inlogprocedure mislukt is. Hij kan dan nogmaals proberen, ditmaal met de echte loginprocedure. Op een PC-platform kan men er met ctrl-alt-del voor zorgen dat het echte loginscherm altijd getoond wordt. Dit komt omdat ctrl-alt-del een ononderschepbare toetsenbordcombinatie is.

Denial of service while [ 1 ] do     mail –s “aanval” joe@badluck.be <rommel     sleep 10 done Zelfs indien een inbreker er niet in slaagt om in te breken, is hij soms toch in staat om het systeem voor de gebruikers onbruikbaar te maken door b.v. zoveel netwerkaanvragen naar het systeem te sturen dat het systeem compleet door de knieën gaat. Indien deze aanvragen verstuurd worden vanuit 1 bepaalde computer, is het nog mogelijk om op het niveau van het netwerk de trafiek vanuit die computer tegen te houden. Indien het echter over een gedistribueerde aanval gaat (waarbij het aanvalsprogramma eerst b.v. als een virus verspreid werd, en waarbij dit virus dan plots een aanval inzet vanop al deze computers samen), is er eigenlijk weinig anders te ondernemen dan de server gewoon van het netwerk af te halen. Een vrij eenvoudige denial of service aanval kan er b.v. in bestaan door via een script om de 10 s een e-mail naar een bepaalde afzender te versturen.

Wormen Een worm is een programma dat tracht om zich voort te planten van de ene computer naar een andere door een machine uit te zoeken waarop hij zich kan kopiëren en indien nodig ook compileren. Vanaf die machine gaat hij dan opnieuw op zoek naar weer andere machines. Het voornaamste voorbeeld van dit soort van bedreiging is de zogenaamde Internet worm die in 1988 op luttele uren tijd hele delen van het Internet besmet heeft. Deze worm maakte enerzijds gebruik van een fout in het Unix besturingssysteem, en anderzijds van de onvoorzichtigheid van de gebruikers. Veel van de hedendaagse virussen die zich via e-mail verspreiden zijn eigenlijk ook wormen. Het enige verschil is dat er soms nog een minimale interactie met de gebruiker nodig is om de worm zijn werk te kunnen laten doen (zoals b.v. het openen van een bijlage bij een e-mail). Verder zijn er ook nog de kettingbrieven (hoaxes) die zich verspreiden via de gebruikers. Deze kettingbrieven waarschuwen vaak voor onbestaande virussen en vragen om zo breed mogelijk verspreid te worden. Hoax?

Virussen Een stuk code dat zichzelf repliceert door zich aan andere (onschuldige) code te hechten Naast infectietaak meestal ook andere (schadelijke) payload

Companion Virus bestaat naast het eigenlijke programma Virus wordt onbewust uitgevoerd DOS: prog.com installeren naast prog.exe; prog zal prog.com uitvoeren Windows: shortcuts veranderen Unix: een uitvoerbaar bestand ‘ls’ in een directory zetten Na payload wordt ook oorspronkelijke programma uitgevoerd om detectie te vermijden

Uitvoerbaar Virus wordt toegevoegd aan een programma In C: 2KiB; in assembler: 44 bytes (DOS) Niet alle programma’s infecteren om detectie uit te stellen

Geheugen Virus blijft in geheugen na 1e uitvoering Zal meestal een onderbrekingsvector kapen om zeker te zijn dat het regelmatig de controle terugkrijgt bvb. timeronderbreking Infecteert andere programma’s op schijf Kan maatregelen nemen om detectie te vermijden door systeemoproepen te onderscheppen

Boot Sector Boot sector wordt gebruikt om OS op te starten Virus in boot sector: virus heeft PC voor zich alleen: geen OS, MMU, anti-virus enige probleem: na opstarten OS controle terugkrijgen methode: alle onderbrekingen in beslag nemen en diegene die verloren gaan heroveren

Device driver Device driver is gewoon bestand op schijf Wordt altijd en ‘officieel’ ingeladen door OS Loopt in kernmode → veel handiger dan boot sector

Macro virussen Normaal gezien zijn gegevensbestanden (.jpg, .doc, .html) onschadelijk omdat ze geen uitvoerbare code bevatten Bepaalde types (vooral MS Office) bevat toch uitvoerbare code: macro’s de functie OPEN FILE wordt altijd uitgevoerd bij open MS Word bestand kan hergedefinieerd worden: ideale plek voor virus

Broncode Broncode wijzigen Voordeel: platformonafhankelijk Kan beperkt blijven tot een paar lijnen, valt niet op Verspreiding naar andere machines: broncode virus dient volledig in uitvoerbaar programma aanwezig te zijn zodat de programmatekst in nieuwe broncodebestanden kan ingevoegd worden

Verspreiding Plaatsen op locatie met hoge kans op kopiëren: bulletin board, shareware Indien gekopieerd: infectie bestanden op lokale harde schijf verspreiding over LAN Via e-mail-bijlage Virus/worm gebruikt adresboek voor nieuwe slachtoffers e-mail komt van gekende (vertrouwde) persoon

Signatuurgebaseerd Labo’s verzamelen virussen (tienduizenden) Scanner gebruikt databank met signaturen om snel veel bestanden te kunnen scannen. signatuur = patroon dat duidt op een welbepaald virus Afweging: korte generieke signaturen: te veel valse positieven lange specifieke signatuur: kleine variaties van het virus blijven onopgemerkt + toegenomen scantijd

Verborgen virussen

alle code voert X=A+B+C-4 uit Polymorfe Virussen alle code voert X=A+B+C-4 uit

Integriteitsgebaseerd Virussen hoeven hiervoor niet gekend te zijn Bereken voor elk uitvoerbaar bestand een checksum, opslaan in een speciaal bestand Controleer regelmatig of de checksums nog kloppen Reactie virusschrijver: checksumbestand verwijderen nieuwe checksum berekenen van geïnfecteerd bestand en checksumbestand aanpassen Tegenreactie: checksumbestand verbergen of encrypteren probleem: geheimhouding encryptiesleutel

Gedragsgebaseerd Verdachte handelingen opsporen bvb. Boot sector schrijven, flash geheugen schrijven Probleem: sommige handelingen zijn niet zo duidelijk uitvoerbaar bestand overschrijven: OK voor compiler geheugenresident worden: OK voor anti-virus software

Vuistregels om virussen te vermijden OS gebruiken met goede scheiding kern/gebruikers mode en gewone gebruiker/systeembeheerder; eenvoudig OS Geen software gebruiken van onzekere herkomst Anti-virus software gebruiken en regelmatig vernieuwen Geen via e-mail ontvangen programma’s uitvoeren Geregeld noodkopieën maken Strikte scheiding programma’s en data (geen “active content”); .jpg is OK, .doc niet

Herstel van een aanval Virusscanner, spywareverwijderaar de besmetting ongedaan laten maken Alle waardevolle data van harde schijf opslaan in een virusvrij formaat (b.v. .txt i.p.v. .doc). Heropstarten naar een gegarandeerd virusvrije omgeving (originele CD-ROM) Harde schijf herformatteren, OS en programmatuur herinstalleren Data opnieuw terugzetten

Inbraakdetectie IDS systemen (Intrusion Detection Systemen) Detectiemethoden Analyseren van de logbestanden Veranderingen in het bestandensysteem analyseren (tripwire) Volgorde van systeemoproepen analyseren