NSA/GCHQ: Das HACIENDA-Programm zur Kolonisierung des Internet

Neue, als geheim klassifizierte Dokumente belegen ganze Länder umfassende, flächendeckende Portscans und die aktive Kartierung verwundbarer Systeme durch die Geheimdienste. Dies demonstriert das Ansinnen der Dienste, das gesamte Netz zu kolonisieren. Technische Abhilfe ist, auch durch einen neuen RFC, in einem gewissen Ausmaß möglich.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Lesezeit: 22 Min.
Von
  • Julian Kirsch
  • Christian Grothoff
  • Monika Ermert
  • Jacob Appelbaum
  • Laura Poitras
  • Henrik Moltke
Inhaltsverzeichnis

Translations of this article are available in Englisch, French, Italian and Spanish.

Portscans sind ein bekanntes Tool und werden regelmäßig eingesetzt, um Schwachstellen in lokalen Systemen zu finden. Neue, als streng geheim klassifizierte Dokumente des britischen Geheimdienstes General Communication Headquarter (GCHQ), die heise online exklusiv vorliegen, zeigen jetzt, dass Geheimdienste das Scannen offener Ports ganzer Länder (Folie 1 in der Bilderstrecke) als Standardtool einsetzen.

Hacienda, Mugshot, Olympia, ORB - Folien und Grafiken (26 Bilder)

Folie 1

Das GCHQ-Programm mit dem Namen HACIENDA (Folie 2) bewirbt in einer Präsentation aus dem Jahr 2009 Vollscans für insgesamt 27 Länder, verbunden mit dem Angebot: Wer ein anderes Land aufklären will, braucht nur eine E-Mail zu schicken. (Folie 3). Regeln für die Begutachtung oder notwendige Begründungen für eine solche Aktion finden sich in den Dokumenten nicht. Die Möglichkeit, ganze Länder zu scannen, ist keine wilde Fantasie: Neue Tools wie Zmap erlauben seit 2013 das Ausleuchten des gesamten IPv4-Adressraums weltweit in weniger als einer Stunde. Ein derart gezielter, massiver Einsatz der Scans durch den Staat macht daher jeden einzelnen Server zu einem Ziel staatlicher Computersaboteure.

Auf der Liste der Dienste – und entsprechend Ports – die angegriffen wurden, finden sich allgemeine öffentliche Dienste wie das Webprotokoll (HTTP) oder Dateitransferprotokoll (FTP) ebenso wie Werkzeuge, die üblicherweise von Netzwerkadministratoren eingesetzt werden, etwa das Secure Shell Protokoll (SSH) oder das Simple Network Management Protokoll (SNMP). Da in der Zwischenzeit veröffentlichte Werkzeuge wie Zmap es fast jedermann erlauben, umfangreiche Scans durchzuführen, ist es nicht so sehr die eingesetzte Technik, die schockiert, sondern deren massive, praktisch lückenlose Ausnutzung gegen beliebige Systeme und potentiell alle Nutzer im Netz.

Die Funktionsweise von Portscannern sowie die Erkenntnisse, die durch deren Einsatz gewonnen werden können, führen vor Augen, was der großflächige Einsatz von Portscannern durch Staaten zur Folge hat.

Mehr Infos

Die Autoren:

  • Julian Kirsch schließt gerade seinen Master an der Technischen Universität München ab und wird dort künftig am Lehrstuhl für Computersicherheit von Professor Eckert promovieren. Seine Forschungsinteressen sind unter anderem Reverse Engineering und Spionageabwehr.
  • Christian Grothoff wird noch bis Ende August von der Deutsche Forschungsgemeinschaft (DFG) im Rahmen des Emmy-Noether Programms unter dem Kennzeichen ENP GR 3688/1-1 gefördert. Er zieht dann von der Technische Universität München nach Inria Rennes, wo er eine Forschungsgruppe im Bereich sicherer dezentralisierter Netzwerke aufbauen wird. Seine Forschungsinteressen beinhalten den Bau von Kompilern, Programmiersprachen, Software Engineering, Netzwerke und Sicherheit.
  • Monika Ermert ist freie Journalistin und berichtet für heise online seit vielen Jahren über DNS, DNS-Sicherheit und andere Themen.
  • Jacob Appelbaum arbeitet als investigativer Journalist.
  • Laura Poitras ist Dokumentarfilmemacherin und Journalistin und lebt in Berlin
  • Henrik Moltke arbeitet als investigativer Journalist.

