SYN-Flood-Angriff: Varianten und Abwehrmaßnahmen

Als Denial-of-Service-Angriff (DoS) zielt die SYN-Flood darauf ab, ein Onlinesystem der legitimen Nutzung zu entziehen. Konzeptuell entspricht ein DoS-Angriff in etwa dem massenweisen Versand sinnloser Briefe an eine Behörde. Quellen die Briefkästen über, kommen legitime Schriftstücke bei der Behörde nicht mehr an oder können nicht mehr verarbeitet werden. Der Angreifer hat sein Ziel erreicht: Der reguläre Betrieb bricht zusammen.

Was ist eine SYN-Flood?

Bei der SYN-Flood handelt es sich um eine DoS-Attacke. Der Angreifer sendet eine Flut bösartiger Datenpakete an ein Zielsystem. Die Absicht besteht darin, das Ziel zu überlasten und damit der legitimen Nutzung zu entziehen.

Wie der Ping of Death ist die SYN-Flood eine Protokoll-Attacke. Diese Attacken zielen darauf ab, eine Schwachstelle in der Netzwerkkommunikation auszunutzen, um das Zielsystem in die Knie zu zwingen. Die SYN-Flood funktioniert damit anders als die volumetrischen Angriffe Ping-Flood, UDP-Flood und HTTP-Flood. Bei diesen liegt der Fokus des Angreifers darauf, das Ziel mit möglichst viel Bandbreite vom Netz zu spülen.

Funktionsweise der SYN-Flood-Attacke

Auch als „halboffener Angriff“ bekannt, ist die SYN-Flood eine gegen die Netzwerkverbindung gerichtete Cyberattacke. Der Angreifer missbraucht den Drei-Wege-Handshake des Transmission Control Protocol (TCP). Anstatt wie vorgesehen eine Verbindung zwischen Client und Server auszuhandeln, werden auf dem Server viele halboffene Verbindungen angelegt. Dies bindet Ressourcen auf dem Server, die für die eigentliche Nutzung nicht mehr zu Verfügung stehen.

Schauen wir uns an, wie der normale TCP-Verbindungsaufbau funktioniert und wie das Prinzip während einer SYN-Flood-Attacke gestört wird.

Normaler TCP-Verbindungsaufbau per Drei-Wege-Handshake

Das Transmission Control Protocol (TCP) ist zusammen mit dem Internet Protocol (IP) einer der Grundpfeiler des Internets. Da es sich beim TCP um ein verbindungsorientiertes Protokoll handelt, müssen Client und Server zunächst eine Verbindung aushandeln, bevor sie Daten untereinander austauschen können. Dazu dient der Drei-Wege-Handshake:

  1. Der Client sendet ein SYN-Paket („synchronize“) an den Server. – „Hallo, ich würde gerne eine Verbindung mit euch aufbauen.“
     
  2. Der Server antwortet mit einem SYN/ACK-Paket (ACK = „acknowledge“) und legt eine „Transmission Control Block“ (TCB) genannte Datenstruktur für die Verbindung im SYN-Backlog an. – „OK, gerne. Dann nutze bitte die folgenden Verbindungs-Parameter.“
     
  3. Der Client beantwortet das SYN/ACK-Paket mit einem ACK-Paket und schließt damit den Handshake ab. Danach steht die Verbindung bereit; es können Daten in beide Richtungen versandt werden. Auf der Seite des Servers wird der Transmission Control Block aus dem SYN-Backlog entfernt. – „Super, danke euch. Los geht’s!“

Dieser Prozess läuft jedes Mal im Hintergrund ab, wenn Sie sich mit einem Server verbinden, um eine Webseite zu besuchen oder Ihre E-Mails abzurufen.

Angriffsmechanismus der SYN-Flood

