Orbit IT-Forum: Auf dem Weg zum Arbeitsplatz der Zukunft
27.09.17 - 27.09.17
In Leverkusen

AUTOMATE IT 2017
28.09.17 - 28.09.17
In Darmstadt

it-sa 2017
10.10.17 - 12.10.17
In Nürnberg

3. Esslinger Forum: Das Internet der Dinge
17.10.17 - 17.10.17
In Esslingen

Transformation World
19.10.17 - 20.10.17
In Heidelberg

HackerIn unserer letzten Imperva-Analyse der Mirai-Schadsoftware, die kürzlich für den Ausfall von KrebsOnSecurity und des Dienstes DynDNS sorgte, beschrieben wir verschiedene Angriffsvektoren, die in den Programmen des Botnets Verwendung finden.

Hier fielen insbesondere die STOMP-Floods (Simple Text Oriented Messaging Protocol) auf - vor allem deshalb, weil dieses Protokoll nur selten bei DDoS-Angriffen verwendet wird. Aus diesem Grund möchte Imperva nun näher darauf eingehen, wie Mirai-Überflutungen mit STOMP-Junkpaketen einsetzt, um ausgewählte Websites zum Zusammenbruch zu bringen.

Was ist STOMP

STOMP ist ein einfaches textbasiertes Protokoll auf Anwendungsebene. Es ist eine Alternative zu anderen Open-Messaging-Protokollen wie AMQP (Advanced Message Queuing Protocol). STOMP lässt Clients mit anderen Message Brokern kommunizieren. Dabei handelt es sich um Programmmodule, die die Kommunikation zwischen verschiedenen Protokollen übersetzen. Anwendungen haben so die Möglichkeit, mit Software zu kommunizieren, die mit anderen Programmiersprachen entwickelt wurde.

Ähnlich wie HTTP arbeitet STOMP über TCP über die folgenden Befehle:

Bild 1

Bei einer typischen STOMP-Anfrage handelt es sich um einen Frame, der aus einer Reihe von Zeilen besteht. Die erste Zeile enthält einen Befehl, gefolgt von Headern in der Form <key>: <value> (einer pro Zeile). Darauf folgt der Textkörper, der mit einem Nullzeichen endet. Server verwenden ein ähnliches Format von Headern und Textkörper, um einem Client über einen MESSAGE-, RECEIPT- oder ERROR-Frame zu antworten.

Wie Mirai TCP-STOMP-Angriffe startet

Um DDoS-Traffic zu generieren, setzt Mirai eine sogenannte TCP-STOMP-Flood ein. Dabei handelt es sich um eine Variation des bekannteren ACK-Flood-Angriffs.

STOMP-Angriffs-Skript von Mirai

Bild: STOMP-Angriffs-Skript von Mirai

Der Prozess lässt sich in die folgenden Phasen unterteilen:

  1. Ein Botnet-Gerät setzt STOMP ein, um mit einer als Angriffsziel definierten Anwendung einen authentifizierten TCP-Handshake auszuführen.
  2. Sobald die Authentifizierung erfolgt ist, werden als STOMP-TCP-Anfrage getarnte Junkdaten an das Ziel gesendet.
  3. Die Überflutung mit falschen STOMP-Anfragen führt zur Auslastung des Netzwerks.
  4. Wenn das Ziel für die Analyse von STOMP-Anfragen programmiert wurde, kann der Angriff darüber hinaus die Serverressourcen verbrauchen. Selbst wenn das System die Junkpakete verwirft, werden dennoch Ressourcen aufgewendet, um festzustellen, ob die Nachricht korrupt ist.

Interessanterweise weisen die neuesten Angriffe gewisse Parallelen zu einem TCP-POSTFlood auf, eine Angriffsart, vor der Imperva vor einigen Monaten gewarnt hatte. In beiden Fällen handelt es sich um den Versuch, eine Schwachstelle in der Architektur hybrider Abwehrmechanismen anzugreifen.

Bei diesen Setups werden Angriffe auf die Netzwerkschicht extern gefiltert, während Angriffe auf die Anwendungsebene intern abgewehrt werden. Dadurch entsteht ein Engpass, den Instanzen auf der Anwendungsebene ausnutzen können, um Netzwerkleitungen zu verstopfen.

Die Länge der Anfragen des STOMP-Angriffs ist im Quellcode von Mirai standardmäßig auf 768 Byte je Anfrage festgelegt. Mit einem Botnet, das über 100.000 Bots umfasst, ist es nicht schwer, einen Angriff mit hoher Frequenz zu erreichen, mit dem auch große Netzwerke mit einem Burst-Uplink von 5 bis 10 Gbps schnell ausgelastet werden. Derweil kann ein Angriff mit wenigen Bots ein kleineres Netzwerk lahmlegen, zumal die Standardgröße der Anfragen leicht angepasst werden kann, um das Ziel schneller zu erreichen.

Abwehr von STOMP-DDoS-Angriffen

Ob ein TCP-STOMP-Angriff erfolgreich abgewehrt werden kann, hängt davon ab, ob die eingesetzte Lösung in der Lage ist

  • bösartige Angriffe zu identifizieren,
  • die Angriffe herauszufiltern, bevor diese sich ihren Weg durch das Netzwerk bahnen.

Die Identifizierung der Anfragen ist in der Regel eine einfache Aufgabe. Die meisten Anwendungen arbeiten nicht mit STOMP-Anfragen, sodass die Sicherheitssyteme sämtlichen Junk-Traffic wahllos verwerfen können. Selbst wenn das nicht der Fall ist, sind bösartige Anfragen aufgrund der vordefinierten Größe der STOMP-Payloads einfach zu erkennen und auszuschließen.

Die entscheidende Frage ist jedoch folgende: „Wo sollte man solche Anfragen verwerfen?“ Wenn eine Hardwarelösung TCP-Verbindungen am Standort terminiert, können schädliche STOMP-Anfragen über die Internetleitung das Zielnetzwerk erreichen. In der Folge wird das Netzwerk eines Unternehmens möglicherweise ausgelastet und kann schließlich ganz ausfallen– und genau das erhoffen sich die Täter.

Bei einem Cloud-basierten Service hingegen werden TCP-Verbindungen viel früher erkannt und beendet. Somit wird eine Überflutung des Uplinks verhindert – der legitime Verkehr kann unbeeinflusst weiter laufen.

Zurzeit sind STOMP-Angriffe selten. Doch der vermehrte Einsatz der Mirai-Schadsoftware deutet darauf hin, dass es diese Art von Angriffen in naher Zukunft immer häufiger geben wird. Die einzige vernünftige Schutzmöglichkeit ist der Einsatz einer externen Filterung.

www.imperva.de
 

 
Frische IT-News gefällig?
IT Newsletter Hier bestellen:

Newsletter IT-Management
Strategien verfeinert mit profunden Beiträgen und frischen Analysen

Newsletter IT-Security
Pikante Fachartikel gewürzt mit Shortnews in Whitepaper-Bouquet