Portscanning:
draagt bij aan de veiligheid van je systeem

De functie van poorten

Poorten zijn er grotendeels voor verantwoordelijk dat gegevenspakketten hun weg vinden naar het gewenste doel. Ze functioneren als een koppeling tussen computers en systeemservices of programma's en worden gebruikt door de netwerkprotocollen TCP en UDP. In combinatie met het IP-adres, weet het besturingssysteem door de poortinformatie niet alleen naar welke doelcomputer de gegevens moeten worden gestuurd, maar ook naar welke toepassing de pakketten gestuurd moeten worden.


wetenswaardigheden over poorten

Wetenswaardigheden over poorten

Iedere poort krijgt een nummer van 0 tot 65535. Er wordt onderscheid gemaakt tussen drie verschillende domeinen:

  • De poorten 0 tot 1023 tellen als standaardpoorten. De Internet Assigned Numbers Authority (IANA) heeft grotendeels vaste protocollen en diensten aan deze poorten toegewezen. Poort 80 is bijvoorbeeld gereserveerd voor HTTP-verbindingen en is daardoor de belangrijkste poort voor aanvragen van webservers.
  • De poorten 1024 tot 49151 zijn standaard bedoeld voor geregistreerde diensten, maar worden – voornamelijk door Linux-systemen – ook toegewezen aan clientprogramma's.
  • De poorten 49152 tot 65535 worden door de besturingssystemen dynamisch aan clientprogramma's toegewezen.

De poort moet geopend – oftewel vrijgegeven – zijn om er een verbinding mee op te kunnen bouwen. Vooral bij gegevenstransfers via internet betekent dit natuurlijk een groot aantal open poorten, waardoor een nieuw probleem ontstaat: iedere open poort is een mogelijke toegang voor kwaadwilligen, als de gebruikte applicatie een beveiligingslek heeft. Daarom is het belangrijk om altijd te kijken welke poorten op je systeem zijn geopend en welke applicaties er draaien achter het stromende dataverkeer. Bekende hulpmiddelen waarmee je vrijgegeven poorten kunt vinden, zijn zogenaamde portscanners.


wat is portscanning

Wat is portscanning?

Met portscanning wordt bedoeld: het doelgerichte proces waarmee je open poorten van een computersysteem, met behulp van speciale tools, controleert. Om zo'n scan uit te voeren, hoef je niet op het doelsysteem aangemeld te zijn. Het is voldoende ermee verbonden te zijn – bijvoorbeeld via een lokaal netwerk of via internet. Met behulp van de portscanner verstuur je speciale gegevenspakketten als test naar verschillende poorten en krijg je reacties of foutmeldingen terug, die door de tool worden geanalyseerd. Afhankelijk van de beschikbare functies van het gebruikte scanprogramma, kom je op deze manier niet alleen te weten welke poorten geopend of gesloten zijn, maar ook welk besturingssysteem op de doelcomputer wordt gebruikt, hoe lang de computer al aan staat en welke diensten en applicaties de afzonderlijke poorten gebruiken.

Portscanning is voor veel systeembeheerders een efficiënte manier om het gegevensverkeer binnen een netwerk te overzien en eventuele zwakke punten te identificeren. In sommige gevallen kun je op deze manier ook concrete netwerkproblemen oplossen. Omdat de tools het prestatievermogen van de onderzochte systemen niet opvallend beïnvloeden, kun je ze probleemloos voor zulke veiligheidsmaatregelen gebruiken. Ook op de thuiscomputer is de portscanner nuttig. Zodra je applicaties installeert en gebruikt die toegang tot internet vereisen, worden er automatisch poorten geopend – tenzij je firewall dit voorkomt. Een portscan helpt om het overzicht te behouden en geeft aan welke poorten niet meer worden gebruikt. Deze kunnen dan worden gesloten om het veiligheidsrisico te verlagen.


hoe functioneert portscanning

Hoe functioneert een portscan precies?

