[HOWTO] Sniffing & Spoofing

Pagina: 1
Acties:
  • 9.282 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • Victor
  • Registratie: November 2003
  • Niet online

HOWTO: Sniffing & Spoofing


Inhoudsopgave


« ·^

Inleiding

Sniffen en spoofen zijn termen waar nogal snel mee gegooid wordt. Sniffen vaak in combinatie met de angst voor digitale luistervinken, mensen die al je bankzaken en internetverkeer zouden kunnen afluisteren. Spoofing als niemand weet waar bijvoorbeeld een pestkop op een forum vandaan komt. Z'n IP adres lijkt van een of ander tropisch eiland afkomstig te zijn, maar uit z'n berichten is op te maken dat je het toch stukken dichter bij huis moet zoeken. Wat houden deze technieken nu eigenlijk in? Wat is er mee mogelijk? En misschien wel net zo interessant: hoe pas ik ze toe? Daar gaat het in deze howto om.


« ·^

Sniffing

Sniffing is simpel gezegd het afluisteren van een netwerkverbinding. Hierbij worden alle IP pakketten die de netwerkkaart passeren door speciale software opgevangen en weergegeven. Dit kan handig zijn bij het troubleshooten van netwerkproblemen. Bijvoorbeeld als bepaalde delen van een netwerk geen verbinding kunnen maken met een DNS server. Door te sniffen kun je zien of er op pakketniveau iets mis gaat. Verlaten de pakketten het werkstation wel, maar komen ze bijvoorbeeld niet voorbij een verderop in het netwerk geplaatste firewall? Op deze manier kun je zeer nauwkeurig naar een oplossing werken, door stap voor stap mogelijke oorzaken af te werken.

Een andere toepassing van sniffing is het afluisteren van netwerkverkeer om op die manier waardevolle informatie te achterhalen, en deze later te gebruiken in een hack. Dit laatste is nog niet zo eenvoudig als het lijkt. Veel protocollen beschikken tot op zekere hoogte over encryptie, zoals bijvoorbeeld SSL voor beveiligd HTTP verkeer en SSH voor versleutelde shell sessies met UNIX/Linux varianten. De pakketten zijn dan nog steeds te sniffen, maar de inhoud is onleesbaar tenzij je over de keys beschikt waarmee de sessie versleuteld is.

Om netwerkverkeer te kunnen sniffen moet de netwerkkaart van jouw PC wel de pakketten ontvangen waar je op uit bent. Normaal gesproken is dit alleen netwerkverkeer dat je zelf genereerd door bijvoorbeeld surfen of gebruik van netwerkbronnen zoals gedeelde mappen. Er zijn echter mogelijkheden om pakketten afkomstig van andere machines op te vangen. Hubs hebben bijvoorbeeld de vervelende eigenschap pakketten alle poorten uit te sturen. Op deze manier krijg je dus ook netwerkverkeer binnen dat niet aan jou gericht was. Hubs beginnen gelukkig verleden tijd te raken en worden vervangen door switches. Switches werken net als een ouderwetse telefooncentrale; Ze leggen een verbinding tussen twee poorten net zoals de dames en heren van de PTT dat in vervlogen tijden deden tussen twee telefoonaansluitingen. Om een verbinding te leggen tussen twee poorten heeft een switch wel een kritiek stukje informatie nodig: namelijk de MAC adressen van de aangesloten machines. Een switch is namelijk een zogeheten Layer 2 apparaat: het werkt op Layer 2 van het OSI model, en legt z'n verbinding op basis van de fysieke (MAC) adressen. Als de switch een pakket binnen krijgt met een bestemming waarvan hij het bestaan nog niet weet, zal hij het pakket alle poorten uitsturen. Op deze manier "leert" de switch ook aan welke poort welke machine met welk MAC adres hangt, zodat hij in de toekomst pakketten direct naar de juiste poort kan sturen. Als de switch een zogeten broadcast (het uit alle poorten sturen van netwerkverkeer) doet, zal jij op jouw netwerkkaart dus ook verkeer ontvangen dat wellicht niet aan jou gericht was. Een switch leert echter heel snel, en broadcasts door onbekende MAC adressen zullen dus ook niet vaak genoeg voorkomen om aan relevante informatie te komen.