Während einer SYN-Flood-Attacke kommt es zu einer massiven Störung des TCP-Verbindungsaufbaus:

  1. Der Angreifer sendet ein SYN-Paket an den Server und spooft dabei seine IP-Adresse.
     
  2. Der Server legt eine Transmission-Control-Block-Datenstruktur für die halboffene Verbindung im SYN-Backlog an. Der TCB belegt Speicher auf dem Server. Ferner ist die Größe des SYN-Backlog begrenzt.
     
  3. Der Server sendet ein SYN/ACK-Paket an die gespoofte IP-Adresse des Angreifers.
     
  4. Da vom Angreifer kein ACK-Paket zur Bestätigung der Verbindung eingeht, sendet der Server weitere SYN/ACK-Pakete an den vermeintlichen Client und hält die Verbindung im halboffenen Zustand.
     
  5. Während der Server weiterhin auf eine Antwort wartet, gehen bereits neue SYN-Pakete des Angreifers ein, die in das SYN-Backlog eingetragen werden müssen.
     
  6. Ab einem bestimmten Punkt ist im SYN-Backlog kein Platz mehr für weitere halboffene Verbindungen vorhanden. Der Server verwirft hernach eingehende SYN-Pakete und ist damit von außen nicht mehr erreichbar.

Um eine SYN-Flood auszulösen, bedient sich ein Angreifer einer speziellen Software. Beispielshalber sei hier das beliebte, für Penetrationstest genutzte hping-Tool genannt. Mit dessen Hilfe lässt sich eine Bandbreite an Netzwerkangriffen simulieren. Aus Sicherheitsgründen bilden wir hier nur das ungefähre Muster des hping-Code für eine SYN-Flood mit gespoofter IP-Adresse ab:

hping --syn --flood --rand-source -p <Port> <IP-Adresse>

Interessant sind die Optionen des Befehls:

  • Die Option '--syn' weist das Tool an, TCP als Protokoll zu verwenden und SYN-Pakete zu verschicken.
  • Wichtig ist die '--flood'-Option. Diese führt laut Dokumentation des hping-Befehls dazu, dass Pakete so schnell wie möglich versendet werden.
  • Mit der Option '--rand-source' spooft der Angreifer seine IP-Adresse. Anstelle der echten Absenderadresse wird eine zufällige IP-Adresse eingetragen.

Varianten der SYN-Flood-Attacke

Es gibt mehrere Varianten, eine SYN-Flood-Attacke durchzuführen. Alle haben gemeinsam, dass der Angreifer darauf abzielt, den Server so lange wie möglich beschäftigt zu halten. Dafür muss der Angreifer sicherstellen, dass die vom Server gesendeten SYN/ACK-Pakete nicht beantwortet werden. Antwortet die Maschine des Angreifers mit einem ACK-Paket, führt das dazu, dass der entsprechende Eintrag auf dem Server aus dem SYN-Backlog gelöscht wird.

Spooft der Angreifer seine IP-Adresse, gehen die SYN/ACK-Pakete des Servers an Unbeteiligte. Bekommt eine Maschine ein SYN/ACK-Paket von einem Server, ohne diesem vorher ein SYN-Paket geschickt zu haben, sendet die Maschine ein RST-Paket (RST = „reset“), und beendet damit die Verbindung. Auch dies möchte ein cleverer Angreifer verhindern, um auf dem Server eine möglichst große Anzahl an Verbindungen halboffen zu halten.

Direkte SYN-Flood-Attacke

Beim direkten Angriff startet der Angreifer die SYN-Flood-Attacke unter der eigenen IP-Adresse. Um sicherzustellen, dass eingehende SYN/ACK-Pakete verworfen werden, konfiguriert der Angreifer den Firewall seiner Maschine entsprechend. Ein anderer Ansatz besteht darin, den Netzwerkverkehr auf ausgehende SYN-Pakete zu beschränken.

Da der Angreifer beim direkten Angriff unter der eigenen IP-Adresse operiert und somit relativ leicht aufspürbar ist, wird diese Angriffsvariante selten eingesetzt.

SYN-Flood-Attacke mit gespoofter IP-Adresse

Weiter verbreitet ist der Angriff mit gespoofter IP-Adresse. Hierbei trägt der Angreifer eine gefälschte IP-Adresse im Absenderfeld der SYN-Pakete ein und verschleiert damit deren tatsächlichen Ursprungsort. Dabei bevorzugen Angreifer IP-Adressen, die zum Zeitpunkt des Angriffs nicht belegt sind. So wird sichergestellt, dass zufällig betroffene Systeme nicht mit einem RST-Paket auf die SYN/ACK-Antworten des angegriffenen Servers reagieren und damit die Verbindung beenden.