TCP, das Transmission Control Protokoll, ist das am weitesten verbreitete Protokoll im Netz. Jedes Mal, wenn eine Mail verschickt oder eine Webseite aufgerufen wird, sorgt TCP für die verlässliche Übertragung der Datenpakete zwischen Clients und Servern. Portscanner machen sich ein strukturelles Problem von TCP zunutze, um zu bestimmen, welche Dienste auf einem System aktiv sind. Seit Urzeiten werden die Scans daher von Angreifern genutzt, um verwundbare Server zu finden. Einer Kommunikation von TCP-Client und -Server geht immer ein so genannter Three-way-handshake voraus. Ein Fehler im Design dieses "Händedrucks" der beiden Server erlaubt das Portscanning überhaupt. Denn der Server gibt dabei immer preis, ob ein bestimmter Dienst verfügbar ist, ohne vorab zu prüfen, ob der anfragende Client überhaupt autorisiert ist, auf den Dienst zuzugreifen.

Die Grafik 5 in der Bilderstrecke illustriert, wie eine TCP-Verbindung zustande kommt. Erst sendet der Host, der eine Verbindung herstellen will, ein TCP SYN Paket. Der Zielserver antwortet mit SYN/ACK, wenn er die Anfrage akzeptiert. Mit einem weiteren ACK-Segment komplettiert der anfragende Host den Three-Way-Handshake, der Verbindungsaufbau ist abgeschlossen. Genau dieser Handshake erlaubt es einem Angreifer festzustellen, ob TCP-Dienste über die jeweiligen Ports angeboten werden: ist der TCP Port geschlossen, reagiert der Server mit einem RST-Paket ("reset") auf das erste SYN Paket (Grafik 6 in der Bilderstrecke). Für den Angreifer ist es ein Leichtes, die vorhandenen Internetdienste zu kartieren, indem er die unterschiedlichen Serverantworten im Strom der Pakete berücksichtigt. (Vergleiche Grafik 5 und Grafik 6)

Das GCHQ macht, wie aus ihrer Präsentation von HACIENDA ersichtlich wird, nicht nur einfache Portscans, es greift auch Banner und andere verfügbare Informationen ab (Folie 4). Ein Banner ist dabei eine Nachricht, die von einer Serverapplikation standardmäßig an jeden sich verbindenden Client gesendet wird. Dabei werden oftmals detaillierte Informationen über das System und die an den Port gebundene Applikation (wie zum Beispiel Versionsnummern) übertragen. Dieses Wissen erleichtert anschließend das gezielte Ausnutzen von Schwachstellen.

Das breit angelegte Ausspähen verschiedenster Dienste, samt der verfügbaren Dienstinformationen über das gesamte Netz hinweg, zeigt, dass das Ziel die aktive Kartierung und Sammlung verletzlicher Systeme weltweit ist und nicht etwa Aufklärung zu bestimmten Zielsystemen oder Personen. Mit der Vorbereitung von Attacken auf Dienste, auf die mittels SSH oder SNMP zugegriffen wird, greifen die Spione kritische Infrastrukturen an, wie zum Beispiel die für die Netzwerkbetrieb notwendigen Systeme.

Das Eindringen in das System des belgischen Netzbetreibers Belgacom und das des deutschen Satellitennetzwerkbetreibers Stellar hat in der Vergangenheit gezeigt, dass, wenn Systeme von Mitarbeitern oder deren Zugangsdaten auch nur indirekt nützlich sein könnten, diese Systeme und Menschen Opfer von Angriffen werden.

Die aus den Scans hervorgegangene Datenbank wird dann im Klub der Five- Eyes-Spione verteilt, zu dem das Vereinigte Königreich, die USA, Kanada, Australien und Neuseeland gehören. Das in der Folie erwähnte Programm MAILORDER ist ein internes Transportprotokoll, mit dem der Spionageclub Daten untereinander austauscht. Inwieweit die Five Eyes auch anderen "Partnern" Zugriff auf die HACIENDA-Daten gewährt haben, ist eine noch offene Frage.