Maar hoe kom je dan aan je interessante pakketten op een netwerk dat is opgebouwd uit switches? Hiervoor is er een techniek genaamd "ARP poisoning". Om IP adressen aan MAC adressen te koppelen is er het ARP protocol. Iedere machine in een netwerk heeft zelf een zogeheten ARP tabel waarin wordt bijgehouden welk IP adres bij welk MAC adres hoort. Door zo'n tabel te vullen met valse informatie (poisoning) kun je pakketten dus naar een heel andere machine laten sturen dan eigenlijk de bedoeling is. Aangezien er bij ARP totaal geen controle is op wie de machine van z'n informatie voorziet, kan dus iedereen door middel van een ARP pakket wijzigingen aanbrengen in de ARP tabel. Een schematische weergave van hoe ARP poisoning werkt:

Fig. 1:
Het netwerk zoals het eruit ziet voor de sniffer

De sniffer stuurt een ARP pakket naar het doelwit waarin hij vertelt dat de gateway met IP adres 192.168.1.1 MAC adres 68-61-63-6b-65-72 heeft. Nu zullen pakketten gericht aan 192.168.1.1 dus naar de sniffer gestuurd worden. Het doelwit zal echter snel doorhebben dat er iets mis is, aangezien er geen antwoord komt op de verstuurde pakketten. Hiervoor zal de sniffer dus als een soort van router op moeten treden. Door de gateway een ARP pakket te sturen waarin staat dat het doelwit met IP adres 192.168.1.2 MAC adres 68-61-63-6b-65-72 heeft, zullen dus beide apparaten in de veronderstelling zijn dat ze met elkaar praten, terwijl de sniffer er dus tussen zit. Om deze communicatiestroom goed te laten verlopen zal er wel software op de machine van de sniffer aanwezig moeten zijn om de pakketten door te sturen naar het doelwit danwel de gateway. Als alles eenmaal werkt, zal het netwerk er voor het doelwit en de gateway er als volgt uit zien:

Fig. 2:
Het netwerk zoals het eruit ziet voor het doelwit

In werkelijkheid zit hier dus ook nog de sniffer tussen, die het verkeer tussen beide machines afhandelt én kan sniffen zonder dat iemand het door heeft. Wellicht dat er zich wat performance problemen voordoen, aangezien een normale PC niet gebouwd is op het routeren van pakketten. Bij normaal gebruik van het netwerk zal de sniffer echter onopgemerkt blijven voor het doelwit. Kort samengevat kun je dus sniffen als: het netwerkverkeer aan jouw machine gericht is, je met de andere machines verbonden bent door middel van een hub of als je gebruik maakt van ARP poisoning.

Maar hoe zit het dan met het internet? Kun je het verkeer tussen twee machines die als enige verbinding met elkaar het internet hebben sniffen? Nee, in principe niet. ARP poisoning werkt niet, aangezien het hele internet op layer 3 werkt (IP adressering dus, niet layer 2 waar ARP op van toepassing is) en er is nergens een hubje waar je je laptop even in kan prikken. De enige mogelijkheid is de machines hun verkeer via een (transparante) proxy laten sturen. Hiervoor zal je echter toegang moeten hebben tot de machines om aan beide kanten het zaakje zo te configureren dat ze van de proxy gebruik maken. Als je toevallig werkt voor de ISP waar één van beide machines op is aangesloten, dan zijn er weer zat mogelijkheden, maar daar gaan we maar even niet vanuit. Simpel gezegd is sniffen op internet dus niet mogelijk.


« ·^

Spoofing

Spoofing betekent niets meer dan vermommen, doen alsof je iemand of iets anders bent. Op het wereld wijde web wordt dit onder andere gebruikt bij spam emails. Het emailadres van de afzender is veelal een adres dat niet bestaat, of dat in ieder geval niet van de werkelijke afzender is. Op deze manier is de spammer lastiger te achterhalen. Spoofing kan echter ook worden toegepast op IP pakketten. Hierbij is net als in geval van de spam, de afzender niet wie hij zegt dat hij is.

