Pagina 1 van 1

Protocollen, poorten en poortnummers [achtergrondinformatie]

Geplaatst: 10 aug 2012 11:30
door Maxstar
Protocollen, Poorten en Poortnummers [inleiding]

Voordat computersystemen met elkaar kunnen communiceren moeten er eerst zogenaamde afspraken worden gemaakt over de manier van communiceren, vroeger had elke fabrikant een eigen methode om te communiceren (Microsoft had NetBui, Unix had TCP/IP, Novell had IPX). Het TCP/IP protocol is vanuit de UNIX-wereld ontwikkeld en aangezien uit dit protocol ook het internet is ontstaan is het ook de standaard geworden.

Het TCP/IP protocol wordt al vanaf de begin jaren tachtig wordt gebruikt. Sindsdien is er ook weinig veranderd, echter de laatste jaren loopt men door de enorme toename van het gebruik van het IP-protocol tegen de beperkingen van de huidige gebruikte TCP/IP-versie 4, (IPv4) aan.
Vanaf 1992 was men al opzoek naar een opvolger van TCP/IP-versie 4, (IPv4), in 1998 is de definitie van de opvolger afgerond in een aantal zogeheten RFC’s (Request for Comments).

De opvolger van TCP/IP-versie 4, (IPv4) heeft de naam TCP/IP versie 6, (IPv6) of IPng (IP next generation) gekregen. In IPv6 zijn de beperkingen van TCP/IP-versie 4 dat werkt met 4 getallengroepen, bijvoorbeeld 192.168.0.1 verleden tijd.
Elke getallengroep heeft namelijk een bovengrens van 255. Dit betekent dat elke getallengroep 1 Byte voorstelt, in theorie zouden er dus 4.294.967.296 mogelijke IP-nummers moeten zijn (echter in de praktijk zijn er dat heel wat minder omdat er nogal wat gereserveerde nummers zijn).
Met IPv6 zou wordt met 16 getallengroepen gewerkt worden. Dit betekent dat er in theorie 3,40 x 10 (38) mogelijke IP-nummers gevormd kunnen worden.

De protocollen TCP en UDP maken gebruik van poorten en poortnummers die het mogelijk maken om meerdere communicatielijnen tegelijkertijd te kunnen gebruiken. Denk hierbij aan communicatie tussen pc's in een netwerk en of internetcommunicatie zoals het bezoeken van een website, het versturen van e-mail berichten als het uploaden van bestanden via FTP etc.
Niet alleen legitieme programma's en taken maken gebruik van de TCP en UDP protocollen en poorten, maar ook malafide programma's zoals 'Trojaanse Paarden', 'Wormen', 'Rootkits' en dergelijke.

Gezien beveiliging is het dus handig om te weten hoe TCP en UDP protocollen en poorten nu werken en waar u op moet letten, in dit artikel zullen we hier op ingaan en uitleggen hoe u kunt zien wat er via deze poorten aan dataverkeer in- en uitgaat.

TCP/IP Adressen [achtergrondinformatie]

Geplaatst: 10 aug 2012 12:02
door Maxstar
TCP/IP Adressen

Elke computer in een netwerk heeft een uniek nummer, het zogenaamde IP-adres dat de computer heeft verkregen van de router dit is het interne IP-adres. Echter heeft uw modem router ook weer een IP-adres, het publieke IP-adres van de provider.

Een TCP/IP 4 Adres bestaat uit een 32 bits lang getal dat is opgesplitst in 4 keer 8 bits (octets). Elke 8 bits vormen dan ook weer 1 byte, elke byte heeft dan weer een waarde van 0 tot 255.
De 4 bytes worden gescheiden door puntjes. Hierdoor is een adres eenvoudiger, dit noemt men de dotted-decimal notation.

Voorbeeld

Code: Selecteer alles

11000001000010100001111000000010
Na het opdelen in 4 bytes ziet het er als volgt uit.

Code: Selecteer alles

11000001  00001010  00011110  00000010
De dotted-decimal notation is.

Code: Selecteer alles

193.10.30.2
We weten nu dat elke computer die verbinding maakt met het internet zijn eigen unieke IP-adres moet hebben.
Echter een IP-adres bestaat dan ook weer uit twee elementen.
  • Het netwerk nummer (N)
  • Het computer nummer (C)
