CInsects/Was ist ein CTF

Aus Fachschaft_Informatik
Zur Navigation springen Zur Suche springen
Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

Wie läuft ein CTF?

Diese Beschreibung beschreibt einen Standard-Attack-Defense-CTF, der UCSB iCTF weicht davon meist nicht unerheblich ab, da sich die Veranstalter jedes Jahr etwas neues ausdenken. Der genaue Ablauf des iCTFs 2013 wurde noch nicht veröffentlicht.

Jedes Team bekommt einen präpartierten Server (meist als virtuelle Maschine) mit verwundbarer Software ("Dienste", engl. "Services"). Die Dienste wurden vom Veranstalter in verschiedenen Programmiersprachen geschrieben und haben viele, bewusst eingebaute, Sicherheitslücken. Die Teams müssen die Sicherheitslücken der Dienste auf ihren eigenen Server beheben und bei den anderen Teams ausnutzen, dabei haben alle Teams die gleichen Dienste. Um zu spielen sind alle Teams in einem großen Netzwerk (über VPN) miteinander verbunden. Zur Bewertung der einzelnen Teams lässt der Veranstalter einen Spielserver laufen, mit dem die Teams interagieren müssen.

Ctf-structure.png

Um zu beweisen, dass Sicherheitslücken bei anderen Teams ausgenutzt wurden, muss ein Team eine sogannte "Flagge" (engl. Flag) klauen. Diese werden durch den Spielserver bei den einzelnen Diensten der Teams platziert. Beispielsweise registriert der Spielserver sich in einer Forensoftware (ein Dienst) bei einem Team einen Account und verwendet dabei ein besonderes Passwort als Flagge, bspw. "FLG327A6C4304AD5938EAF0EFB6CC3E53DC". Die Forensoftware speichert das Passwort dabei im Klartext. Ein anderes Team kann nun durch ausnutzen einer Sicherheitslücke dieses Passwort klauen und erhält dadurch die Flagge. Diese kann das Team dann beim Spielserver einreichen um Punkte zu bekommen. Dabei ist zu beachten, dass Flaggen in der Regel ablaufen -- eine Flagge, die vor mehreren Stunden vom Spielserver platziert wurde, ist oft nichts mehr wert. Eine weitere Möglichkeit an Punkte zu bekommen ist das Verteidigen von Flaggen. Der Spielserver schreibt daher Punkte für Flaggen gut, die er selbst noch abrufen kann (zum Beispiel indem er sich versucht in seinen erstellten Forenaccount einzuloggen), abgelaufen sind und die kein anderes Team eingereicht hat.

Ctf-flags.png

Oftmals sind die Flaggen auch mit einem Dienst verbunden, d.h. der Spielserver merkt sich, bei welchem Dienst er diese platziert hat. Wenn der eigene Dienst nicht erreichbar ist, kann man meist auch keine geklauten Flaggen von diesem Dienst (der bei anderen Teams läuft) einreichen. Es lohnt sich also darauf zu achten, dass die eigenen Dienste laufen.

Ab und zu mal anzutreffen sind auch Advisories. Wenn ein Team eine Sicherheitslücke findet, kann es diese beschreiben und die Beschreibung an den Veranstalter schicken. Je ausführlicher diese Beschreibung einer Sicherheitslücke (z.B. wie man sie behebt, wie man sie ausnutzt etc.) desto mehr Punkte bekommt man. Die Advisories werden oft zeitverzögert für alle Teams veröffentlicht.

Relativ häufig sind dagegen sogenannte "Challenges", kleine Rätsel unterschiedlichen Schwierigkeitsstufen. Für das Lösen dieser Rätsel gibt es entweder direkt Punkte oder irgendwelche Boni im Spiel. Sicherheitskenntnisse werden zum Lösen der Rätsel oftmals nicht benötigt.

Zusammenfassung

  • Man spielt als Team gegen andere Teams
  • Jeder Team hat den gleichen Server mit verwundbaren Diensten
  • Sicherheitslücken müssen bei sich selbst behoben und bei anderen ausgenutzt werden.
  • Vom Spielserver verteilte Flaggen müssen geklaut werden, um das Ausnutzen zu beweisen.
  • Flaggen haben ein festes Format, z.B. "FLG[A-F0-9]{16}", so dass sie auffindbar sind.
  • Flaggen, die abgelaufen sind und nicht von anderen Teams geklaut wurden, werden meist als Verteidigungspunkte gutgeschrieben.
  • Die eigenen Dienste sollten laufen, da man sonst weniger Punkte bekommen kann.