Es ist der 23. August 2021, 12:00 Uhr. Irgendwo in Deutschland machen sich mehrere Hacker:innen ans Werk. Den Quellcode einer Webseite studieren und dann, um 12:22 Uhr ist es so weit, die erste Challenge ist gelöst. Zwei Wochen lang werden insgesamt 27 Teilnehmer:innen in 20 Challenges verschiedene Schwachstellen entdecken und ausnutzen, bevor am 3. September 2021 um 12:00 Uhr der erste ORDIX-CTF (Capture the Flag) zu Ende geht. In diesem Blogbeitrag geben wir, die Organisatoren des CTF, einen Einblick, wie ein solcher CTF technisch umgesetzt wird und was unsere persönlichen Erfahrungen waren.
CTF – Angreifen erlaubt
Ein CTF (Capture-The-Flag) ist ein Wettbewerb aus der IT-Security-Szene, bei dem Expert:innen auf verschiedenen Gebieten ihre Fachkenntnis unter Beweis stellen können. CTFs werden beispielsweise für die Rekrutierung neuer Mitarbeiter:innen verwendet und bei internationalen Wettbewerben locken oft hohe Preisgelder.
Grundsätzlich wird zwischen zwei verschiedenen Varianten unterschieden. Die CTFs im Stil "Attack-Defense" haben mehr mit dem Namensursprung des Fahnenklaus gemein als die zweite Variante, CTFs im "Jeopardy-Style".
In einem Attack-Defense-CTF greifen sich die teilnehmenden Teams gegenseitig an und stehlen durch das Ausnutzen von Sicherheitslücken randomisierte Zeichenketten (Flags) von den gegnerischen Systemen. Zeitgleich müssen die Teams jedoch verhindern, dass ihre Systeme verwundbar sind, damit keine Flags gestohlen werden, aber dennoch die Verfügbarkeit der Dienste sicherstellen.
Ein CTF im Jeopardy-Style funktioniert anders: Jedes Team löst Challenges aus verschiedenen Kategorien der IT-Sicherheit (Kryptographie, IT-Forensik, Web-Security, usw.). Dazu werden Systeme konzipiert, die verschiedene Schwachstellen aufweisen und später von den Teilnehmer:innen ausgenutzt werden sollen. Wenn eine Herausforderung gelöst wurde, erhalten die Spieler:innen ein Flag, reichen dies auf der CTF-Plattform ein und erhalten Punkte für die erfolgreiche Bearbeitung der Challenge. Am Ende gewinnt der:die Spieler:in mit den meisten Punkten (und/oder der kürzesten Bearbeitungszeit).
Das Fundament - Welche Software als Plattform
Bereits im März 2021 begannen die Vorbereitungen für das CTF. Zuallererst musste eine Plattform gefunden werden, die für die Verwaltung der Nutzer:innen geeignet ist und zeitgleich eine Möglichkeit zur Ausführung der Challenges bietet. Wir entschieden uns für die Software CTFd, die bereits etabliert ist und mit einem Plugin den Betrieb von Docker-Challenges ermöglicht. Über das Programm lassen sich die Challenges und Flags, Start- und Endzeiten des Wettbewerbs definieren und während des laufenden Events die aktuelle Rangliste überwachen. Außerdem wird neben der Benutzer:innenverwaltung auch die Organisation in Teams ermöglicht.
Um die Challenges möglichst portabel, handlich und leichtfüßig zu halten, haben wir uns dafür entschieden Docker als Grundlage für die Challenges zu verwenden. Leider wies das Plugin (https://github.com/offsecginger/CTFd-Docker-Challenges) einige Fehler auf, so dass noch etwas Zeit und Aufwand in das Plugin gesteckt wurde. Da es sich um ein OpenSource-Projekt handelt, sind unsere Verbesserungen zugunsten der Community in das Repository zurückgeflossen.
Die Aufgaben - verschiedene Genres
Nach den nötigen Anpassungen im Docker-Plugin konnte mit der Entwicklung der Challenges als Docker-Image begonnen werden. Um möglichst vielen interessierten Kolleg:innen die Teilnahme zu ermöglichen, haben wir Challenges in verschiedenen „Genres" erstellt. So wurden bspw. SUID-Bits gesetzt oder ältere Programme installiert, die bekannte Schwachstellen aufweisen. Die aufwendigsten Challenges in der Vorbereitung (und in der Bearbeitung) waren solche, die beispielsweise eine SQL-Injection-Schwachstelle enthalten sollten. Zu diesem Zweck wurde eigens eine verwundbare PHP-Webseite entwickelt.
Auch Netzwerk- bzw. IT-Forensik-Challenges, bei denen mitgeschnittener Netzwerkverkehr analysiert werden musste, wurden von uns entwickelt, sodass die Spieler:innen auch in dieser Richtung Erfahrungen sammeln konnten. Es wurde bspw. die Einreichung eines Flags im Klartext mitgeschnitten. In ähnlichem Umfang war eine Challenge aus dem Bereich des Reverse-Engineering enthalten, bei der aus dem Assembler-Code eines Programms ein bestimmter Wert ausgelesen werden musste.
Ergebnis und Zusammenfassung - ein voller Erfolg
Nach den zwei Wochen Laufzeit des CTF ziehen wir das Fazit: Es war ein voller Erfolg! Sowohl Student:innen als auch erfahrene Mitarbeiter:innen haben sich die Challenges zur Brust genommen und in großen Teilen auch erfolgreich gelöst. Einigen Teilnehmer:innen ist es sogar gelungen alle Challenges in der vorgegebenen Zeit zu lösen. Diese sicherten sich damit auch die ersten drei Plätze und wurden mit kleinen Preisen belohnt.
In der anschließenden Feedbackrunde erhielten wir neben dem vielen positiven Feedback mehrmals die Anfrage, wann denn das nächste CTF stattfinde – natürlich mit neuen Challenges. Vom spielerischen Faktor abgesehen, werden wir die Plattform in Zukunft aber auch für die Weiterbildung der Mitarbeiter:innen und Kund:innen im Rahmen unserer Seminare einsetzen und damit unsere praktischen Übungen im Rahmen unserer Schulungsprogramme erweitern.
Falls Sie Interesse an einer Schulung – zum Beispiel zum Thema „Linux Server Hardening" – haben, schauen Sie doch auch mal auf unserem Seminarshop vorbei
Zu unseren Seminaren