Het netwerknummer is van belang om meerdere computers onder te brengen in een subnetwerk, een IP-adres is daarom in vijf varianten waarvan er drie het meest gebruikt worden onder te verdelen.
• klasse A 0-127
• klasse B 128-191
• klasse C 192-223
• klasse D 224-239
• klasse E 240-247

Klasse A : Hiervan betekent de eerste byte het netwerknummer en de 3 volgende bytes het computernummer (N = newerknummer, C = computernummer).

Code: Selecteer alles

NNNNNNNN  CCCCCCCC  CCCCCCCC  CCCCCCCC
De eerste byte heeft een waarde van 0 tot 127.
Er zijn 126 netwerken, die elk 16 777 214 computers kunnen hebben.

Klasse B : Hiervan zijn de eerste twee bytes het netwerknummer en de volgende 2 bytes het computernummer.

Code: Selecteer alles

NNNNNNNN  NNNNNNNN  CCCCCCCC  CCCCCCCC
De eerste byte heeft een waarde van 128 tot 191
Er zijn 16 384 netwerken, die elk 65 534 computers kunnen hebben.

Klasse C : Hiervan zijn de eerste drie bytes het netwerknummer en de vierde byte het computernummer.

Code: Selecteer alles

NNNNNNNN  NNNNNNNN  NNNNNNNN  CCCCCCCC
De eerste byte heeft een waarde van 192 tot 223.
Er zijn 2 097 152 netwerken met elk 254 computers.

Verder zijn er nog Klasse D en klasse E adressen die voorlopig niet gebruikt worden.
Er zijn ook enkele gereserveerde adressen : zoals 0.0.0.0 (all zeros), 255.255.255.255 (all ones) die niet gebruikt kunnen worden. Alle adressen die eindigen op 255 kunnen ook niet aan een computer worden toegewezen. Door van de laatste byte een 255 te maken wordt de data naar alle computers verzonden die zich in het sub-netwerk bevinden. Dit is het zogenaamde broadcast adress.

(Localhost) 127.0.0.1 is het loopback adres. Met dit adres wordt steeds de eigen computer bedoeld. Hiermee zal het alleen data naar zichzelf sturen en kan dus ook niet toegewezen worden.
Ook alle adressen in de range van 244.0.0.1 tot 255.255.255.255 worden niet gebruikt om aan een computer toe te wijzen. Het zijn namelijk deels experimentele adressen

Basis Informatie poorten [achtergrondinformatie]

Geplaatst: 10 aug 2012 12:31
door Maxstar
Basis Informatie
De TCP als UDP protocollen en de bijbehorende poortnummers zijn een essentieel onderdeel wat betreft de communicatie van PC's, beide protocollen bestaan uit 65.535 poorten. Op de volgende Wikipedia pagina ziet u een compleet overzicht van deze poorten inclusief een beschrijving.
Via al deze poorten loopt gesorteerd de communicatie, bij normaal internetgebruik hoef je dus in principe nooit handmatig poorten open te zetten om deze te kunnen gebruiken, voor communicatie naar buiten toe gaat dit immers vanzelf. Wat betreft communicatie van buitenaf is het een ander verhaal en daar komen we later op terug.

Veiligheid is natuurlijk een belangrijk iets, U wilt natuurlijk niet dat iedereen zomaar toegang heeft of kan krijgen tot uw computer! Tegenwoordig heeft iedereen wel een router of al dan niet een modem/router combinatie die door de NAT firewall (packet filter) bescherming geeft bij inkomende verbindingen. Om een voorbeeld te geven kunnen applicaties onbedoeld verbindingen open laten staan waardoor er via portscans of malafide software hier misbruik van gemaakt kan worden, ook via 'vulnerabilities' vrij vertaald kwetsbaarheden in software is dit mogelijk.

Een goed voorbeeld hiervan is de internet worm (W32.Blaster). Door een kwetsbaarheid in het RPC protocol was het mogelijk om volledige toegang tot een systeem te krijgen. Computers die direct via een kabelmodem of analoge modem die op de telefoon / ISDN lijn was aangesloten werden medio 2003 massaal aangevallen.
Op poort 135 werd in dit geval een portscan uitgevoerd en indien een systeem toegankelijk was werd er een remote shell opgezet via poort 4444 waarna er verbinding werd gemaakt met een TFTP (Trivial File Transfer Protocol) server en het systeem was geïnfecteerd. Een belangrijk kenmerk was het geforceerd opnieuw opstarten van het systeem binnen 60 seconden, wat alleen te onderbreken was met het commando shutdown -a.

