Portscanner

Software zur Überprüfung welche Dienste ein mit TCP oder UDP arbeitendes System über das Internetprotokoll anbietet
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 5. September 2007 um 16:28 Uhr durch GeroldM-Austria (Diskussion | Beiträge) (Bereich "Externe Links" hinzugefügt.). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Portscanner ist eine Software mit der überprüft werden kann, welche Dienste ein mit TCP/IP oder UDP arbeitendes System anbietet. Der Portscanner nimmt dem Anwender dabei die Arbeit ab, das Antwortverhalten eines Systems selbst mit einem Sniffer zu untersuchen und zu interpretieren. Da es sich bei Portscans um ein protokollkonformes Verhalten handelt (Siehe TCP/IP), sind diese in der Regel legal. Ausnahmen bestehen, wenn ein Portscan als Denial-of-Service-Angriff durchgeführt wird. Mögliche Folgen sind Pufferüberläufe oder Überlastung des Betriebssystems. Oft wird durch ein DoS-Portscan auch die gesamte verfügbare Bandbreite ausgenutzt. Oft bieten Portscanner auch Zusatzfunktionen wie Betriebssystem- und Diensterkennung an, obwohl sie nichts mit dem eigentlichen Portscannen zu tun haben.

TCP SYN Scan

Beim TCP SYN Scan wird ein TCP-Paket mit SYN-Flag an den Ziel-Host gesendet, um einen Verbindungsversuch vorzutäuschen. Die Antwort des Hosts gibt Aufschluss über den Port: Sendet er ein SYN/ACK-Paket, den zweiten Teil des Drei-Wege-Handshakes von TCP, akzeptiert der Port Verbindungen und ist daher offen. Der Quell-Host antwortet dann in der Regel mit einem RST-Paket, um die Verbindung wieder abzubauen (dies geschieht meist allerdings nicht durch den Portscanner, sondern durch das Betriebssystem, da offiziell kein Verbindungsversuch unternommen wurde). Sendet der Host ein RST-Paket, ist der Port geschlossen. Sendet der Ziel-Host überhaupt kein Paket, ist ein Paketfilter vorgeschaltet.

Der Vorteil dieser Methode ist, dass die gescannte Anwendung keinen Verbindungsversuch erkennt. Deshalb erscheint die Verbindung nicht in den Logdateien und kann daher auch nicht analysiert werden. Jede bessere Firewall erkennt diesen Scan allerdings. Auf den meisten Quell-Systemen sind außerdem Systemverwalterrechte notwendig, weil TCP-Pakete vom Portscanner handgefertigt werden müssen.

TCP SYN Scans lassen sich für Denial of Service-Attacken in Form von SYN-Flood nutzen.

TCP connect() Scan

Diese ist die einfachste Scanmethode. Der Portscanner nutzt den connect() Systemaufruf für den Portscan. Den eigentlichen Verbindungsaufbau übernimmt dann das Betriebssystem. Falls der Systemaufruf erfolgreich war, ist der Port offen. Die Verbindung wird dann sofort mit close() wieder geschlossen. Konnte die Verbindung nicht aufgebaut werden, ist der Port geschlossen.

Vorteilhaft bei dieser Methode ist die sehr einfache Programmierung. Da der connect() Befehl auf fast jedem System zur Verfügung steht, ist ein connect() Portscanner sehr portabel. Spezielle Rechte sind meist nicht erforderlich. Da die Verbindung bei Erfolg komplett aufgebaut wird, erscheint sie meistens in den Logdateien der Dienste.

TCP FIN/Xmas/Null Scan

Diese Methoden bauen keine Verbindung auf, sondern untersuchen das Verhalten auf Folgepakete. Falls ein Port offen ist, sollten die Folgepakete ignoriert werden, da sie nicht zu einer bestehenden Verbindung gehören. Ist der Port geschlossen, sollte ein Reset-Paket gesendet werden.

Welche Flags genau gesetzt werden hängt vom Scantyp ab:

Typ Flags
FIN FIN
Xmas FIN,URG,PUSH
Null (keine)

TCP Idlescan

Dieser Scan wird nicht direkt vom System des Portscanners ausgeführt, sondern über einen Mittelsmann der als Zombie bezeichnet wird. Der Idlescan ist zur Zeit die einzige komplett unsichtbare Scanmethode. Falls eine Firewall auf dem Zielhost installiert ist, sieht es für ihn so aus, als ob der Scan vom Zombiehost kommt.

Zombiehost

Um als Zombiehost für den Idlescan geeignet zu sein, muss er mehrere Bedingungen erfüllen.

  1. Der Zombiehost muss eine Verbindung zum Ziel aufbauen können
  2. Die IPID (IP Identification Number, ein Teil des IP-Headers) muss für den Portscanner vorhersehbar sein. (Linearer Anstieg)
  3. Der Zombiehost sollte möglichst wenig Netzwerkverkehr haben (daher auch der Name Idlescan)

Ablauf

Für den eigentlichen Scan braucht der Portscanner die aktuelle IPID des Zombies. Um die IPID herauszufinden, wird einfach eine TCP Verbindung halb geöffnet (wie beim SYN Scan) (1). Der Zustand des Ports spielt nur eine untergeordnete Rolle. Das Anwortpaket des Zombies enthält die aktuelle IPID (2).

Für den eigentlichen Portscan schickt der Angreifer ein gespooftes SYN Paket an das Ziel (3). Als Quell-IP-Adresse setzt der Angreifer die IP-Adresse des Zombiehosts. Falls der Port offen ist, sendet das Ziel ein SYN|ACK Paket an den Zombie (4a). Da er keine Verbindung geöffnet hat, schickt der Zombie ein RST Paket an das Ziel (4a). Dieses Reset wird mit einer IPID + 1 an das Ziel gesendet. Ist der Port geschlossen, sendet das Ziel ein RST Paket an den Zombie (4b). Dieses Paket wird vom Zombie einfach ignoriert. Nun fragt der Angreifer in gleicher Weise wie zu Begin nach der aktuellen IPID (5). Ist die IPID um 2 gestiegen, ist der Port offen. Ist die IPID nur um 1 höher, ist der Port geschlossen (6).

 

UDP Scan

Ein direkter Scan von UDP Ports ist nicht möglich, da das Protokoll verbindungslos arbeitet. Über einen Umweg ist ein Scan trotzdem möglich. Dazu wird ein leeres UDP Paket an den entsprechenden Port geschickt. Kommt keine Antwort, ist der Port offen. Wird eine „Port Unreachable“ Fehlermeldung empfangen, ist der Port geschlossen. Auf den meisten Systemen ist die Ausgabe von ICMP-Fehlermeldungen gedrosselt, um einen Denial of Service Angriff zu verhindern. Daher sind UDP Scan meistens zeitaufwendig.

Zusatzfunktionen

Die o. g. Zusatzfunktionen wie OS-Fingerprinting (Erkennen des Betriebssystems) und Dienst-Erkennung, für die z. B. der Portscanner nmap bekannt ist, sind streng genommen keine Portscans mehr und ihr Einsatz kann nicht nur aufgrund eines nicht ganz auszuschließenden Absturzrisikos beim Ziel problematisch sein.

Bekannte Portscanner

  • Nmap (Unix/Windows)
  • Superscan (Windows)
  • Scanmetender Standard (Windows und GNU/Linux)
  • Unicornscan (Unix)
  • nhs nohack scanner (Windows)
Weblinks zu Herstellerseiten berühmter Portscanner
Rechtliche Hintergründe (Englisch)

Siehe auch