Portscanners bieden standaard verschillende methodes aan, hoewel het grootste deel gebruikmaakt van het verbindingsgeoriënteerde TCP-protocol. Om de basisprocessen van een portscan te begrijpen, is het daarom raadzaam te kijken naar het verloop van de algemene TCP-verbindingsopbouw:

  • In het kader van dit proces – dat ook wel de three-way-handshake wordt genoemd – stuurt de client allereerst een SYN-pakket (synchronize = ‘synchroniseren’) naar de doelpoort.
  • Als de client op deze manier een applicatie bereikt, krijgt hij een gecombineerd SYN/ACK-pakket (synchronize acknowledge = ‘synchronisatie bevestigd’) terug, dat de verbindingsaanvraag bevestigt.
  • De client stuurt tijdens de derde en laatste stap een ACK-pakket (acknowledge = ‘bevestigen’) terug. Daardoor wordt de verbinding tot stand gebracht en kan de gegevensuitwisseling beginnen.

Als een gesloten poort wordt gecontacteerd, krijgt de client tijdens de tweede stap een RST-pakket (reset = ‘ongedaan maken’) als antwoord terug en wordt de handshake gestopt.

Omdat het vrij omslachtig en complex is om gegevens met verschillende soorten applicaties uit te wisselen, is portscanning beperkt tot eenvoudige verbindingsaanvragen. Dit is te zien aan de gebruikelijke scanmethodes, die hieronder worden uitgelegd.


TCP-SYN-scan

Een TCP-SYN-scan wordt ook vaak een halfopen scan genoemd, omdat deze niet tot doel heeft om een volledige TCP-verbinding tot stand te brengen. Bij deze methode verstuur je met de portscanner gewone SYN-pakketten naar afzonderlijke poorten en wacht je op de reactie van de doelhost. Als deze een SYN/ACK-pakket terugstuurt, geeft hij aan dat de betreffende poort openstaat en er een verbinding kan worden opgebouwd. Als het antwoord een RST-pakket is, is de poort gesloten. Als je geen reactie krijgt van de doelpoort, wordt er hoogstwaarschijnlijk gebruikgemaakt van een pakketfilter zoals een firewall. TCP-SYN-scans zijn niet zichtbaar voor de gecontroleerde applicaties, wat betekent dat ze ook geen logs creëren. Om deze reden worden ze ook stealth-scans (‘geheimscans’) genoemd.


TCP-connect-scan

Als je met je portscanner een connect-scan uitvoert, creëer en verstuur je de datapakketten niet zelf, maar gebruik je daarvoor het systeemcommando connect. Dit is op bijna ieder besturingssysteem beschikbaar – de webbrowser maakt hiervan bijvoorbeeld gebruik om verbinding met een server tot stand te brengen. De scanningtool zorgt er dus niet voor dat een verbinding tot stand wordt gebracht, maar geeft het besturingssysteem de opdracht om dit te doen. Het besturingssysteem kan dan ofwel de verbinding tot stand brengen en vervolgens bevestigen dat de poort open is, ofwel geen verbinding maken en daardoor de gekozen poort als gesloten markeren. Zodra de verbindingsopbouw helemaal is afgerond, kun je in de logfiles van de applicatie met open poorten zien dat deze scanmethode is gebruikt. Je kunt echter niet zien welke filterprogramma's worden gebruikt. Als je niet over de rechten beschikt om ruwe gegevenspakketten te versturen, is de TCP-connect-scan alsnog een nuttig alternatief voor een SYN-scan.


TCP-FIN-, Xmas- en Null-scans

