Biohazard

TCP Port scans

Es gibt verschiedene Varianten des TCP-Port-Scans, die aus der ursprünglichen daraus erwachsen sind, dass sie verschiedene Protokollierungsmechanismen umgehen und so nachträglich nicht mehr zu entdecken sind.

Aktiver Port Scan
Ein TCP Port Scan ermöglicht es, festzustellen, welche TCP- basierten Dienste ein Zielrechner anbietet. Der aktive TCP Port Scan basiert auf dem dreistufigen Initiierungsvorgang (sog. three-way handshake) zum TCP- Verbindungsaufbau:
 

  1. Angreifer sendet SYN an zu testenden Port des Zielsystems
  2. Zielsystem antwortet mit SYN/ ACK
  3. Angreifer sendet ACK an Zielsystem

Nachdem die Verbindung in Schritt 3 zustande gekommen ist, weiß der Angreifer, dass der entsprechende Port des Zielsystems aktiv ist. Angriffe dieser Art können leicht mit Programmen wie dem TCP- Wrapper entdeckt werden. [zurück zum Anfang]

Half Open Scan
Der sogenannte Half Open Scan ist ein geschickterer Weg für den Angreifer, den Port Scan unentdeckt durchzuführen. Hierbei werden nicht alle 3 Stufen des TCP- Verbindungsaufbaus durchgeführt, sondern lediglich die ersten 2. Dies hat zu Folge, dass der Angreifer nach Schritt 2 weiß, dass ein Dienst auf dem entsprechenden Port wartet. Der Verbindungsaufbau ist – da die dritte Stufe nicht ausgeführt wurde – nicht erfolgreich und wird somit auch nicht protokolliert.

Programme wie tcplog oder andere Firewallprogramme sind allerdings in der Lage, auch die fehlgeschlagenen Versuche eines TCP- Verbindungsaufbaus zu protokollieren.
[zurück zum Anfang]

Stealth Scanning
Die subtilste Möglichkeit, die vorhandenen TCP- Dienste abzutasten, ist das sogenannte Stealth Scanning. Dieses Scannig:

ist sehr schwer zu protokollieren,

kann Firewall- Schutzmechanismen umgehen (da kein Versuch eines Verbindungsaufbaus stattfindet),

Der Angreifer sendet ein FIN- Paket an den Zielport. Der Port ist genau dann inaktiv, wenn der Angreifer ein RST Paket erhält. Das Stealth Scanning ist nur möglich, wenn das Zielsystem auch das zuvor beschriebene Verhalten zeigt. Ist dies nicht der Fall, wie z.B. bei Windows NT, so versagt diese Methode.
[zurück zum Anfang]

RPC Stealth Scan
Ein Remote Procedure Call (RPC) ist eine Möglichkeit, Prozeduren auf nicht lokalen Rechnern auszuführen. Eine Ansammlung von Prozeduren wird als Programm bezeichnet. Möchte ein Anwender eine bestimmte Prozedur innerhalb eines bestimmten Programms aufrufen, so sendet er dazu eine initiale Anfrage (initial query), die die gewünschte Programmnummer, die gewünschte Prozedurnummer sowie die entsprechenden Argumente etc. enthält, an den Zielrechner. Diese Prozedur wird dann mit den entsprechenden Parametern ausgeführt.

Die Prozedurnummer entspricht einem eindeutigen Bezeichner. Es gibt eine Prozedurnummer, zu der es immer eine Prozedur gibt: Prozedur Nr. 0. Möchte ein Angreifer nun herausfinden, welche Programmnummern auf dem Zielsystem aktiv sind, so fragt er sukzessive alle Programmnummern nach der Prozedur 0. Die Prozedur 0 hat keine Argumente und liefert auch keinen Wert zurück. Wenn allerdings der Aufruf an diese Prozedur fehlschlägt, so wird ein Fehlercode übermittelt. Der Angreifer kann so feststellen, ob das entsprechende Programm aktiv ist oder nicht.

Zuvor muß jedoch herausgefunden werden, auf welchen Ports RPC läuft. In Abhängigkeit davon, ob RPC basierend auf UDP oder auf TCP implementiert ist (gewöhnlich UDP), wird ein UDP- oder TCP-Port Scan durchgeführt. Sobald ein aktiver Port gefunden wurde, fragt der Angreifer mit Programmnummer i nach Prozedur 0. Falls der Aufruf abgewiesen wird, bekommt der Angreifer eine Fehlermeldung. Falls der Aufruf nicht abgewiesen wird, weiß er, daß auf dem betreffenden Port ein RPC-Dienst mit Programmnummer i horcht.
[zurück zum Anfang]