Een portscanner is een computerprogramma dat op verschillende manieren probeert te achterhalen welke TCP- en UDP-poorten op een computer bereikbaar zijn. Er kunnen verschillende redenen zijn om dit te doen. Ook zijn verschillende mechanismen in gebruik, zoals SYN-scanning en ACK-scanning. De juridische status van het uitvoeren van een portscan richting een computer die eigendom is van iemand anders is enigszins omstreden, daar het gezien kan worden als een strafbare voorbereidingshandeling voor een cyberaanval.[1]

Een bekende portscanner is het programma nmap.

Intrusion detection systemen zijn ontwikkeld om onder meer poortscans te herkennen.

Legitieme poortscans bewerken

Portscanners zijn belangrijke gereedschappen voor systeembeheerders en computerveiligheidsadviseurs, omdat deze scans een objectief beeld opleveren van de beveiliging van netwerken en individuele computers. Er zijn dan ook verschillende bedrijven en organisaties die netwerk- en poortscanners leveren of scans als service via het web aanbieden.[2][3][4][5][6][7][8][9][10] Ook aanbieders van online diensten, zoals IRC-aanbieders gebruiken portscans om vast te stellen of cliënten gebruikmaken van open proxy's.[11]

Illegitieme portscans bewerken

Daar de portscanner effectief aan achterdeuren rammelt om te zien of er niet ergens een deur open staat, kan het gebruik van deze software in sommige gevallen ook worden gezien als een strafbare voorbereidingshandeling. Dit geldt echter alleen als eveneens sprake is van een strafbare handeling zoals computervredebreuk (art. 138ab, lid 1 Wetboek van strafrecht; art. 144a, lid 1 Wetboek van Strafrecht BES), want de portscan zelf is niet strafbaar.

Veel portscans zijn echter niet direct afkomstig van kwaadwillenden, maar van wormen en virussen op geïnfecteerde computers, die op deze manier doelwitten voor besmettingen proberen te identificeren. Bij deze laatste vorm worden veelal alleen specifieke poorten gescand.

TCP scan bewerken

Bij een TCP scan worden de diensten van het besturingssysteem gebruikt om te proberen een verbinding met een andere computer op te bouwen. Als de verbinding is opgebouwd (na een three-way handshake), verbreekt de scanner de verbinding. Het voordeel is dat de operator geen systeemprivileges hoeft te bezitten en de gebruikte software erg eenvoudig is. Het gebruik van besturingssysteemroutines verhindert echter dat de gebruiker gebruikte TCP-pakketten kan manipuleren.

SYN scan bewerken

Een SYN-scan, ook wel bekend als halfopen scan maakt gebruik van specifieke, vaak gemanipuleerde TCP-pakketten. Nadat het doelwit met een ACK heeft gereageerd op het verzoek een verbinding te openen (met een SYN-pakket), wordt een RST (reset) pakket verzonden. Hierdoor wordt de three-way-handshake niet voltooid en wordt de verbinding nooit helemaal geopend. Vandaar de naam.

ACK scan bewerken

Een ACK scan is een vrij specifieke tool waarmee niet de beschikbaarheid van een poort, maar de achterliggende firewall wordt getoetst. Deze vorm van scannen is gebaseerd op het feit dat eenvoudige firewalls inkomende verbindingen herkennen aan het SYN-pakket en reeds opgebouwde verbindingen negeren. Door nu domweg het SYN pakket achterwege te laten en te doen alsof er reeds een bestaande verbinding is, kunnen conclusies over de regels van de desbetreffende firewall worden achterhaald. Dit werkt echter alleen als de firewall software niet statefull is, dat wil zeggen geen interne informatie over de toestand van verbindingen bijhoudt. Moderne firewall software is over het algemeen echter statefull, waardoor deze manier van scannen niet erg nuttig meer is.

FIN scanning bewerken

Omdat veel firewalls het SYN-pakket gebruiken om inkomende verbindingen te detecteren en zo nodig te blokkeren, is een alternatief bedacht dat zich baseert op een verschillende behandeling van het FIN-pakket, dat bij normaal gebruik het einde van een TCP verbinding aankondigt. Gesloten poorten reageren op een FIN met een RST-pakket, terwijl open poorten het pakket negeren. Deze techniek werkt echter niet bij sommige besturingssystemen die het verschil tussen open en gesloten poorten negeren en altijd een RST pakket sturen (zoals verschillende versies van Microsoft Windows) en systemen die zijn uitgerust met statefull packet filtering, zoals Linux die per pakket kunnen bekijken of het onderdeel is van een reeds bestaande verbinding.