Das Scannen der Server ganzer Länder und die Suche nach verwundbaren Stellen in der Infrastruktur der Netze folgt letztlich konsequent dem Ziel der "Beherrschung des Internet", einem von der GCHQ koordinierten Programm zum Abhören von Netzwerkverbindungen: Die Geheimdienste attackieren jedes nur mögliche System, vermutlich allein deshalb, weil es Zugang zu weiteren Systemen eröffnen kann. Denn möglicherweise öffnet sich ja dabei irgendwo der Pfad zu einem wertvollen Zielobjekt. Nach dieser Logik ist jedes Gerät ein interessantes Ziel für die Aufklärung – und für eine mögliche feindliche Übernahme. Denn jedes kompromittierte Gerät kann ja theoretisch ein Bindeglied in der Kette zum Zielobjekt sein.

Die Portscans und das Herunterladen von Bannern zur Identifizierung, welche Software auf dem ausgespähten System läuft, ist nur der erste Schritt des Angriffs (Folie 8). Eine streng geheime Präsentation der National Security Agency (NSA), die heise online vorliegt, illustriert das Gesamtkonzept (Folie 10). Die Spione folgen dabei den genau so auch vom organisierten Online-Verbrechen angewandten Methoden: der Ausspähung (Folie 10) folgt die Kompromittierung (Folie 11) und Übernahme des Systems (Folie 12) und der Diebstahl von Daten (Folie 13). In der NSA-Darstellung wird klar, dass staatliche Computersaboteure sich dieses kriminelle Vorgehen zu eigen machen: Erst diskutieren sie das Ausspionieren und Einbrechen in die Systeme als "hacking" und dann führen sie ihre eigenen Werkzeuge dafür vor. (Folie 14, 15 und 16).

Es ist mittlerweile bekannt, dass die NSA sich sehr für sogenannte 0-Day-Angriffe interessiert, Schwachstellen in Software, die noch unbekannt sind und für die es daher noch keinen Patch gibt. Sobald ein mit dem Wissen über eine solche 0-Day-Attacke ausgerüsteter Angreifer einen verwundbaren Dienst auf einem Server findet, ist dieser eine leichte Beute. Firewalls bieten kaum ausreichenden Schutz, sei es, weil der Administrator selbst per Fernzugriff wartet, oder weil die staatlichen Schnüffler längst innerhalb des Netzwerkes agieren (siehe: Barton Gellman and Ashkan Soltani. Nsa infiltrates links to yahoo, google data centers worldwide, documents say. The Washington Post, October 2013). Neue Hardware, wie zum Beispiel über SNMP konfigurierte Firewalls, ins eigene Netz zu integrieren, könnte darüber hinaus auch neue Lücken aufreißen.

Folie 8 weist auf eine besondere Rolle hin, die HACIENDA in der Überwachungsinfrastruktur spielt. Die heise online vorliegenden, streng geheimen Dokumente beschreiben das LANDMARK-Programm, welches vom kanadischen Geheimdienst CSEC zur Expansion verdeckter Infrastruktur (Folie 17) betrieben wird. Die verdeckte Infrastruktur besteht aus sogenannten Operational Relay Boxes (ORBs), die verwendet werden, um den tatsächlichen Aufenthaltsort eines Angreifers zu verschleiern, wenn die Five Eyes Exploits gegen Ziele einsetzen oder Daten stehlen (Folie 18).

Mehrmals im Jahr versucht der Spionageclub, Kontrolle über so viele Maschinen wie möglich zu erlangen. Hauptsächliches Entscheidungskriterium ist dabei nur, dass sich das Ziel im Ausland befindet. So waren beispielsweise im Februar 2010 vierundzwanzig Spione an nur einem einzigen Arbeitstag in der Lage, über 3000 potenzielle ORBs zu lokalisieren. Dennoch war die Arbeit, die von HACIENDA gelieferten Ergebnisse manuell auszuwerten, zu mühsam, weshalb das OLYMPIA-System programmiert wurde, das den Prozess automatisiert (Folie 21). Die Spione prahlen damit, dass mithilfe von OLYMPIA verwundbare Geräte innerhalb eines zu spezifizierenden Subnetzes in weniger als fünf Minuten gefunden werden können (Folie 22).

