LINUXMAKER, OpenSource, Tutorials

Grundlagen des Port-Scanning

Port-Scanning ist in erster Linie für das Erkennen von Sicherheitslücken und Schwachstellen die häufigste Anwendung. Aber auch eine Ist-Analyse zum Erfassen der Computer und der auf ihnen angebotenen Services kann Port-Scanning notwendig machen. Genauso wie die Prüfung der Einhaltung von Richtlinien, Verfügbarkeitstests und natürlich das Troubleshooting im Netzwerk.

Verglichen mit dem Ping-Scanning testen wir beim Port-Scanning nicht nur, ob und welche Hosts aktiv sind, sondern auch welche Services und damit Applikationen aktiv und erreichbar sind. Sichtbar gemacht wird das über den jeweiligen Zustand der Ports.

Wie kann man sich Ports vorstellen?

Die einfachste Erklärung ist die einer Postadresse. Wenn man sich die IP-Adressen der Rechner in einem Netzwerk als Straße in einer Stadt bis hin zur genauen Hausnummer vorstellen kann, so stellen die Ports die jeweilige Wohnungstür in dem entsprechenden Haus dar. Hinter jeder Tür liefe somit eine andere Anwendung, mir der andere Anwendungen hinter anderen Türen in anderen Straßen und Häusern kommunizieren wollen.

Ports sind somit vor allem Software-Abstraktionen, um Kommunikationsverbindungen zwischen Anwendungen zu unterscheiden. Sie werden auf der Kommunikationsebene von den Protokollen TCP und UDP gleichermaßen verwendet. Sie bilden die Schnittstelle zu den Services und Anwendungen, die auf einem Computer laufen. Und sie liefern den Übergang von der paketorientierten Übertragung zum Datenstrom, der von und zu den Anwendungen fließt. Durch die Portnummer wird dem System genau signalisiert an welche Anwendung das Datenpaket übergeben werden muss.

Dabei reichen die Portnummern von 0 bis 65.535. Davon sind die Ports von 1 bis 1.023 als Systemports bestimmten Services reserviert, die als auch Well Known Ports oder Default-Ports bekannt sind. Das können zum Beispiel bestimmte Systemdienste, wie die Ports 22, 25 und 80, für die Dienste SSH (Fernwartung), SMTP (Mail-Server) und HTTP (Web-Server), sein.
Die Portnummern von 1.024 bis 49.151 sind ebenfalls reservierte Ports, die als Registered Ports bezeichnet werden. Diese Ports werden nicht so häufig gebraucht. Während normale Nutzer für die Nutzung der Default-Ports keine Berechtigung haben, können sich Benutzer-Anwendungen mit diesen Ports verbinden und Dienste nach außen anbieten.
Die Portnummern von 49.152 bis 65.535 dagegen sind für Anwendungen und Kommunikationsverbindungen gedacht, die kurzzeitig und dynamisch erfolgen. Das ist gerne bei ausgehenden Verbindungen oder proprietären Diensten innerhalb eines Netzwerks der Fall. In diesen Fällen werden dann diese Dynamic respektive Private Ports verwendet.

Der Verbindungsaufbau über TCP und der Drei-Wege-Handshake

Für das Verständnis des Ablaufes beim Port-Scanning, ist die Kenntnis darüber wichtig, wie der TCP-Verbindungsaufbau abläuft. Beim verbindungsorientierten Protokoll TCP wird die Verbindung aufgebaut, um dann nach dem Datenaustausch wieder abgebaut zu werden. Das ist auch als Drei-Wege-Handshake bekannt:

  1. SYN

  2. SYN+ACK

  3. ACK

Zum Verbindungsaufbau schickt der Client beim Drei-Wege-Handshake ein TCP-SYN-Paket an den entsprechenden Port zum Ziel (meistens der Server). Lauscht auf diesem Port eine Anwendung, so erhält der Client ein kombiniertes TCP-SYN/ACK-Paket als Bestätigung über die Verbindungsaufnahme zurück. Damit die Verbindung endgültig zustandekommt, wird der Verbindungsauf auch vom Client mit einem TCP-ACK-Paket gegenüber dem Server bestätigt. Ab diesem Stadium kann der Datenaustausch stattfinden.
Zu diesem Zweck muss der Client das im Rahmen der Anwendung vorgesehene Protokoll und einige anwendungsspezifische Daten an die Gegenstelle schicken. So wird ein Browser beispielsweise einen HTTP-Request senden und der Web- Server wird mit einem HTTP-Response antworten.
Im Rahmen eines Port-Scans ist der anwendungsspezifische Datenaustausch wegen der enormen Vielfalt und dem enormen Zeitaufwand beim Scannen nicht realisierbar. Ein Port-Scan beschränkt sich deshalb nur auf einen Verbindungsversuch auf TCP-Verbindungsebene, der bei Erfolg sofort beendet wird.

Port-Zustände

Bei Port-Scans interessiert insbesondere der Zustand des untersuchten Port über den sich Rückschlüsse zu der Existenz einer Anwendung machen lässt.

So gesehen existieren drei Port-Zustände:

  • OPEN sagt aus, dass auf diesem Port eine Anwendung oder ein Service lauscht und somit eine Verbindung auf diesem Port realisiert werden kann.

  • CLOSED dagegen bedeutet das genaue Gegenteil. Nämlich, dass vom Host eine Verbindung auf diesen Port abgelehnt wurde. Somit ist die Aussage richtig, dass dahinter keine Anwendung lauscht.

  • FILTERED / BLOCKED besagt, dass der Host auf Anfragen auf diesen Port nicht reagiert. Das bedeutet, dass die Verbindung weder bestätigt (OPEN) noch abgelehnt (CLOSED) wird. Wenn der Host ansonsten allerdings erreichbar ist, dann erfolgt durch eine Firewall entweder eine Filterung (FILTERED) oder eine Blockierung (BLOCKED). Hier kann entweder eine vorgelagerte Firewall genauso aktiv sein, wie ein Paketfilter auf dem Host selbst.

Interessant am Port-Scan ist prinzipiell nur, ob ein Port offen oder geschlossen ist. Der gefilterte Zustand bedeutet vielmehr, dass er weitere Untersuchungen in Form weiterer Port-Scans erforderlich macht.