Im Rahmen dieser Laborarbeit des Studienganges Enterprise and IT Security wurde ein Attack and Defense CTF entwickelt und ausgerichtet. Ein CTF (Capture the Flag) versteht sich als spielerischer Wettbewerb in der IT Sicherheit, bei dem Sicherheitslücken in Systemen gefunden, ausgenutzt und geschlossen werden sollen. Um Punkte zu sammeln, müssen die Teilnehmenden sogenannte Flags (Geheimnisse) aus den verwundbaren Applikationen erbeuten, welche als Nachweis beim Server der Spielleitung vorgezeigt werden, damit man Punkte erhält. Im Studiengang Unternehmens- und IT-Sicherheit existiert bereits ein Jeopardy CTF, welches wöchentlich im Rahmen des Hochschul CTFs stattfindet. Um das Angebot an der Hochschule zu erweitern, wurde das oben genannte Attack and Defense CTF entwickelt. Im Gegensatz zum Jeopardy CTF muss bei einem Attack and Defense CTF jedes Team zusätzlich seinen eigenen Server mit den zum CTF gehörigen Diensten betreiben und absichern. Hierfür erhält jedes Team zu Beginn ein identisches Server-Image und damit auch die selben Dienste mit den selben Schwachstellen.
Konkret werden hierfür das Framework zum Verwalten des Spiels (Verteilen von Flags, Prüfung der Verfügbarkeit, Bereitstellung eines Scoreboards), ein Netzwerk und Firewall-Konzept, mehrere verwundbare Dienste und physikalische Hardware benötigt. Die Projektarbeit umfasst die Erstellung bzw. Organisation aller genannten Komponenten. Zur Durchführung des Spiels wurde ein grundlegendes Framework entwickelt, welches auch bei zukünftigen CTFs wieder verwendet werden kann.
Das Framework verteilt während dem Spiel in regelmäßigen Abständen die Flags an die einzelnen Teams und überprüft, ob die Dienste erreichbar sind. Darüber hinaus können die Teams ihre Flags beim Framework abgeben. Dieses berechnet aus den abgegebenen Flags und der Erreichbarkeit der Dienste Angriffs-, Verteidigungs- und Erreichbarkeitspunkte (SLA). Die Punkte werden auf einem Scoreboard (HTML-Seite) dargestellt. Das Framework wurde in Python entwickelt und an eine PostgreSQL Datenbank angebunden. Für das Scoreboard wurde das Webframework Flask, das CSS-Framework Bootstrap und das Javascript-Framework Plotly verwendet.
Zusätzlich wurde von jedem Projektmitglied ein verwundbarer Dienst entwickelt. Damit verschiedene Technologien, Schwierigkeitsgrade und Schachstellenkategorien abgedeckt werden, wurde ein Webdienst, ein Socket Dienst und ein Binary Service entwickelt.
Die Durchführung des CTFs erfordert eine Terminplanung im Voraus. Sobald ein Termin bestimmt ist, können die Teilnehmenden eingeladen werden. Zur Anmeldungen kann ein Online-Formular verwendet werden, welches relevante Daten wie Semester, Vorerfahrung und Kontaktdaten sammelt. Bei der Einteilung der Teams werden diese Daten benötigt, um die Teilnehmer in faire Gruppen mit gleichem Wissensstand einzuteilen. Um die Durchführung zu gewährleisten, muss das Organisationsteam bis zum Tag des Spiels alle benötigten Komponenten (Hardware, Software, Services etc.) organisiert bzw. entwickelt haben. Am Tag des Spiels selbst, steht das Organisationsteam als Leiter des Spiels und Ansprechpartner bei Problemen zu Verfügung.
Bei der Durchführung des CTFs nahmen 30 Studierende aus den Studiengängen Enterprise and IT Security, Medien und Informationswesen und Unternehmens- und IT-Sicherheit.
Projektteam:
Eric Bauer, Moritz Kaumanns, Christian Pieper
Projektbetreuung:
Prof. Dr. Erik Zenner