Informationssammlung: TCP Idle Scan (IPv4)

Die Verwendung der folgenden Inhalte geschieht auf eigene Gefahr. Es ist mit den im Folgenden dargestellten Techniken möglich Schaden anzurichten. Aus diesem Grund dürfen diese unter keinen Umständen an fremden Netzwerken verwendet werden, ausgenommen es gibt eine schriftliche Erlaubnis und Vereinbarung mit dem Betreiber und/oder Eigentümer, über die durchgeführten Aktionen. Es handelt sich beim folgenden Text nicht um eine Rechtsberatung.l

Vor jedem Einbruch in IT Systeme erfolgt eine umfangreiche Erkundung. Dabei geht es vor Allem um die offenen Ports. Diese geben einem System eine Schnittstelle in die Außenwelt, und damit die Möglichkeit einen Dienst zur Verfügung zu stellen. Ein sehr verbreiteter Port ist die 80. Standardmäßig werden HTTP Dienste zur Verfügung gestellt, um Webseiten nach außen besuchbar zu gestallten.

Portscanning

Möchte ein Angreifer erfahren, welche Ports und ggf. welche Dienste an einem Server zur Verfügung stehen müsste er einen Portscan durchführen. Dieses Unterfangen wird in der Regel sehr schnell als Angriff interpretiert und von IDS (Intrusion Detection System) und IPS (Intrusion Prevention System) Systemen schnell erkannt. Gerade im deutschen Rechtstraum kann dies unverzüglich als Vorbereitung zur Ausspähung von Daten ausgelegt werden. Hierzu wären einige Paragraphen erwähnenswert, welche genau auf diesen Tatbestand abzielen (§202c StGB Abs. 2).

Klassisches Portscanning versucht eine Verbindung zu allen Ports einer Maschine auf zu bauen. Ist die Verbindung erfolgreich, so ist dieser Port offen und ein akzeptierender Dienst verbirgt sich dahinter. Auf Paketebene lässt sich dies wie folgt darstellen:

Erfolgreiche TCP Verbindung

  1. Client —> SYN (Sequenz-ID = X) —> Server
  2. Server —> SYN-ACK (Sequenz-ID = Y, ACK-ID = X+1) —> Client
  3. Client —> ACK (ACK-ID = Y+1, Sequenz-ID = X+1) —> Server

Generell gilt bei TCP, dass Pakete durchnummeriert werden. Die Sequenz-ID wird vom Client aus an den Server mitgesendet, damit ein Offsetwert bekannt gemacht wird, an welchem die Zählung beginnt. Da jedes System anders zählt sendet auch der Server seine Sequenz-ID an den Client. Dadurch kennen beide “Gesprächsteilnehmer” den gegenseitigen Offsetwert der Sequenz-ID. Im Beispiel nehme ich nunmehr die Variable X für die Client Sequenz-ID und Y für die Server Sequenz-ID.

Nichterfolgreiche TCP Verbindung

  1. Client —> SYN (Sequenz-ID = X) —> Server
  2. Server —> RST (Server Sequenz-ID = Y) —> Client

Mit der Abarbeitung dieses kurzen Abschnittes weiß nun der Client, dass der in der Verbindung angegebene Port geschlossen ist. Werden in kurzer Zeit viele solcher Anfragen sequentiell beginnend ab Port 1 durchgeführt schlägt das Warnsysteme Alarm und sperrt den Angreifer zu meist aus. Das TCP Idle Scan Verfahren versucht diese Blockade erst gar nicht geschehen zu lassen. Dabei wird ein Portscan über ein drittes IT System durchgeführt.

TCP Idle Scan

Bei dieser besonderen Scanmethode verbirgt sich ein Angreifer hinter einem sogenannten Idle Host. Es existiert also nicht nur der Client und der Server sondern noch ein dritter, unbeteiligter Rechner. Dieser wird für den Angreifer, also den Client, die “Opferrolle” übernehmen und seine Identität für den Scan preisgeben. Wichtig bei dieser Scanmethode ist es Prinzip der Sequenz-IDs beim TCP Protokoll zu verstehen. Wer sich unsicher ist, kann hier (Sequenznummern) nachlesen.