Allerdings sind die Kanadier nicht die Einzigen, die mithilfe von HACIENDA Maschinen suchen, die kompromittiert und in ORBs verwandelt werden können. Beim GCHQ ist die Jagd nach ORBs als Teil des MUGSHOT-Programms organisiert (Folie 23). Dort hat man den Prozess ebenfalls automatisiert und eine signifikante Verbesserung der Genauigkeit erreicht, wie auf den Folien behauptet wird (Folie 24). Abermals spielen dafür die Informationen, welche HACIENDA liefert, eine große Rolle. Ein zentraler Punkt ist, dass das GCHQ mithilfe von MUGSHOT Ergebnisse aktiver Scans (HACIENDA) und passiver Überwachung kombiniert (Folie 26).

Der Angreifer Staat bereitet durch die willkürlichen Attacken der Industriespionage, der Sabotage und auch Menschenrechtsverletzungen den Boden. Ihm reicht die Aussicht auf den Zugriff als Grund für sein Tun. Ein milliardenschweres Budget, Straffreiheit für Agenten und die Rekrutierung von Netzbetreibern, die zur Mitarbeit gezwungen werden, befördern die Entwicklung. Netzwerk- und Systemadministratoren fällt es zu, sich gegen einen nie da gewesenen Grad der Bedrohung abzusichern. Bürger außerhalb der Five-Eye-Länder müssen mit erheblich verringerten Standard an Sicherheit, Vertraulichkeit, Integrität und Robustheit in den Netzen leben.

Geheimdienste nutzen ihre Fähigkeiten Systeme im Internet zu übernehmen um ihre Macht auszudehnen. Ihre Aktivitäten folgen den typischen Mustern von Cyber-Kriminellen, die Portscans nutzen, um potenzielle Opfer zu identifizieren. Für Systemadministratoren heißt es angesichts des Bedrohungsszenarios, dass sie ihre Abwehr stärken und vor allem die Sichtbarkeit nicht-öffentlicher Server verringern müssen. Dienste mit Patches nachzurüsten, schützt nicht gegen die 0-Day-Exploits, und Firewalls sind kein ausreichender Schutz. Wir stellen daher eine Option für Systemadministratoren vor, die nicht-öffentliche Dienste gegen potentielle Ausspähung schützen kann.

Ein neuer Vorschlag zur Verschleierung von Ports ging an diesem Freitag an die Internet Engineering Task Force (IETF). Mit TCP Stealth (Julian Kirsch, Christian Grothoff, Jacob Appelbaum, and Holger Kenn: Tcp stealth, August 2014. IETF draft) könnten Netzwerkadministratoren dafür sorgen, dass ihre Server gegenüber willkürlichen Portscans abgeschirmt werden. TCP Stealth ist nicht zuletzt als Antwort auf Programme wie HACIENDA entstanden und wird auf dem jährlichen Treffen der GNU Entwickler an der TU München vorgestellt.

Die Abwehr gegen gezielte Angriffe auf ungekannte Schwachstellen – die 0-Day-Exploits – in öffentlichen Diensten ist hart. Einfacher ist es, den sichtbaren "Fußabdruck" und damit die Angriffsfläche von administrativen Diensten zu verkleinern.

Port Knocking ist eine erprobte Methode, um Server im Netz weniger sichtbar zu machen (siehe: Julian Kirsch. Knock, August 2014). Die Grundidee ist schlicht, dass ein TCP-Server nur dann auf eine SYN-Anfrage antwortet, wenn der abfragende Server zuvor ein "knock"-Paket vorausgeschickt hat. Anklopfen mit einem geheimen Klopfzeichen sorgt so für mehr Sicherheit, weil ein Angreifer, der ohne das Klopfzeichen anfragt, keine TCP-Verbindung aufbauen kann, den Dienst dahinter auch nicht attackieren kann.

