original in fr Eric Detoisien
fr to en Georges Tarbouriech
en to nl GH Snijders
Eric Detoisien is een expert in computer beveiliging. Dol als hij is om alles dat te maken heeft met beveiliging, is hij een van de experts van de rstack groep - www.rstack.org -
Dit artikel werd voor het eerst gepubliceerd in een speciale editie van Linux Magazin Frankrijk, gefocust op beveiliging. De redacteur en de autheurs waren zo vriendelijk om LinuxFocus toe te staan om ieder artikel uit deze speciale uitgave te publiceren. Aansluitend, zal LinuxFocus deze presenteren zodra de vertaling naar het Engels gereed is. Met dank aan alle mensen die betrokken zijn bij dit werk. Deze abstract zal gereproduceerd worden voor artikelen van dezelfde oorsprong.
Dit artikel laat verschillende externe aanvallen zien, die een cracker kan gebruiken tegen machines in een netwerk. We zullen de aanval op het netwerk zelf bespreken, een paar aanvallen op applicaties en de Denial Of Service aanvallen.
De netwerk aanvallen berusten op zwakheden die direct gerelateerd zijn aan de protollen of de implementatie ervan. Er bestaan er vele. Echter, de meeste zijn varianten van de vijf goed bekende netwerk aanvallen.
Volgens RFC (Request For Comment, vraag om commentaar) 791 (IP), moeten alle Internet nodes (routers) in staat zijn om pakketten van minimaal 68 bytes te transporteren, zonder deze te fragmenteren (op te delen). De minimale grootte van een IP pakket is 20 bytes, zonder opties. Als er opties aanwezig zijn, bedraagt de maximale grootte 60 bytes. Het IHL (Internet Header Length ) bevat de lengte van het pakket in 32 bit woorden. Dit veld gebruikt 4 bit, het aantal mogelijke waarden is dus 2^4 - 1 = 15 (de waarde 0000 is niet toegestaan). Tenslotte, het Fragment Offset veld, welke het begin van de eerste byte van het fragment, in verhouding tot het volledige datagram, aangeeft, is 8 bytes blocks groot. Een data fragment bevat dus minimaal 8 bytes. Dit maakt samen echt 68 bytes.
De aanval bestaat uit het opzetten van een TCP connectie, verdeeld over 2 IP pakketten (gefragmenteerd). Het eerste IP pakket van 68 bytes bevat alleen de eerste 8 bytes van de TCP header (bron en doel poorten en volgorde nummer). De data in het tweede IP pakket bevat dan het TCP connectie verzoek (SYN flag is 1, ACK flag is 0).
Echter, IP filters passen dezelfde regel toe aan alle fragmenten in een pakket. Het filter van het eerste fragment (Fragment Offset = 0) definieert de regel, waarop deze ook wordt toegepast op de andere fragmenten (Fragment Offset = 1) zonder enige andere controle. Dus, wanneer gedefragmenteerd op IP niveau van de doel machine, wordt het verbindings verzoek opnieuw opgebouwd en doorgegeven aan de TCP laag. De verbinding wordt opgezet, ondanks het IP filter ertussen, welke dit had moeten tegenhouden.
Afbeelding 1 en 2 laten beide fragmenten zien en afbeelding 3 laat het gedefragmenteerde pakket op de doelmachine zien:
Afb.1: Fragment 1
Afb.2: Fragment 2
Afb.3: Gedefragmenteerd pakket
Nog steeds aan de hand van RFC 791 (IP), als twee IP fragmenten overlappen, zal de tweede de eerste overschrijfen. De aanval bestaat uit het verdelen van een IP pakket in twee fragmenten. Het IP filter accepteerd de eerste, welke 68 bytes bevat (zie Tiny Fragments) en daar het geen TCP connectie verzoek bevat (SYN = 0, ACK = 0). Wederom zal deze regel ook worden toegepast aan de volgende fragmenten. Het tweede pakket (Fragment Offset = 1) bevat het echte verbindings verzoek, en wordt geaccepteerd door het IP filter omdat deze niet ziet dat hier een verbinding wordt opgezet. Dus, tijdens het defragmenteren zal de data van het tweede fragment de data van de eerste overschrijven, te beginnen na de 8ste byte (de Fragment Offset = 1). Het opnieuw geassembleerde pakket is dan een geldig verbindings verzoek voor de doelmachine. De connectie wordt opgezet ondanks het IP filter ertussen.
Afbeeldingen 1 en 2 geven beide fragmenten weer en afbeelding 3 laat het gedefragmenteerde pakket op de doel machine zien:
Afb.4: Fragment 1
Afb.5: Fragment 2
Afb.6: Gedefragmenteerd pakket
Het doel van deze aanval is om het IP adres van een machine over te nemen. Dit stelt de cracker in staat om ofwel de oorsprong van zijn aanval te verbergen (gebruikt id Denial Of Service aanvallen) of om gebruik te maken van een vertrouwens relatie tussen twee machines. Hier zullen we het tweede gebruik van IP Spoofing bekijken.
Het principe van de aanval bestaat, voor de cracker, uit het
vervalsen van zijn eigen IP pakketten (met programma's als
hping2
of nemesis
in welke hij, onder
andere, het bron IP zal veranderen. IP Spoofing wordt ook vaak
Blind Spoofing genoemd. De antwoorden van de valse pakketten
gaan niet naar de machine van de cracker, daar het bron adres
is aangepast. Dus gaan ze naar de gespoofde machine. Er bestaan
echter twee methodes om toch antwoorden terug te krijgen:
Blind Spoofing wordt gebruikt tegen services als rlogin of rsh. Het authenticatie mechanisme van deze services kijkt alleen maar naat het bron IP adres van de client machine. Deze redelijk bekende aanval (Kevin Mitnick gebruikte het tegen Tsutomu Shimomura's machine in 1994) vereist een paar stappen:
showmount -e
welke laat zien waar de
bestandssystemen worden geëxporteerd, of rpcinfo
welke meer informatie geeft;echo ++
>> /.rhosts
om meer toegangsrechten te verkrijgen.
Om dit te doen, gebruikt hij een pakket met de TCP PSH flag (
Push): de ontvangen data wordt dan onmiddelijk naar de volgende
laag gestuurd (in dit geval de rsh service). Vervolgens kan hij
inloggen op een service als rlogin of rsh zonder IP Spoofing. De cracker gebruikt de machine A, terwijl C de vertrouwde machine
voorsteld. De A(C) aanduiding betekend dat het pakket is verstuurd
vanaf A met het gespoofde IP adres van C. Opmerking: er bestaat
een programma met de naam mendax
welke deze IP Spoofing
mechanismes iplementeerd.
TCP Session Hijacking (letterlijk: het kapen van een TCP sessie), staat de cracker toe om een TCP stroom om te leiden. Hiermee kan een cracker een wachtwoord bescherming (zoals in telnet of ftp) omzeilen. De noodzaak van luisteren (sniffen) beperkt deze aanval tot het fysieke netwerk van het doelwit. Alvorens de details te bespreken, zullen we eerst de basis principes van het TCP protocol toelichten.
We zullen hier niet het mystery van het TCP protocol uit de doeken doen, maar ons concentreren op de belangrijkste punten, om deze aanval te begrijpen. De TCP header bevat verschillende velden:
Afbeelding 8 laat zien hoe het opzetten van een TCP connectie
Afb.8: Three Way Handshake
Hier, startte machine A een TCP connectie met machine B.
Afbeelding 9 geeft een doorvoer van TCP data weer:
De volgnummers zullen veranderen met het aantal verzonden bytes aan data. Het volgnummer wordt aangeduid met Seq(sequentie), het bevestigingsnummer (ACK) kan gevonden worden na de PSH en ACK flags en het aantal verzonden data bytes staat tussen haakjes.
Deze aanval veroorzaakt een staat van desynchronisatie aan beide kanten van de TCP connectie, en maakt het zo mogelijk om de verbinding te kapen. Een connectie raakt gedesynchroniseerd als het volgnummer van de volgende verzonden byte van de A machine afwijkt van het volgnummer van de volgende byte, te ontvangen door B. Andersom ook.
In het voobeeld van afbeelding 9, aan het eind van de eerste stap, al s B z'n pakket ontvangt, wacht A op een pakket met een bevestigings nummer van x+60. Als het volgende pakket dat door B wordt verstuurd, niet dit volgummer bevat, worden A en B beschouwd als gedesynchroniseerd.
Dus, een cracker met machine C wil een opgezette Telnet sessie tussen A en B kapen. Eerst luisterd C het telnet verkeer (TCP poort 23) tussen A en B af. Als de cracker denkt dat A de tijd heeft gehad om zich te authenticeren bij de Telnet service op de B machine, desynchroniseerd hij de A machine tegen B. Om dit te doen, creëert hij een pakket met het bron IP adres van A en het TCP bevestigingsnummer dat door B wordt verwacht, wat door de B wordt geaccepteerd. Behalve het verstoren van de TCP verbinding, stelt dit de cracker in staat een commando te injecteren in de telnet sessie die was gestart door A. In feite is dit pakket in staat om data te vervoeren (PSH flag = 1).
Afbeelding 10 geeft deze aanval weer:
Afb.10: TCP Session Hijacking
De B machine accepteerd het commando, verstuurd door C, en bevestigt dit door een pakket naar A te sturen met de ACK flag. Ondertussen, als A een pakket stuurd naar B, wordt het afgewezen omdat het volgnummer afwijkt van degene die door B wordt verwacht.
Een probleem dat vervolgens optreedt: de Ack Storm. Er worden zeer veel ACKs gegenereerd. Dit gebeurd als A een TCP pakket stuurd met een ongeldig volgnummer (A is immers gedesynchroniseerd), B wijst het af en stuurt A een ACK met het volgnummer dat het verwacht. A ontvangt deze ACK, en daar het volgnummer niet klopt met degene die werd verwacht, stuurt hij ook een ACK naar B en B doet het nog eens...
Dit ACK Storm probleem kan worden opgelost als de cracker gebruik
maakt van ARP Spoofing. In dat geval, zal de C machine de ARP cache
van B vergiftigen, door deze wijs te maken dat het IP adres van A nu
bij het MAC adres van C hoord. Deze technieken worden geïmplementeerd
door het hunt
programma.
Deze aanval, die ook wel ARP Redirect (ARP omleiding) wordt genoemd, leidt het netwerk verkeer van een of meerdere machines naar de machine van de cracker. Het wordt gedaan op het fysieke netwerk van de slachtoffers. Laten we eens kijken hoe wat het ARP protocol ook al weer was en hoe het werkt.
Het ARP protocol (Address Resolution Protocol) implementeerd het resolutie mechanisme om een IP adres te vertalen naar een Ethernet MAC adres. Netwerk apparatuur communiceerd door het uitwisselen van Ethernet frames (in een Ethernet netwerk, uiteraard), op de datalink laag. Om in staat te zijn om deze informatie te delen, is het nodig dat de netwerk kaarten over een uniek Ethernet adres beschikken: dit is het MAC adres (MAC=Media Access Control).
Zodra er een IP pakket wordt verstuurd, dient de zender het MAC adres van de ontvanger te weten. Om het te krijgen, wordt er een broadcast ARP verzoek vestuurd naar alle machines in het lokale netwerk. Dit verzoek vraagt: "Wat is het MAC adres dat bij dit IP adres hoort?". De machine met dit IP adres antwoordt met een ARP pakket, en vertelt de zender zo het gevraagde MAC adres. Vanaf dat punt weet de zender het MAC adres dat bij het IP adres hoort, waarnaar pakketten verzonden moeten worden. Deze wetenschap wordt een tijdje in een cache (buffer) opgeslagen (om verzoeken te voorkomen, iedere keer dat er een IP pakket wordt verstuurd).
Deze aanval vergiftigd de cache van de doelmachine. De cracker verstuurd ARP antwoorden naar de doel machine, om deze te vertellen dat het nieuwe MAC adres er een is die overeenkomt met een gateway (bijvoorbeeld) IP adres naar het adres van de cracker. De machine van de cracker zal vervolgens al het verkeer ontvangen dat verstuurd wordt naar de gateway. Zo is het dus voldoende voor hem om naar het verkeer te luisteren (en/of aan te passen). Daarna zal hij de pakketten doorsturen naar de echte bestemming, zodat niemand de verandering opmerkt.
ARP Spoofing is bruikbaar als een lokaal netwerk gebruik maakt van switches. Deze sturen de Ethernet farmes naar verschillende poorten (kabels), aansluitend met het MAC adres. Een sniffer kan in zo'n geval nauwelijks frames opvangen, voorbij z'n eigen kabel. Zo staat ARP Spoofing toe om te luisteren naar het verkeer tussen twee machines die zich op verschillende poorten bevinden.
Om een ARP Spoofing aanval te implementeren, kan een cracker
gebruik maken van een pakket generator zoals ARPSpoof
of nemesis
. Voorbeeld: de "slachtoffer" machine
(10.0.0.171
), z'n default gateway (10.0.0.1
)
en de machine van de cracker (10.0.0.227
). Voor de
aanval is het resultaat van een traceroute:
[root@cible -> ~]$ traceroute 10.0.0.1 traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets 1 10.0.0.1 (10.0.0.1) 1.218 ms 1.061 ms 0.849 ms
En de ARP cache van de doel machine is:
[root@cible -> ~]$ arp Address HWtype HWAddress Flags Mask Iface 10.0.0.1 ether 00:b0:c2:88:de:65 C eth0 10.0.0.227 ether 00:00:86:35:c9:3f C eth0
De cracker gebruikt dan ARPSpoof
:
[root@pirate -> ~]$ arpspoof -t 10.0.0.171 10.0.0.1 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
De verzonden pakketten zijn ARP pakketten die de ARP cache van de
10.0.0.171
machine vergiftigen met een ARP Reply (antwoord)
welke zeggen dat het MAC adres dat hoort bij 10.0.0.1
nu
00:00:86:35:c9:3f
is.
De ARP cache van de 10.0.0.171
machine wordt:
[root@cible -> ~]$ arp Address HWtype HWAddress Flags Mask Iface 10.0.0.1 ether 00:00:86:35:c9:3f C eth0 10.0.0.227 ether 00:00:86:35:c9:3f C eth0
Om te controleren dat het verkeer nu via de 10.0.0.227
machine loopt, is het voldoende om een nieuwe traceroute uit te
voeren op de
10.0.0.1
gateway:
[root@cible -> ~]$ traceroute 10.0.0.1 traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets 1 10.0.0.227 (10.0.0.227) 1.712 ms 1.465 ms 1.501 ms 2 10.0.0.1 (10.0.0.1) 2.238 ms 2.121 ms 2.169 ms
Nu kan de cracker het verkeer tussen 10.0.0.171
en
10.0.0.1
afluisteren. Hij moet niet vergeten om IP routing
op zijn 10.0.0.227
te activeren.
Het DNS protocol (Domain Name Systen) vertaald een domein
naam (bijvoorbeeld www.test.com) in zijn IP adres (bijvoorbeeld
192.168.0.1
en vice versa.
Deze aanval gebruikt valse antwoorden om de DNS verzoeken verstuurd
door een "slachtoffer". Deze aanval leunt op twee methoden.
De header van het DNS protocol bevat een identificatie veld om antwoorden en verzoeken te identificeren. Het doel van de DNS ID Spoofing is om een foutief antwoord terug te sturen op een DNS verzoek, voor de echte DNS server kan antwoorden. Om dit te doen, dient het ID van het verzoek voorspeld te worden. Lokaal kan dit door eenvoudig het netwerk af te luisteren. Echter, op afstand wordt dit iets lastiger. Er bestaan verschillende methodes:
In ieder geval, het is nodig om eerder te antwoorden dan de echte DNS server. Dit kan bijvoorbeeld door de echte te crashen met een Denial Of Service aanval.
Om te slagen, moet de aanvaller een DNS server
(ns.attaquant.com
) onder controle met de autoriteit over
een domein (attaquant.com
). De doel DNS server (
ns.cible.com
) wordt verondersteld om voorspelbare volgnummers
te genereren (verhogen met 1 bij ieder verzoek).
De aanval bestaat uit vier stappen:
www.attaquant.com
naar de DNS server van het cible.com
domein, zoals te zien in Afbeelding 11;ns.cible.com
attaqaunt.com
domein;www.spoofed.com
, welke 192.168.0.1
als
IP adres. De cracker stuurt een DNS verzoek om de naam
www.spoofed.com
op te zoeken naar ns.cible.com
.
Onmiddelijk daarna stuurt hij een zooi aangepaste DNS antwoorden (met
als IP adres degene van de site van de aanvaller (10.0.0.1
)
naar dit zelfde verzoek met het gespoofde bronadres van de DNS server
van het spoofed.com
domein. Het ID van ieder antwoord zal
verhoogd worden met 1, te beginnen met degene die ontvangen werd tijdens
het eerste verzoek (ID = 100) om de kans op het krijgen van het juiste
ID nummer te verhogen. Dit is voor het geval dat ns.cible.com
ondertussen ook al andere DNS verzoeken heeft beantwoord en dus zijn DNS
ID heeft verhoogd. Afbeelding 12 geeft deze stappen weer. www.spoofed.com
naam zal het IP adres van de aanvaller krijgen en zal doorgestuurd
worden naar zijn site. Dit laatste kan een "kopie" zijn van de echte
site om de internet gebruikers te neppen en vertrouwelijke informatie
te stelen.
DNS servers gebruiken een cache om lokaal antwoorden op eerdere verzoeken een poosje te bewaren. Dit is om te voorkomen dat er tijd wordt verspilt met het altijd ondervragen van de DNS server die de autoriteit over het gevraagde domein heeft. Dit tweede type van DNS Spoofing bestaat uit het vergiftigen van deze cache met valse informatie. Hier is een voorbeeld:
We behouden de parameters van het vorige voorbeeld. Hier zijn de verschillende stappen van de aanval:
www.attaquant.com
te resolven naar de DNS server van het cible.com domein;
www.attaquant.com
naam op te zoeken naar de DNS server van de aanvaller;www.cible.com
site zou een aangepast DNS record kunnen hebben, en het IP adres
van de www.attaquant.com
bevatten in plaats van de echte.
Applicatie aanvallen richten zich op specifieke zwakken plekken gevonden in applicaties. Een aantal kan echter worden samengevat op type.
Een van de eerste beveiligings problemen die gevonden kan worden in applicaties komt van configuratie fouten. Er zijn twee soorten van fouten: standaard installatie en foutieve configuratie.
Software, zoals web servers, met standaard installatie bestanden bevatten vaak voorbeeld sites die door crackers gebruikt kunnen worden om vertrouwelijke informatie te benaderen. Zo kunnen ze bijvoorbeeld scipts gebruiken om de bron data te krijgen via slechte dynamische pagina's. Verder, kan zulk een installatie een remote beheer interface bevatten met een standaard login/wachtwoord (te vinden in de applicatie beheer handleiding). De cracker is dan in staat om te veranderen wat hij wil op de site.
De belangrijkste zwakheden die door een slechte configuratie worden gegenereerd zijn toegangslijsten (ACLs) met slechte parameters. Zo kan de cracker prive pagina's of databases benaderen.
Als een klassiek voorbeeld van misconfiguratie, de fouten in Lotus Domino web server parameters komen veel voor. Na de installatie bevatten de Lotus configuratie parameters geen toeganslijst (Access Control List). Het ligt voor de hand dat als de names.nsf Lotus database kan worden benaderd met een web browser, zonder authenticatie, het mogelijk is om heel veel informatie op te doen zoals de Lotus gebruikersnamen.
Slecht programmeren van software leidt altijd tot bugs. Dit zijn de belangrijkste zwakke plekken. Zodra ze ontdekt worden, staan ze toe dat er ongeauthoriseerde commando's worden uitgevoerd, om de broncode van dynamische pagina's te krijgen, om een service niet langer beschikbaar te maken, om de controle over machine te verkrijgen, etc. De bekendste en meest interressante in termen van misbruik is de buffer overflow.
De buffer overflow is een zwakke plek die wordt veroorzaakt door
slecht geschreven software. Het steekt de kop op, op het moment dat
er een variabele als een argument voor een functie wordt
gekopiëerd naar een buffer zonder dat de grootte ervan wordt
gecontroleerd. Als de variabele groter is dan de geheugen ruimte
die is gereserveerd voor deze buffer, is het genoeg om de buffer
overflow te laten gebeuren. De exploitatie ervan vindt plaats door
de variabele een deel van een programma mee te geven.
Als een cracker succes heeft met deze aanval, krijgt hij de mogelijkheid
om op afstand commando's uit te voeren op de doelmachine met de
rechten van de aangevallen applicatie. Meer hierover in de series
over veilig programmeren:
Slecht programmeren van scripts tast vaak de beveiliging van een systeem aan. Er zijn manieren om zwakke plekken in Perl scripts te gebruiken om bestanden uit de web root te lezen of niet-geauthoriseerde commando's uit te voeren. Deze programmeer problemen worden besproken in de CGI script artikelen hierboven (Deel 6).
Het belangrijkste doel van deze aanval is om het verkeer tussen twee machines om te leiden. Dit is voor het onderscheppen, veranderen of vernietigen van data die circuleert tijdens de communicatie. Deze aanval is meer een concept dan een echte aanval. Er bestaan verschillende aanvallen die het principe van Man in the Middle toepassen, zoals de DNS Man in the Middle welke DNS Spoofing gebruikt om het verkeer tussen een web server en een web client af te tappen. Een recente applicatie is opgedoken om SSH verkeer af te tappen.
Deze aanval is goed bekend daar het zal leiden tot het niet langer beschikbaar zijn van een service (specifieke applicatie) of van een doel machine. We onderscheiden twee soorten Denial Of Service: aan de ene kant zijn er diegenen die een bug in een applicatie exploiteren, aan de andere kant diegenen die gebruik maken van een slechte implementatie van een protocol, of zwakheden van een protocol.
Als de zwakke plekken van een applicatie kunnen leiden tot de mogelijkheid van het overnemen van de controle over een machine (bijvoorbeeld met een buffer overflow), kunnnen ze ook leiden tot het onbeschikbaar raken van een service door een gebrek aan bronnen of door een crash.
Er bestaan verschillende soorten van Denail of Service met behulp van protocollen die onderdeel uitmaken van de TCP/IP stack.
We hebben reeds gezien dat een TCP connectie wordt opgezet in drie stappen (TCP Three Way Handshake). SYN Flooding exploiteert dit mechanisme. De drie stappen bestaan uit het zenden van een SYN, het ontvangen van een SYN-ACK en een ACK sturen. Het idee is om op de doelmachine een grote hoeveelheid TCP connecties te laten wachten. Om dit te doen, stuurt de cracker heel veel verbindingsverzoeken (SYN flag = 1), de doel machine stuurt een SYN-ACK terug als antwoord op de ontvangen SYN. De cracker zal niet antwoorden met een ACK, en dus zal de doelmachine voor iedere ontvangen SYN een wachtende TCP verbinding hebben. Daar deze half-open connecties geheugen gebruiken, zal na een tijdje de doelmachine vollopen en geen nieuwe verbindingen meer accepteren. Dit type Denial Of Service treft alleen de doelmachine.
De cracker gebruikt een SYN Flooder zoals een synk4, geeft de doel TCP poort aan en gebruikt random bron IP adressen om te voorkomen dat de aanvallende machine geïdentificeerd kan worden.
Deze Denial Of Service gebruikt de niet-verbonden modus van het UDP protocol. Er wordt een UDP Packet Storm (veel UDP pakketten) gestart, tegen een enkele machine of tegen twee machines. Een dergelijke aanval tussen twee machines leidt tot verstoppingen in het netwerk, en het opraken van beschikbare bronnen op beide machines. De verstopping is belangrijker, daar UDP verkeer voorrang heeft op TCP verkeer. Het TCP protocol beschikt over een mechanisme om om te gaan met verstoppingen, voor het geval de bevestiging van een pakket na lange tijd arriveerd: dit mechanisme past de frequenty aan van het zenden van TCP pakketten, en verminderd deze. Het UDP protocol beschikt niet over een dergelijk mechanisme: na een tijdje zal het UDP verkeer de volledige bandbreedte opslokken, en slechts een klein deel overlaten voor het TCP verkeer.
Het bekendste voorbeeld van UDP Flooding is de Chargen Denial
of Service aanval. De implementatie van deze aanval is eenvoudig:
het is voldoende om een communicatie op te zetten tussen de
Chargen
service van een machine en de echo
service
van een andere. De chargen
service genereerd karakters,
de echo
service de ontvangen data terugstuurd.
De cracker stuurt dan UDP pakketten naar poort 19 (chargen
)
naar een van de "slachtoffers", met het gespoofde IP adres van en
bronpoort van de ander. In dit geval zal de bronpoort de UDP poort 7
(echo
) zijn. De UDP Flooding leidt tot verzadigen van de
beschikbare bandbreedte tussen beide machines. Een volledig netwerk
kan het slachtoffer zijn van een UDP FLooding.
De Denial of Service van het Pakket Fragment type gebruikt de zwakheden van sommige TCP/IP stacks betreffende de IP defragmentatie (opnieuw assembleren van IP fragmenten.
Een bekende aanval die dit gebruikt is Teardrop. De fragmentatie offset van het tweede segment is kleinder dan de grootte van de eerste en dus zal de offset toegevoegd worden aan de grootte van de eerste. Dit betekend dat het eerste fragment de tweede bevat (overlap). Tijdens defragmentatie, kunnen sommige systemen deze uitzondering niet aan, en kan dit leiden tot het wegvallen van service. Er bestaan varianten van deze aanval: bonk, boink en newtear bijvoorbeeld. De Ping of Death Denial of Service exploiteerd slecht management van ICMP defragmentatie, door meer data te sturen dan de maximale grootte van een IP pakket. Deze verschillende soorten van Denial of Service leiden tot een crash van de doel machine.
Deze aanval gebruikt het ICMP protocol. Wanneer een ping (ICMP Echo bericht) wordt verstuurd naar een broadcast adres (bijvoorbeeld 10.255.255.255), wordt deze naar alle machines in het netwerk verstuurd. Het principe van de aanval bestaat uit spoofen van de ICMP ECHO REQUEST pakketten, met de doelhost als bron adres. De cracker stuurt een continue ping stroom naar het netwerk broadcast adres en alle machines zullen antwoorden met een ICMP ECHO REPLY bericht. De stroom wordt dan vermenigvuldigd met het aantal hosts in het netwerk. In dat geval zal de doelhost worden getroffen door de Denial of Service, daar het vele verkeer dat deze aanval genereert tot een verstopping van het netwerk kan leiden.
De Distributed Denial of Service (verdeelde Dos, DDos) verzadigd
het aangevallen netwerk. Het idee is om veschillende bronnen (daemons)
te gebruiken voor de aanval en masters om ze onder controle te houden.
De bekendste DDoS tools zijn Tribal Flood Network (TFN), TFN2K, Trinoo
en Stacheldraht. Afbeelding 13 toont een typisch DDoS netwerk:
Afb.13: DDoS netwerk
De cracker gebruikt masters om eenvoudig controle te houden over de bronnnen. Uiteraard, dient hij een connectie (TCP) op te zetten naar de masters om de aanval in te stellen en voor te bereiden. De masters sturen alleen commando's naar de bronnen via UDP. Zonder de masters zou de cracker moeten connecten naar alle bronnen. De origine van de aanval zou dan veel eenvoudiger achterhaald kunnen worden en de implementatie zou veel meer tijd in beslag nemen.
Iedere daemon en master spreken elkaar door specifieke berichten uit te wisselen, die afhankelijk zijn van de gebruikte tool. Deze communicaties kunnen ook versleuteld en/of geauthenticeerd zijn. Om de daemons te installeren en de masters, gebruikt de cracker bekende zwakke plekken (buffer overflows op services als RPC, FTP, enzovoort). De aanval zelf is een SYN Flooding of een Smurf aanval. Het resultaat van zo'n Denial of Service aanval is om een volledig netwerk onbereikbaar te maken.
Vandaag de dag wordt de beveiliging tegen externe aanvaller sterker en sterker, maar helaas geld dit niet voor de interne beveiliging. Deze "arme relatie" van beveiliging tegen crackers laat nog steeds aantrekkelijke perspectieven open voor lokale aanvallen, zoals TCP Sessie Hijacking, ARP Spoofing en DNS Spoofing. Verder, het voorspellen van volgnummers (het hart van IP Spoofing) en de Fragment aanval varianten duiken alleen maar op door bugs in de uitrusting van het OS. Wat applicatie aanvallen betreft, hebben ze goede tijden in het vooruitzicht, met het oog op de groeiende complexiteit van web gerelateerde applicaties en het korter worden van de deadlines voor ontwikkelaars en beheerders. De Denial of Service aanval zal angstaanjagend blijven in zijn gedistribueerde vorm, zolang gebruikers falen het belang in te zien van de beveiliging vna hun machines.