Een recent voorbeeld betreffende het aanpassen van poorten bij een geìnfecteerde computer is de 'Sinowal / Mebroot' infectie die backdoor componenten gebruikt die door vele andere malafide applicaties ook gebruikt worden.
[HKLM\~\services\sharedaccess\parameters\firewallpolicy\standardprofile\GloballyOpenPorts\List]
"3389:TCP"= 3389:TCP:Remote Desktop
"65533:TCP"= 65533:TCP:Services
"52344:TCP"= 52344:TCP:Services
NAT Firewall
De NAT Firewall ook wel 'packet filter' genoemd is een gebruikte techniek bij routers en firewall's die ongevraagd inkomend verkeer blokkeren, op de onderstaande afbeelding is de werking van de NAT Firewall schematisch te zien. Afbeelding

Verschil tussen TCP en UDP [achtergrondinformatie]

Geplaatst: 10 aug 2012 12:32
door Maxstar
Verschil tussen TCP en UDP
Bij het opzetten van een verbinding moet er een keuze gemaakt worden tussen het TCP en het UDP protocol die pakketjes verzend, deze techniek kan je vergelijken met die van bijvoorbeeld de TNT post.
Het TCP protocol is in dit geval het betrouwbaarste protocol wat uitgerust is met een 'fout correctie' / 'error recovery', het UDP protocol heeft dat echter niet en werkt op basis van het principe hopen dat de pakketjes terecht komen en dan ook zonder fouten.

Beide protocollen zijn geschikt voor het communiceren op het internet, maar voor ieder doeleinde op het internet. Voor bijvoorbeeld 'Internetbankieren' of het versturen van e-mail berichten is het UDP protocol ongeschikt want je wilt namelijk niet dat er pakketjes verloren gaan waardoor deze niet aankomen. Vandaar dat voor onder andere deze diensten het TCP protocol wordt gebruikt.

Het UDP protocol is vooral geschikt voor diensten zoals bijvoorbeeld 'YouTube' een 'online game' of 'streaming muziekdienst' aangezien het hierbij niet zo erg als er eens een UDP pakketje verloren gaat.

Zowel TCP als het UDP protocol maken gebruik van multiplexing, deze techniek zorgt ervoor dat de ontvangende computer weet waar de gevraagde data naar toegestuurd moet worden.
Multiplexing is dan ook het gebruik van applicaties, IP-adressen en poortnummers, samen heet dit in jargon een socket wat het mogelijk maakt om een bepaald netwerkbereik te benaderen.
Bij het bezoeken van een website zoals bijvoorbeeld http://www.google.nl" onclick="window.open(this.href);return false; (173.194.78.94) -> TCP -> Poort:80 zal het er schematisch als volgt uitzien.
Afbeelding Lokaal kan dat er heel anders uitzien zoals bijvoorbeeld.
TCP 192.168.1.100:64819 173.194.78.94:80
  • TCP = Het gebruikte protocol.
  • 192.168.1.100 = Het interne IP-adres.
  • 64819 = De interne gebruikte poort.
  • 173.194.78.94 = Het IP-adres van Google
  • 80 = De gebruikte poort - HTTP (Hypertext Transfer Protocol)
Lokaal is nu de poort: 64819 gebruikt omdat deze vrij is, de server van Google gebruikt poort 80 wat een well known poort poort is, voorgedefinieerd en toegekend is voor het gebruik van HTTP (Hypertext Transfer Protocol) verkeer.
De poorten 1 t/m 1023 zijn dus in gebruik bij 'well known applicaties', de techniek multiplexing zorgt er dus voor dat data aan het juiste adres zal worden afgeleverd, de 'well known ports' worden dus gebruikt door de servers en de 'Registered ports' vanaf 1024 t/m 49151 door de clients.

TCP fout correctie en Segmenten
Het TCP Protocol verzend pakketten in segmenten en geeft elk segment een nummer. Dit nummer noemt men een 'sequence number' als er opgemerkt wordt dat er één segment verloren gaat zal het TCP Protocol dit segment opnieuw versturen.
Een server verstuurt namelijk na elk ontvangen segment een ACK (Acknowledgement) wat eigenlijk een bevestiging is van het te ontvangen bestand, als er vervolgens al een nieuw segment wordt gestuurd maar de vorige niet is ontvangen dan weet deze server dat er een segment ontbreekt en aan de hand van het 'sequence number' zal de server dan een ACK request sturen naar de cliënt om het ontbrekende segment opnieuw te sturen.