Ook met deze drie portscanning-methodes kun je onderscheid maken tussen open en gesloten poorten. Hiervoor maak je gebruik van twee principes, die in het RFC (Request for Comments) van TCP (793) zijn geregistreerd. Inkomende pakketten die geen RST-pakketten zijn, moeten door een gesloten poort altijd met een RST-pakket worden beantwoord. Alle pakketten die niet als SYN, RST of ACK zijn gemarkeerd, moeten worden genegeerd door een open poort. De drie scansoorten maken gebruik van deze situatie, wanneer ze RFC-conforme systemen scannen met hun individuele pakketten.

  • De Null-scan gebruikt geen bijzondere markering.
  • Bij de FIN-scan stuurt de portscanner FIN-pakketten (finish (‘beëindigen’).
  • Xmas-scans gebruiken een combinatie van FIN-, PSH- (push = ‘duwen’) en URG-markeringen (urgent = ‘dringend’). Dit maakt dat het pakket oplicht, net als een kerstboom.

Alle drie de scantechnieken werken op dezelfde manier. Hun verstuurde testpakketten zorgen er vanwege de RFC-bepalingen voor dat een gesloten poort met een RST-pakket reageert en een open poort helemaal geen antwoord geeft. Omdat slechts enkele routers een foutmelding aangeven als een poort wordt gefilterd, kan een ontbrekende reactie ook betekenen dat de poort is gefilterd. Hoewel deze scans nog onopvallender zijn dan SYN-scans, hebben ze het nadeel dat ze niet functioneren wanneer systemen zich niet precies aan de principes van RFC 783 houden. Dit is bijvoorbeeld bij Windows het geval.


UDP-scan

Bij een UDP-scan worden lege UDP-headers zonder gegevens naar alle doelpoorten gestuurd. Als een dienst op zijn beurt met een UDP-pakket antwoordt, wordt bevestigd dat de bijbehorende poort is geopend. Als de portscanner van de router de foutmelding ‘port unreachable’ (type 3, code 3) ontvangt, weet hij dat de poort is gesloten. Andere foutmeldingen kunnen aangeven dat een pakketfilter de poort blokkeert. Het grote probleem van UDP-scans is dat ze veel tijd kosten, omdat het bij veel systemen om veiligheidsredenen lang kan duren tot de foutmelding wordt verstuurd. Ook open poorten reageren vrij onregelmatig. De Linux-kernel beperkt het aantal meldingen bijvoorbeeld tot één per seconde. Bij 65.535 poorten betekent dit een scan van ongeveer 18 uur.


Welke portscanners bestaan er

Welke portscanners bestaan er?

Er bestaan verschillende scanners met verschillende uitgebreide functies. Het grootste deel van deze tools zijn freeware of open source. Veel scanners zijn klassieke programma's voor de commandoregel die je ook via afzonderlijke grafische gebruikersomgevingen kunt bedienen. Bovendien staan er op internet talrijke oplossingen waarmee je poorten direct in de browser kunt scannen. De functies van deze diensten zijn echter sterk beperkt en bieden, zoals bijvoorbeeld de portscanner van DNStools, alleen de mogelijkheid om enkele poorten te controleren. Daarom zijn ze eerder geschikt als eenvoudige optie voor een snelle controle vanaf de computer thuis.


Netcat – het fundament van de netwerktools

Netcat (kort: nc) werd in 1996 door een anonieme ontwikkelaar onder het pseudoniem ‘hobbit’ gepubliceerd. Oorspronkelijk is het programma geschreven voor UNIX-platformen, maar ondertussen bestaan er diverse technieken voor andere systemen zoals Windows en verschillende ontwikkelingen die daarop gebaseerd zijn zoals GNU Netcat, OpenBSD Netcat, Cryptcat en Netcat6 (ondersteunt ook IPv6) die standaard op veel Linux-distributies zijn geïmplementeerd. De basisversie van de commandoregel-tool heeft tot doel om gegevens via TCP- en UDP-netwerkverbindingen te versturen of te lezen, kan echter ook als eenvoudige portscanner worden gebruikt. Je kunt bijvoorbeeld met een eenvoudig commando zoals


nc -zv localhost 20-30

de status van de poorten 20 tot 30 op het uitvoerende systeem controleren. Om UDP-poorten te controleren, heb je de aanvullende parameter -u nodig. Bovendien kun je externe systemen scannen in plaats van localhost, op voorwaarde dat je de hostnaam of het IP-adres kent.


Omvangrijke netwerkanalyse met Nmap

Een veel krachtigere tool die vooral overtuigt vanwege zijn functie als portscanner is de in 1997 verschenen Network Mapper, beter bekend onder de afkorting Nmap. Het programma, dat voor soortgelijke systemen als Unix is ontwikkeld, heeft een GPL-licentie en is sinds 2000 – met enkele beperkingen – ook beschikbaar voor Windows-systemen. De TCP-connect-scan duurt bijvoorbeeld buitengewoon lang vanwege het API-netwerk van Windows en het scannen van je eigen systeempoorten is alleen via een omweg mogelijk. Standaard kun je Nmap via de commandoregel bedienen. Er bestaat echter een sterke grafische interface, waarmee je de netwerktool nog comfortabeler kunt gebruiken: Zenmap.

Gordon Lyon, de uitvinder van Nmap, en zijn developerteam ontwikkelen het programma en zijn portscanning-functies nog altijd verder, waardoor het ondertussen over veelzijdige functies beschikt. Vooral technieken als OS-fingerprinting, waarmee het besturingssysteem van de doelhost bekend wordt, en het herkennen van diensten die achter een poort zijn verborgen, maken Nmap tot een van de populairste portscanner-oplossingen. De veelzijdigheid komt ook tot uiting in de beschikbare scanmethodes die zijn samengevat in onderstaande tabel.

Portscanning-methodes Nmap-commando Beschrijving
TCP-connect-scan nmap -sT Host klassieke controle voor niet-beheerders
TCP-syn-scan nmap -sT Host snelle, onmerkbare controlemethode voor beheerders
TCP-FIN-/Xmas-/Null-scan nmap -sF Host
nmap -sX Host
nmap -sN Host
Methodes die firewalls kunnen omzeilen
TCP-ping-scan nmap -sP Host geen klassieke portscan; helpt om de bereikbaarheid van een host te controleren
TCP-ACK-scan nmap -sA Host stelt gefilterde poorten vast, maar maakt geen onderscheid tussen open en gesloten poorten
TCP-window-scan nmap -sW Host vergelijkbaar met de ACK-scan; kan enkele open en gesloten poorten verifiëren
TCP-window-scan nmap -sW Host vergelijkbaar met de ACK-scan; kan enkele open en gesloten poorten verifiëren
TCP-maimon-scan nmap -sM Host combinatie van FIN- en ACK-scan
TCP-idle-scan nmap -sI Host onopvallendste, ingewikkeldste en daardoor ook langzaamste
UDP-Scan nmap -sU Host scanmethode voor de verbindingsloze UDP-poorten
SCTP-Init-Scan nmap -sY Host portscan met SCTP, een alternatief voor TCP en UDP
IP-Protokoll-Scan nmap -sO Host geen portscan; test welke op IP-gebaseerde protocollen op het doelsysteem worden ondersteund

Je kunt Nmap en de interface Zenmap op de officiële homepage downloaden voor elk gewenst besturingssysteem. De actuele versie (stable) en een bèta-versie (development) die nog in de ontwikkelingsfase is, staan hier ter beschikking.


Portscanning niet altijd legaal

Waarom portscanning niet altijd legaal is

Nmap is niet alleen populair bij computergebruikers, maar ook bij filmregisseurs. Trinity, de vrouwelijke hoofdrol in de ‘Matrix’-trilogie, gebruikt de netwerktool bijvoorbeeld in het tweede deel van de sciencefictionsaga om de poorten van het computersysteem van een energiecentrale te scannen. Het is echter niet haar bedoeling om de veiligheid van het systeem te verbeteren, integendeel: ze gebruikt het resultaat van de scan om toegang tot de computer te verkrijgen. Hiervoor gebruikt ze een schadelijke programmacode, die misbruik maakt van een beveiligingsleemte van het SSH-protocol dat via poort 22 loopt. Hoewel deze scène een zeer vereenvoudigde aanval toont, komen hierin wel de potentiële gevaren naar voren die portscannen kan ontketenen.

Een portscan is dus niet altijd legaal. Een exploit-poging, de vakterm voor het profiteren van een beveiligingsleemte, geldt in ieder geval als strafbare handeling. Minder duidelijk is de rechtspositie als je een computersysteem door intensieve portscans platlegt. Het scannen betekent vanwege de hoge frequentie aan verbindingsaanvragen een sterke belasting van het doelsysteem, dat daardoor eventueel kan vastlopen. Bovendien kunnen de beheerders van het doelsysteem jouw scan al ontdekken voordat het systeem vastloopt en als eerste stap van een aanval zien. Juridische gevolgen kunnen in zulke gevallen niet worden uitgesloten. Als overbelasting op een niet-eigen systeem bewust wordt veroorzaakt, is er sprake van een DoS- of een DDoS-aanval, die hoogstwaarschijnlijk een gerechtelijk proces als gevolg heeft.

Controleer daarom altijd eerst of je bevoegd bent om een portscan op het doelsysteem uit te voeren en gebruik de techniek uitsluitend om veiligheidsredenen en niet uit nieuwsgierigheid. De genoemde manieren om gebruik te maken van portscanning onderstrepen hoe belangrijk het is om de poorten, netwerkcomputers en de services die toegang hebben tot de poorten van je eigen systeem in de gaten te houden.


  • Gecertificeerde veiligheid

    Gecertificeerde veiligheid
  • Beste hostingbedrijf

    Beste hostingbedrijf
  • MKB Best Choice

    MKB Best Choice
  • Professionele support

    Professionele support
  • Hosted in Germany

    Hosted in Germany