Analyse von CHARGEN Floods als DoS-Vektor

  • Oliver Adam
  • Februar 8, 2018

Inhaltsverzeichnis

    Analyse von CHARGEN Floods als DoS-Vektor

    Das aus dem Jahr 1983 stammende CHARGEN-Protokoll ist ein häufig eingesetzter DDoS-Vektor. Ursprünglich diente es zur Fehlersuche und zu Messungen in Netzwerken und Applikationen. Das Protokoll ist nur noch selten im Einsatz, wird aber immer noch von vielen öffentlich verfügbaren Systemen als Dienst angeboten. Das nutzen die Angreifer aus und verstärken ihre UDP-basierten Angriffe mittels IP Spoofing.

    Das CHARGEN–Protokoll, auch „Character Generator Protocol“ genannt“, ist ein im Jahr 1983 definierter Netzwerkdienst. Die entsprechenden Spezifikationen sind in RFC 864 zu finden. Entwickelt wurde CHARGEN, um Tests, Fehlersuche und Messungen im Bereich von Netzwerken und Applikationen zu vereinfachen. Hinter dem Character Generator Protocol verbirgt sich die einfache Idee, einen Service anzubieten, der sowohl über das TCP- als auch über das UDP-Protokoll angesprochen werden kann (über Port 19). Wird der Service angesprochen, liefert er über die entsprechende „Verbindung“ eine zufällige Anzahl an zufälligen Charactern (Daten).

    Die Implementierung des Protokolls beinhaltet jedoch einige Sicherheitsproblematiken. Der Dienst wird zwar inzwischen eher selten genutzt, ist aber noch häufig verfügbar, unter anderem auf älteren Windows-Servern, Windows-Desktop-PCs, Druckern, Heimroutern etc.

    CHARGEN Flood-Angriffe missbrauchen diese noch verfügbaren Anlaufstellen des CHARGEN-Protokolls. Die häufigste Art solcher Angriffe nutzt CHARGEN als „Verstärker“ für UDP-basierte Angriffe mittels IP Spoofing. Der Angriff an sich ist relativ simpel: Der Angreifer stellt über sein Botnetz Zehntausende CHARGEN-Anfragen an eines oder mehrere öffentlich verfügbare Systeme, die den CHARGEN-Dienst anbieten. Die Anfragen nutzen das UDP-Protokoll, wobei die Bots die IP Adresse des Angriffsziels als Absender-IP verwenden, sodass die Antworten der CHARGEN-Dienste nicht in Richtung des Angreifers selbst, sondern in Richtung des Angriffsziels gesendet werden. Zehntausende Antworten werden dadurch von den CHARGEN-Diensten in Richtung des Angriffsziels gesendet. Die Kommunikation gestaltet sich wie folgt (hier mit nur einem angreifenden Bot):

    CHARGEN UDP attack
    CHARGEN DDoS Attacken mit UDP (©Link11)

    Der Angreifer nutzt hierbei meist eine zusätzliche Eigenschaft des CHARGEN-Protokolls – hier ein Auszug aus RFC 864:

    UDP Based Character Generator Service
    Another character generator service is defined as a datagram based application on UDP. A server listens for UDP datagrams on UDP port 19. When a datagram is received, an answering datagram is sent containing a random number (between 0 and 512) of characters (the data in the received datagram is ignored). There is no history or state information associated with the UDP version of this service, so there is no continuity of data from one answering datagram to another. The service only send one datagram in response to each received datagram, so there is no concern about the service sending data faster than the user can process it.

    Die Inhalte der Anfragen an den CHARGEN-Dienst werden ignoriert und es werden Antworten zufälliger Länge gesendet; die Antworten haben standardmäßig eine Länge zwischen 0 und 512 Charactern (Bytes).

    Aber auch Antworten mit 1024 Bytes sind möglich. Eine Anfrage mit 1 Byte Inhalt kann also zu einer Antwort von 512 Bytes Inhalt oder mehr führen. Man spricht hierbei von einer „Verstärkung“ (Amplification) um den Faktor 512 im Bereich des Payloads. Ein Angreifer muss somit nur einen Bruchteil der Daten senden, die sein Ziel treffen. Einfach ausgedrückt: Ein Bot kann somit mit einer Bandbreite von 10 Mbps einen Angriff über 5 Gbps führen – ein ganzes Botnetz kann dadurch Angriffe von hunderten Gbps erzeugen. Eine CHARGEN-Anfrage mit der entsprechenden Antwort illustriert die Verstärkung am besten (hier ohne Layer 2- und Layer 3-Header):

    CHARGEN request
    Anfrage von Client (IP A.B.C.D) an den CHARGEN-Dienst (IP Q.W.E.R) – Paketgröße 74 Bytes (©Link11)

    Reply from DNS resolver CHARGEN service
    Antwort des CHARGEN–Dienstes DNS Resolver (IP Q.W.E.R) an Client (IP A.B.C.D) – Paketgröße 508 Bytes (©Link11)

    Im Payload-Bereich handelt es sich um einen Verstärkungsfaktor von 1024. Die Anfrage besteht aus 1 Byte Daten, die Antwort jedoch aus 1024 Bytes Daten. Betrachtet man den Paketlevel, erkennt man, dass dem Anfragepaket von 60 Bytes ein Antwortpaket von 1066 Bytes gegenübersteht und die Verstärkung den Faktor 17 bis 18 hat.

    Die Kommunikation des Botnetzes inklusive der Verstärkung gestaltet sich wie folgt:

    C&C botnet fixed

    Das Angriffsziel ist dabei mehreren Gefahren ausgesetzt:

    • Überlastung der Internetanbindung
    • Überlastung von Komponenten, welche die Pakete bearbeiten müssen
    • etc.

    Im schlimmsten Fall führt ein solcher Angriff zum kompletten Ausfall der Internetanbindung des Angriffsziels.

    Link11 Cloud Security Platform in Region Asien-Pazifik verfügbar
    Telekom-Manager verstärkt Geschäftsführung beim DDoS-Schutzanbieter Link11
    X