TCP verbinding - opstelling en het doorgeven van pakketten
Een TCP verbinding zal in het beginsel een verzoek doen om verbinding te maken wat eigenlijk een verzoek om te synchroniseren is, in jargon een SYN request, als de verbinding eenmaal tot stand is gebracht zal elk verstuurde segment met een ACK (Acknowledgement) bevestigd worden. De SYN request –> ACK (Acknowledgement) en het overeenkomen van de poorten (destination en source poorten, de sockets!) noemt men in jargon de 3 way handshake.
Een server zal ACK's versturen totdat de verbinding / overdracht voltooid is en dit zal beëindigd worden met FIN dat staat voor Finished.

MTU Info
Ieder protocol heeft een limiet op de hoeveelheid data die verzonden kan worden, namelijk de MTU (Maximum Transfer Unit). Voor de meeste protocollen maar ook voor het ethernet protocol is de MTU 1500 bytes (c.a. 1 kilobyte). Omdat de TCP en IP headers allebei 20 bytes groot zijn, kan een TCP segment dus nog maar 1460 bytes bevatten.
Het komt er dus op neer dat er nog maar 1460 bytes per segment verzonden kan worden over het gebruikte protocol.

UDP User Datagram Protocol
Dit protocol wat net zoals TCP pakketjes verzend kent geen windowing, 'fout correctie' / 'error recovery' en het gebruik van segmenten, dus zoals bij het TCP protocol is er ook geen sprake van het in de juiste volgorde plaatsen van de verstuurde segmenten.
Op dit vlak distantieert het UDP protocol zich en leent zich dan ook goed voor het verzenden van grote hoeveelheden data die niet opgesplitst dienen te worden.