Traditionelles Port Knocking (siehe: M. Krzywinski. Port knocking: Network authentication across closed ports. SysAdmin Magazine, 12:12{17, 2003) hat den staatlichen Angreifer jedoch nicht mit einkalkuliert. Wird der Service von einen Netz aus angefragt, in dem der Angreifer bereits den Datenverkehr mitliest, kann er die Verbindung belauschen und so auf die Existenz des Dienstes schließen. Ein staatlicher Angreifer kann sogar allen Verkehr des TCP-Clients beobachten und dann eine Man-in-the Mddle-Attacke zum Ausspähen des Client starten. Ein Man-in-the-Middle-Angriff über kompromittierte Router ermöglicht es Angreifern, eine TCP-Verbindung direkt nach dem Handshake zu übernehmen. Ein fortgeschrittener Hacker, der die Router kontrolliert, kann auch schwach verschleierte Port Knocks identifizieren, in dem er ungewöhnliche Routinen im Datenverkehr analysiert. Immerhin kann man wohl möglicherweise noch davon ausgehen, dass ein Angreifer den "normalen" TCP-Verkehr nicht nicht als verdächtig markiert. Denn damit würde er wohl zu viele Treffer generieren.

TCP Stealth ist ein bei der IETF eingereichter Request for Comment für eine einfach zu implementierende, stille Port-Knocking-Variante. TCP Stealth verbirgt ein Token zur Autorisierung in der ISN-Sequenz, die zu Beginn des Drei-Wege-Handshakes beim TCP-Verbindungsaufbau gesandt wird, und ermöglicht Schutz durch einen Check der Prüfsumme (payload protection). TCP Stealth ist schwer zu entdecken, weil es im klassischen Drei-Wege-Handshake verborgen ist. Der Datenverkehr beim Verbindungsaufbau ist unverändert. Man-in-the-Middle-Attacken und Wiedereinspielungsangriffe (replay attacks) werden durch den Prüfsummencheck erschwert.

TCP Stealth arbeitet mit IPv4 und IPv6 und ist für jeden Dienst nützlich, dessen Nutzergruppe so klein ist, dass eine Passphrase unter den Nutzern ausgetauscht werden kann. Beispiele sind SSH- oder FTP-Zugriffe auf Server, Tor-Bridges, persönliche POP3- oder IMAP-Server sowie Peer-to-Peer-Overlay- oder Friend-to-Friend-Netze. TCP Stealth ist für den Linux-Kernel in Form des Knock-Patches verfügbar. Ist ein Kernel gepatcht, so kann die Unterstützung für TCP Stealth in bestehenden Applikationen durch einen einfachen Aufruf der setsockopt()-Funktion aktiviert werden. Alternativ können bestehende Programme TCP Stealth nutzen, indem sie mithilfe von LD PRELOAD die dynamische Bibliothek libknockify einbinden.

Da der Hauptentwicklungszweig des Linux-Kernels derzeit Knock nicht unterstützt, muss auf dem Rechner, auf dem Knock laufen soll, der Kernel gepatcht werden. Die Distribution Parabola Linux bringt Knock-Unterstützung schon mit, hier kann Knock einfach mit einem Paketmanager installiert werden.

Für alle anderen Distributionen funktioniert der Patch folgendermaßen:

1. Für einen Standard-Kernel die Quellen des gewünschten Kernels von www.kernel.org herunterladen. Dabei beachten, dass viele Distributionen den Kernel anpassen und eigene Quellen anbieten. Deshalb ggf. diese angepassten Kernel nehmen.

2. Wenn die Quellen vorliegen, den entsprechenden Knock-Patch von gnunet.org/knock herunterladen. Wenn die Kernelversion nicht ausdrücklich auf der Knock-Website aufgeführt ist, empfiehlt sich ein Versuch mit der am nächsten verwandten Version.

3. In das Verzeichnis der Kernel-Quellen wechseln ("<your-version>" mit der entsprechenden Version des Kernels und des Patches ersetzen) und den Patch ausführen (mehr Informationen über das Einspielen und Zurücknehmen von Patches im Kernel gibt es im Archiv auf kernel.org)

$ cd linux-<your-version>/

~/linux $ patch -p1 < /path/to/knock/patch/tcp_stealth_<your-version>.diff

4. Die Konfiguration des aktuellen Kernels kopieren. Dafür gibt es zwei gängige Methoden:

(a) bei Debian und verwandten Distributionen eine Kopie der Kernelkonfigurationsparameter im Verzeichnis /boot. Die Konfigurationsdatei kann einfach in die Kernel-Quellen kopiert werden:

~/linux $ cp /boot/config-$(uname -r) .config

(b) Bei vielen anderen Distributionen gibt es die Möglichkeit, die Konfiguration des laufenden Kernels über das /proc-Dateisystem auszulesen:

~/linux $ zcat /proc/config.gz > .config

(c) Wenn keine dieser Möglichkeiten besteht, kann man es mit der Standardkonfiguration versuchen:

~/linux $ make defconfig

Allerdings sollte man von dieser Methode keinen besonders stabilen und performanten Kernel erwarten.

5. Alle Parameter, die nicht in der aktuellen Konfiguration gesetzt wurden, auf den Standardwert setzen. Eine andere Kernel-Version könnte neue Konfigurationsoptionen zur Kompilierung erfordern.

~/linux $ yes "" | make oldconfig

6. Knock über die Menüauswahl "Networking Support > Networking Options > TCP/IP networking > TCP: Stealth TCP socket support" für die aktuelle Konfiguration aktivieren.

~/linux $ make menuconfig

7. Der Kernel ist jetzt bereit für die Kompilierung. Mit

~/linux $ make bzImage && make modules

den Kernel und alle zusätzlichen Module kompilieren. Dieser Schritt kann ziemlich viel Zeit in Anspruch nehmen. Auf Maschinen mit mehr als einem Prozessorkern kann mit der Option -j bei beiden make-Befehlen die Zahl der Build-Threads angepasst werden.

8. Nach erfolgreicher Kompilierung den Kernel und alle Module installieren. Danach automatisch eine neue initramdisk für den neuen Kernel erstellen lassen:

~/linux $ sudo make modules_install && sudo make install

Wenn sudo nicht installiert ist, beide make-Befehle mit Root-Rechten ausführen.

9. Computer neu starten und den Boot-Manager anweisen, mit dem neuen Kernel zu booten. Die Maschine hat jetzt Knock.

Knock kann ohne Ändern des Source Codes des jeweiligen Programms genutzt werden. Das kann sich als nützlich erweisen, wenn der Source Code nicht verfügbar ist oder wenn der Einbau der notwendigen Bibliothek (libc) nicht möglich ist, beispielsweise wegen Beschränkungen in der Logik der Anwendung.

Um Knock in bestehenden Anwendungen zu nutzen, steht eine dynamische Bibliothek libknockify zur Verfügung. Grundsätzlich sieht die Nutzung des mit libknockify gemeinsam genutzten Objekts zum Einsatz von Knock für ein Programm example program folgendermaßen aus:

KNOCK_SECRET="shared secret"

KNOCK_INTLEN=42

LD_PRELOAD=./libknockify.so

./example_program

Wenn die Anwendung "example program" anschließend über TCP kommuniziert, wird libknockify die jeweiligen Socket Options setzen, um den Gebrauch von Knock im Kernel zu aktivieren. Im Beispiel wird die gemeinsame Passphrase aus dem Text "shared secret" gezogen. Die Integrität des Content ist auf die ersten 42 Bytes der Prüfsumme im TCP Datenstrom beschränkt. Wird die Variable KNOCK INTLEN nicht gesetzt, ist die Integritätsprüfung deaktiviert.

Die Entwickler von Anwendungen können Unterstützung von TCP Stealth direkt in ihren Code integrieren. Das ermöglicht eine Kontrolle, welche TCP-Verbindungen TCP Stealth mitbringen. Es kann die Usability weiter verbessern. Um Port Knocking mit einem Knock-fähigen Kernel grundsätzlich zu aktivieren, muss die Anwendung lediglich einen einzigen setsockopt() Aufruf machen, nachdem das TCP socket generiert wurde:

char secret[64] = "This is my magic ID.";

setsockopt (sock, TCP_STEALTH, secret, sizeof (secret));

Für Content-Integritätssicherung müssen die TCP-Clients zusätzlich die ersten Bytes der Prüfsumme spezifizieren, die in einem zweiten setsockopt()-Aufruf übertragen wird, bevor die Verbindung mit connect() aufgebaut wird:

char payload[4] = "1234";

setsockopt(sock, IPPROTO_TCP, TCP_STEALTH_INTEGRITY, payload, sizeof(payload));

connect (sock, ...);

write (sock, payload, sizeof (payload));

Server, die eine Datenintegritätsprüfung mithilfe von TCP Stealth verwenden wollen, rufen setsockopt() ein zweites Mal auf und geben dabei die Anzahl der Bytes an, die vor Veränderung durch Dritte geschützt werden sollen.

int payload_len = 4;

setsockopt(sock, IPPROTO_TCP, TCP_STEALTH_INTEGRITY_LEN,payload_len, sizeof(payload_len));

Die meisten Endgeräte sitzen mittlerweile hinter Gateway-Routern, die Network Address Translation (NAT) machen. TCP Stealth ist zwar so gestaltet, dass von NAT-Boxen veränderte Informationen nicht genutzt werden. Einige NAT-Boxen ändern aber auch TCP-Timestamps und ISN; sie behindern damit den Port-Knocking-Mechanismus. Tabelle 1 illustriert die Ergebnisse von Experimenten, die zeigen wie verbreitet allgemeine Veränderungen von ISN durch NAT-Boxen in der Praxis sind.

Tabelle 1: Änderungen von ISN, abhängig vom Ziel-Port (Michio Honda, Yoshifumi Nishida, Costin Raiciu, Adam Greenhalgh, Mark Handley, and Hideyuki Tokuda. Is it still possible to extend tcpß In Procee- dings of the 2011 ACM SIGCOMM Conference on Internet Measurement Conference, IMC '11, pages 181{194, New York, NY, USA, 2011. ACM.)

TCP Stealth ist auf die 32 Bit im TCP-ISN-Header-Field beschränkt; ein aggressiver Angreifer kann diese Einschränkung ausnutzen und durch Zufall oder eine Brute-Force-Attacke doch zum Ziel kommen. TCP Stealth wird aber eine angemessene Absicherung gegen Angreifer bieten, die ungezielt scannen (wie z.B. HACIENDA). Netzmanagementdienste auf Nicht-Standard Ports zu migrieren, kann die Gefahr von Zufallserfolgen aktiver Portscanner weiter reduzieren.

Während der Gebrauch von Integritätsschutz mit TCP Stealth eine technische Option ist, bietet Port Knocking ohne einen solchen Schutz wenig Sicherheit gegenüber einem Angreifer, der den Datenverkehr im Netz beobachtet und Verbindungen umleitet, nachdem der TCP-Handshake passiert ist. Künftige Entwicklungen von Transportprotokollen sollten daher einen einen Schlüsselaustausch schon beim Start des Verbindungsaufbaus vorsehen. Leider passiert das auch bei SSH nicht, das sich dem Angreifer stattdessen noch vor dem kryptographischen Handshake mit einem Banner mit Versionsinformationen präsentiert. Dieser Fehler im Design von SSH macht zusätzliche Maßnahmen zur Verschleierung derzeit notwendig, wenn man den Integritätsschutz durch TCP Stealth wirkungsvoll ausnutzen möchte.

Technische Lösungen wie TCP Stealth, die versuchen, mit den hochgerüsteten staatlichen Computersaboteuren Schritt zu halten, bieten einen Weg für Netzbetreiber, ihre Systeme zu härten, indem sie nicht-öffentliche TCP-Dienste gegen den Zugriff durch Angreifer schützen, seien diese nun kommerziell motiviert oder segelten unter dem offenbar alles entschuldigenden Banner der nationalen Sicherheit.

Das Rennen nur durch technische Maßnahmen zu gewinnen, ist langfristig wohl unmöglich, wie auch Linus Neumann vom CCC gerade in einem Kommentar für heise online geschrieben hat. Ohne den notwendigen politischen Willen, die Bürger rechtlich gegen die uferlosen Übergriffe zu schützen und auch in entsprechende Forschung für echte Nutzersicherheit zu investieren, wird der ungleiche Rüstungswettlauf weitergehen – und die Endnutzer, die Bürger werden die Verlierer sein.

Neumann hat nochmal darauf hingewiesen: Eigentlich sind sichere Systeme möglich, doch alle Regierungen fürchten den Kontrollverlust in einem hart gesicherten und weniger kontrollierbaren Kommunkationsnetz. Hier gibt es politisch noch viel Überzeugungsarbeit zu leisten. Vorerst müssen die Entwickler von Betriebssystemen und die Netzadministratoren das Beste aus der Situation machen, indem sie die modernsten und vor allem besten Sicherheitslösungen einsetzen, die sie bekommen können. (jk)