Offener Port über Idle Host

  1. Client —> SYN-ACK —> Idle Host
    Der Angreifer schickt ein SYN-ACK Paket an den Idle Host, um die Verbindung zu initiieren.
  2. Idle Host —> RST (Sequenz-ID IH=X) —> Client
    Der Idle Host hat das nicht erwartet. Normalerweise kommt erst der Verbindungsaufbau weswegen die Verbindung mit einem RST Paket abgelehnt wird.
  3. Client —> SYN (Quelle maskiert als Idle Host) —> Server
    Der Client baut nun ein SYN Paket zusammen und nimmt als Absenderadresse die IP Adresse des Idle Hosts. Dadurch folgen die Antworten direkt an den Idle Host und nicht an den Angreifer (Client).
  4. Server —> SYN-ACK —> Idle Host
    Ist der Port nun offen, wird der Server ein SYN-ACK Paket absenden, um die Verbindung mit dem Idle Host zu initiieren. Damit steigt die Sequenz-ID beim Idle Host um 2, da der TCP Handshake vollständig durchgeführt wird.
  5. Client —> SYN-ACK —> Idle Host
    Um das Ergebnis des Scanvorganges über den Idle Host zu erhalten muss eine SYN-ACK Anfrage an den Idle Host gesendet werden. Für diesen ist dies unerwartet, da normalerweise ein SYN Paket folgt.
  6. Idle Host —> RST (Sequenz-ID IH=X+2) —> Client
    Die unerwartete Nachricht wird mit deinem RST Paket abgelehnt. Da der Handshake mit dem Server aber funktioniert hat, wurde die Sequenz-ID um zwei erhöht.

Die Erhöhung um zwei bedeutet für den Angreifer, dass der Port offen und verfügbar ist. Kein einziger Hinweis auf den Angreifer gelangt zum Server. Lediglich der Idle Host kennt den Client (Angreifer) und könnte unter Umständen misstrauisch werden.

Geschlossener Port über Idle Host

Der einzige Unterschied ist im Punkt 4 (oben beschrieben) zu finden. Anstatt des SYN-ACK Paketes, wird der Server die Verbindung mit einem RST Paket ablehnen. Auf das RST Paket folgt kein weiteres mehr, da keine TCP Verbindung initiiert wird. Auf Grund dessen erhöht sich die Sequenz-ID des Idle Hosts lediglich um 1. So wird also in Schritt 6 durch das RST Paket des Idle Hosts zum Client (Angreifer) eine Sequenz-ID verwendet, die nur um 1 erhöht ist. Damit ist für den Client nunmehr klar, dass der Port geschlossen ist.

Fazit

Es ist also möglich ein fremdes IT System auf offene Ports und damit indirekt auf Schwachstellen zu überprüfen, ohne seine Identität dem Ziel offenbaren zu  müssen. Gleichzeitig besteht jedoch die Gefahr, dass der Idle Host falsch ausgewählt wird, so dass dieser Alarm schlagen könnte oder das Vorhaben versucht zu unterbinden.

Abwehrmaßnahmen gibt es natürlich auch. Für die, die sich damit intensiver beschäftigen wollen sollten sich die Software nmap etwas näher ansehen. Mittels IPv6 sieht das ganze übrigens etwas anders aus, da das Protokoll anders funktioniert.

Abwehrmaßnahmen, um sich gegen ausgefeilte Angriffe zu schützen gibt es zahlreiche. IDS bzw. IPS Systeme helfen auf Netzwerkebene weiter. Der dargestellte Portscan ist gültig für IPv4. Sobald ein System ausschließlich IPv6 verwendet sieht das Vorgehen anders aus und sprengt in diesem Fall den Rahmen dieses Beitrages.

Artikel teilen:

Kommentar verfassen