ICMP (Internet Control Message Protocol) [achtergrondinforma

Geplaatst: 10 aug 2012 12:32
door Maxstar
ICMP (Internet Control Message Protocol)

Naast TCP en UDP is er ook nog een ander veel gebruikt protocol namelijk, ICMP (Internet Control Message Protocol). Het commando "ping" is één van de bekendste toepassingen dat gebruik maakt van ICMP, en werkt op basis van "echo request" en "echo reply".
Bij het PINGEN naar een bepaald IP-adres zal de ontvangende partij een echo reply terug zenden, hierdoor weet je dat dit IP-adres beschikbaar is.

Andere minder bekende diensten die gebruik maken van ICMP, zijn bijvoorbeeld TTL Exceeded (Time To Live) en Destination Unreachable om aan geven dat het pakket de eindbestemming niet heeft bereikt.

Het protocol ICMP kent echter ook gevaren. Een ICMP Redirect kan bijvoorbeeld worden gebruikt om de firewall de opdracht te geven pakketten via een andere route naar specifieke ontvangers te sturen. Hackers verwijzen de route naar hun netwerk of server.

Ook de types "echo request" en "echo reply" waarvan ping gebruik maakt kan misbruikt worden. Zo kan je er namelijk achter komen welke IP-adressen er beschikbaar zijn zoals eerder vermeld, maar ook kan je zien wel besturingssysteem er gebruikt wordt.
Met een goede firewall kan je het externe ge(mis)bruik van het ICMP (Internet Control Message Protocol) voorkomen.

TCP/IP - Poorten en poortnummers [achtergrondinformatie]

Geplaatst: 10 aug 2012 12:54
door Maxstar
Onderverdeling van de poorten
Zoals te zien is op deze Wikipedia pagina is er een behoorlijke lijst met poortnummers, om hier enige structuur in aan te brengen zijn deze poorten in drie groepen verdeeld, te noemen "Well known ports", "Registered ports" en "Dynamically Allocated Ports" die we afzonderlijk zullen toelichten.
Alle poorten die door de verschillende protocollen worden gebruikt liggen in het beheer van IANA (Internet Assigned Numbers Authority).

Poorten
Elke netwerktoepassing die het op een computer wordt uitgevoerd moet over een eigen poortnummer beschikken zodat binnenkomende netwerkpakketten naar de juiste toepassing worden gestuurd. Er zijn 65535 verschillende poorten waarvan de eerste 1024 (0-1023) vast zijn (Well known ports).
De overige poorten (Registered - Dynamically Allocated) (1024-65535) zijn dynamisch.
De gebruikte poorten kunnen in twee vormen voorkomen.
  • Luisterende poorten
    • Deze poorten wachten standaard op een connectie en zijn constant actief. Meestal zijn het server applicaties die deze poorten gebruiken en zijn het gereserveerde poorten. Wanneer er data van het netwerk op een poort binnenkomt, weet de machine voor welke applicatie ze bestemd is. Deze poorten zijn gevoelig voor aanvallen omdat ze juist constant open staan.
  • Dynamische poorten
    • Beide zijden van een TCP/IP connectie hebben een identificatie nodig door een IP-adres en een poort. Als de ontvanger een verbinding wil maken heeft ook die een poort nodig om de gevraagde informatie terug te zenden. De zender neemt dan een poort boven 1023 als die niet bezet is. Die poort wordt dan als zender gebruikt in de communicatie.
Een hacker heeft het dan ook vooral gemunt op de luisterende poorten. Hij weet immers dat een machine altijd zal reageren op zijn vraag en een connectie zal maken. Dan heeft hij alle mogelijkheden om die connectie te misbruiken voor zijn eigen doel.
Well known ports
De "Well known ports" zijn de poortnummers tussen 1 en 1023. Tot 1992 waren alleen de poorten 1 tot en met 255 in gebruik, later is deze reeks tot 1023 uitgebreid doordat er specifieke poorten voor UNIX-services bij moesten komen.
Doordat zowel de afzender als de ontvanger weten welke poort er gebruikt wordt bij elke manier van communiceren is het eenvoudig om een verbinding op te zetten tussen meerdere systemen zonder dat er speciale instellingen aangepast hoeven te worden.

Registered ports
Dit is het poortbereik tussen 1024 en 49151. Dit bereik is bedoeld als back-up voor speciale diensten. Zo maakt een proxy server als alternatief voor poort 80 (http) gebruik van poort nummer 3128, en het SMTP protocol (Simple Mail Transfer Protocol) maakt bijvoorbeeld weer gebruik van poort 25.

Dynamically Allocated Ports
Deze worden ook wel Ephemeral ports genoemd. De poorten liggen in het bereik 49152 tot en met 65535. Ze worden dynamisch toegewezen aan clients die een poort nodig hebben. Mits ze voldoen aan een geldige combinatie van transportprotocol, IP-adres en poortnummer.

Verbindingen monitoren [achtergrondinformatie]

Geplaatst: 10 aug 2012 13:59
door Maxstar
Verbindingen monitoren

Om inzage te krijgen in wat er met de poorten gebeurt en hoe zij worden gebruikt, moet u gebruik maken van een speciale tool. Bij Windows worden standaard twee van deze tools meegeleverd, NetStat en NbtStat.

NetStat
Om te weten welke poorten actief zijn op uw pc kunt u gebruik maken van het commando netstat dat in Windows is ingebouwd. Het programma biedt weliswaar niet zeer veel opties maar kan toch een aardig beeld geven welke poorten open staan wanneer u met de pc werkt:
  1. Ga naar Start >> Uitvoeren.
  2. Typ cmd en druk op Enter.
  3. Geef hier nu het commando netstat -ano op gevold door enter

U ziet nu een venster zoals hierboven afgebeeld. NetStat toont een lijst van alle inbound en alle outbound netwerkconnecties, inclusief alle informatie van openstaande TCP- en UDP-poorten, IP-adressen en de status van een connectie. Het programma kent een aantal parameters. Om meer essentiëlere informatie uit NetStat te kunnen destilleren heeft u deze parameters beslist nodig. Een overzicht van deze parameters kunt u opvragen terwijl u werkt met NetStat door te typen:

netstat /?

De info van netstat is ook weg te schrijven naar een log-bestand, dit kan bijvoorbeeld door middel van het commando netstat -ano > C:\log.txt

NbtStat
Een andere ingebouwde Windows netwerkanalyse-tool is NbtStat. Dit programma start u op dezelfde manier als NetStat, dus ook via de command prompt. Het programma toont de protocolstatistieken van NetBIOS, zoals dat via TCP/IP (NetBT) wordt gebruikt. Zo ziet u de naamtabellen van NetBIOS voor zowel de lokale pc als voor de remote computer en wordt ook de naamcache getoond van NetBIOS. Verder kan NbtStat deze naamcache opschonen.

Third party tools
Er zijn echter veel specifiekere tools om te zien wat er in de praktijk gebeurt met actieve poorten, hieronder staan drie geavanceerde tools om uw netwerkverkeer te monitoren.