Tipp

Apropos gefälschte IP-Adresse: In unserem Überblicksartikel erläutern wie Ihnen, wie Sie die häufigsten Spoofing-Methoden erkennen und abwehren.

SYN-Flood-Attacke durch Distributed Denial of Service (DDoS)

Bei dieser „verteilten“ Angriffsvariante der SYN-Flood erfolgt die Attacke von vielen Rechnern gleichzeitig aus. Für gewöhnlich handelt es sich um einen Verbund gekaperter Maschinen, ein sogenanntes Botnet. Die Zombie-Rechner des Botnets stehen unter Kontrolle des Angreifers und versenden auf dessen Befehl hin SYN-Pakete an das Ziel.

SYN-Flood-Reflection-Attacke

Ein Server antwortet für gewöhnlich auf ein einzelnes SYN-Paket mit mehreren SYN/ACK-Paketen. Diesen Umstand kann sich ein Angreifer zunutze machen, um eine SYN-Flood-Reflection-Attacke auszulösen. Dabei spooft der Angreifer die IP-Adresse des Opfers und startet eine DDoS-SYN-Flood gegen einen oder mehrere unbeteiligte Server. Jeder der Server antwortet auf jedes eingehende SYN-Paket mit mehreren SYN/ACK-Paketen, die an das Opfer geschickt werden. Es kommt zu einer Multiplikation des Netzwerkverkehrs. Die Maschine des Opfers wird mit einer Flut an SYN/ACK-Paketen bombardiert und bricht unter der Last zusammen.

Abwehrmaßnahmen zum Schutz vor SYN-Flood-Attacken

Das generelle Wirkprinzip der SYN-Flood ist schon seit ca. 1994 bekannt. Daher existiert heutzutage eine Reihe effektiver Abwehrmaßnahmen. Einige haben jedoch negative Nebeneffekte oder funktionieren nur unter bestimmten Bedingungen. Generell ist es nicht trivial, bösartige von legitimen SYN-Paketen zu unterscheiden. Die meisten bekannten Abwehrmaßnahmen werden auf dem Server eingesetzt, es gibt aber auch cloudbasierte Lösungen.

Vergrößern des SYN-Backlogs

Das bereits erwähnte SYN-Backlog ist Teil des Betriebssystems. Konzeptuell können Sie sich das SYN-Backlog wie eine Tabelle vorstellen. Jede Zeile enthält die Informationen zur Herstellung einer einzelnen TCP-Verbindung. Das Betriebssystem verwaltet zunächst die Verbindungen. Erst wenn eine Verbindung durch Abschluss des Drei-Wege-Handshakes etabliert wurde, wird sie an die auf dem Port lauschende Applikation weitergegeben und aus dem SYN-Backlog entfernt.

Eine der simpelsten Methoden, ein System gegenüber SYN-Flood-Angriffen zu härten, besteht darin, das SYN-Backlog zu vergrößern. Da jeder Eintrag des SYN-Backlogs eine gewisse Menge an Arbeitsspeicher verbraucht, ist die Zahl der Einträge begrenzt. Standardmäßig liegt diese Begrenzung auf Linux bei wenigen hundert Einträgen. Der Wert lässt sich jedoch leicht erhöhen. Prinzipiell kann das SYN-Backlog tausende von Einträgen enthalten. So können kleinere SYN-Flood-Attacken abgepuffert werden.

Recycling der ältesten halboffenen TCP-Verbindung

Ein verwandter Ansatz besteht darin, die älteste halboffene Verbindung aus dem SYN-Backlog zu löschen, wenn dieses vollläuft. Dadurch wird Platz für eine neue halboffene Verbindung geschaffen. Dieser Ansatz kann in Kombination mit einem ausreichend großen SYN-Backlog dazu führen, dass das System während einer SYN-Flood-Attacke erreichbar bleibt. Jedoch erweist sich diese Methode bei hohem Angriffsvolumen als ineffektiv.