Waar bij de spam het doel al bereikt is als de email aan komt en misschien zelfs gelezen wordt, is het nut van een gespoofte afzender in geval van een IP pakket wat minder duidelijk. Er is immers geen communicatie mogelijk als de afzender niet klopt, reacties op het pakket zullen namelijk naar het verkeerde IP adres gestuurd worden.

Maar hoe kan het dan dat mensen op internet dan toch hun IP adres weten te veranderen? Het antwoord is heel simpel: niet. Ze hebben nog steeds hetzelfde IP adres als dat ze van hun provider hebben gekregen, maar om bijvoorbeeld webpagina's op te vragen maken ze gebruik van een proxy server. Zij sturen hun aanvraag voor een bepaalde pagina naar de proxy server, en de proxy server haalt uiteindelijk de pagina op en stuurt deze weer terug. Voor degene die de webpagina aanbiedt zal het dus lijken alsof deze persoon het IP adres van de proxyserver heeft. Dit is in principe spoofing te noemen, maar er komt dus niets technisch bij kijken om dit voor elkaar te krijgen. Iedereen kan immers in zijn browser een proxy server opgeven, en hiervan gebruik maken. Het grote nadeel van proxy servers is dat ze veelal langzaam zijn en niet al het verkeer doorlaten. Ze zijn dus eigenlijk alleen geschikt voor HTTP verkeer.

Ok, ik kan dus niet mijn IP adres spoofen en hiermee gaan surfen, maar wat heeft het dan voor nut? Zoals al wel duidelijk was, normaal gebruik in combinatie met gespoofte IP pakketten is niet mogelijk. Helaas zijn er wel schadelijke doeleinden te bedenken. Zo kun je door middel van gespoofte IP pakketten een Denial of Service (DoS) veroorzaken. Als twee machines met elkaar willen "praten" door middel van TCP/IP zullen ze eerst een zogeheten 3-way handshake moeten doorlopen. Waar mensen als ze elkaar tegen komen zeggen "Hé, hoe is het met jou? - Ja goed, met jou? - Z'n gangetje, z'n gangetje" houden computers het iets korter, namelijk "Syn - Syn/Ack - Ack". Hiermee maken ze aan elkaar duidelijk dat ze allebei klaar zijn voor een TCP/IP sessie. Nadat een computer een Syn pakket heeft ontvangen, zal hij een connectie reserveren en Syn/Ack terugsturen. Mocht hier geen Ack op terug komen, dan zal hij net zolang Syn/Acks blijven terugsturen tot of de sessie bevestigd wordt met een Ack of dat er een timeout verstrijkt en de connectie weer wordt vrijgegeven. Door dus met een gespoofte afzender een enorm aantal Syn pakketten naar een computer te sturen, zal je uiteindelijk alle beschikbaar connecties van die machine gebruiken doordat deze geen antwoord krijgt op z'n Syn/Ack pakketten. Hij staat dan niets anders te doen dan wachten op een antwoord wat nooit zal komen. Doordat alle connecties in gebruik zijn, zullen normale "geldige" verbindingen niet meer mogelijk zijn en zal de machine dus niet te bereiken zijn.

Fig. 3:
Een DoS aanval met gespoofte Syn pakketten

Kort samengevat is het spoofen van een IP adres altijd schadelijk. Normale TCP/IP communicatie is niet mogelijk, en het kan enkel gebruikt worden om schade aan te richten. Als het gaat om anoniem blijven op internet zijn er andere methoden, zoals het gebruik van proxy servers.

« ·^

Credits

Deze howto is geschreven door King_Louie. Staat er iets tussen wat volgens jou niet klopt? Vragen? Opmerkingen? Stuur ze naar

« ·^

Lijst met figuren

  • Figuur 1: Het netwerk zoals het eruit ziet voor de sniffer
  • Figuur 2: Het netwerk zoals het eruit ziet voor het doelwit
  • Figuur 3: Een DoS aanval met gespoofte Syn pakketten

[ Voor 12% gewijzigd door pasta op 21-05-2005 16:37 ]


Dit topic is gesloten.