SYN-Cache und SYN-Cookies

Die Idee des SYN-Cache ist simpel: Statt für jede halboffene Verbindung einen kompletten Transmission Control Block (TCB) im SYN-Backlog zu speichern, wird nur ein minimaler TCB vorgehalten. Die Technik nutzt kryptografisches Hashing, um zu verhindern, dass der Angreifer kritische Informationen der Verbindung erraten kann. Der SYN-Cache hat sich als effektive Technik erwiesen. Nur in wenigen speziellen Fällen können Verbindungsdaten verloren gehen.

Mit den im Jahr 1996 erfundenen SYN-Cookies wird das Konzept des SYN-Cache fortgeführt. Hierbei wird ganz auf die Nutzung des Transmission Control Blocks als Datenstruktur verzichtet. Stattdessen werden die relevanten Verbindungsparameter in der Sequenznummer des SYN/ACK-Pakets kodiert. Kryptografisches Hashing stellt sicher, dass der Angreifer die Sequenznummer nicht einfach erraten kann.

Ein legitimer Client antwortet auf das SYN/ACK-Paket mit einem ACK-Paket und greift dabei auf die speziell präparierte Sequenznummer zurück. Der Server nutzt die Sequenznummer des ACK-Pakets, um den Verbindungsaufbau kryptografisch zu verifizieren und die Verbindung herzustellen. Die Nutzung von SYN-Cookies bietet effektiven Schutz bei SYN-Flood-Attacken. Jedoch kann sie unter bestimmten Umständen zu Performanz-Einbußen führen.

Beide Techniken werden auch in Kombination eingesetzt. Im Normalbetrieb wird der SYN-Cache verwendet. Läuft der SYN-Cache voll, wird auf SYN-Cookies umgeschaltet. Die positiven Aspekte beider Techniken werden so kombiniert.

Cloudbasierter Mitigation Service

Der Kampf gegen DoS-Attacken ist so alt wie das Internet selbst. Jedoch steht modernen Angreifern durch Botnets eine weitaus höhere Feuerkraft zur Verfügung. Die damit ausgelösten DDoS-Attacken zwingen mit ihrer ungeheuren Datenflut selbst stärkste Systeme in die Knie. Daher werden heutzutage verstärkt die Dienste großer, global verteilter Cloud-Anbieter genutzt.

Die Idee: Der eingehende DDoS-Datenstrom wird auf viele einzelne Systeme verteilt. Dadurch wird die Gesamtlast des Angriffs zerstreut und die Spitzenlast auf jedem einzelnen System gemindert. So kann das Netzwerk selbst schweren Angriffen standhalten.

Auf Netzwerkebene hat sich neben den Filtertechniken die Anycast-Technologie etabliert. Anfragen an Systeme, die über Anycast angebunden sind, werden automatisch zu einem geografisch am nächsten gelegenen Server geleitet. Einer global ablaufenden DDoS-Attacke wird somit auf lokaler Ebene der Wind aus den Segeln genommen. Anycast-Netzwerke wie das von Cloudflare bestechen durch ihre Eleganz und Widerstandsfähigkeit.

Der Cloudflare-Blog bietet einen spannenden Einblick in die laufenden Entwicklungen zur Bekämpfung von SYN-Flood-Attacken. Neben der botbasierten Mitigierungsstrategie scheinen die SYN-Paket-Signaturen vielversprechend. Dabei werden menschenlesbare Fingerabdrücke der eingehenden SYN-Pakete erzeugt. Aus dem Fingerabdruck lassen sich Rückschlüsse über das Betriebssystem der Maschine ziehen, die das SYN-Paket ursprünglich verschickt hat. Während einer SYN-Flood-Attacke verschickte Pakete fallen bei der Analyse der Fingerabdrücke aus dem Muster und werden entsprechend gefiltert.

Fazit

Auch 25 Jahre nach ihrer Entdeckung als Angriffswerkzeug stellt die SYN-Flood noch immer eine Bedrohung für Website-Betreiber dar. Glücklicherweise gibt es effektive Gegenmaßnahmen, um das kritische Transmission Control Protocol gegen SYN-Flood-Attacken abzusichern.