Reportage: Capture the Flag auf der hack.lu

12.11.2019
G DATA Blog

Hacking-Wettbewerbe sind auf Konferenzen nicht selten. Die Stars dieser Szene reisen über die ganze Welt, um an einem Wettbewerb teilzunehmen. Das Ziel: Spaß haben und vor allem: niemals aufhören zu lernen.

Stress bei der Vorbereitung

Nach einer dreieinhalbstündigen Autofahrt komme ich mit meinem Kollegen Stefan gegen 11:30 Uhr am Vormittag am Konferenzhotel im Luxemburg an. Nachdem wir unsere Konferenz-Badges abgeholt haben, geht es einmal nach links – der Tisch des FluxFingers-Teams ist kaum zu übersehen. An ihren aufgeklappten Laptops sitzen zwischen Wasser-und Mate-Limo-Flaschen acht Teammitglieder und arbeiten konzentriert. Das FluxFingers Team der Ruhr-Universität Bochum richtet wie jedes Jahr den so genannten CTF-Wettbewerb auf der hack.lu – Konferenz aus. Das unter anderem von G DATA gesponsorte Team ist bereits seit gestern Abend vor Ort, um letzte Hand an die Systeme zu legen, die auf die „Spieler“ warten. Geschlafen hat in der letzten Nacht keiner. Es gab im Vorfeld noch einige Stolpersteine zu beseitigen. „Eigentlich haben wir alle unsere Challenges auf einem einzelnen System laufen, aber das ist uns vor zwei Wochen gestorben“, verrät Tobias. „Deshalb haben wir kurzfristig ein paar neue Server organisieren und das gesamte CTF umziehen müssen. Das Computer Incident Response Center aus Luxemburg, das auch Sponsor der Hack.lu sind, hat uns hier freundlicherweise sehr kurzfristig mit ein paar Maschinen ausgeholfen. Da ist jetzt noch einiges zu konfigurieren, und in einer halben Stunde soll es losgehen.“ Wir haben die Aufforderung verstanden und lassen die Jungs erst einmal in Ruhe arbeiten. Wir sehen uns um. Da ist schräg gegenüber ein Stand des Chaos Computer Club Luxemburg. Auf der anderen Seite ist ein Stand einer Bug Bounty-Plattform. Es wimmelt von 3D-Druckern, blinkenden Lichtern und zahlreichen Bastelprojekten. Ich fühle mich sofort wohl. 

Einige bekannte Gesichter tauchen in der Menge auf – einige davon waren vor ein paar Wochen noch auf der Virus Bulletin in London. Wir gehen hin und quatschen ein wenig. 

Der Countdown läuft

Um kurz vor 12 gehen wir zurück zum Tisch der FluxFingers. „Noch zwei Minuten!“ ruft einer vom anderen Ende des Tisches. Auf dem Laptop-Display von Horst ist ein Prozessmonitor zu sehen. „Das sind die Lastanzeigen für die Challenge-Systeme. Wir hoffen mal, dass die Anzeigen hier“ – er deutet oben links auf den Bildschirm – „nicht sofort um 12 voll ausschlagen. Das wäre schlecht.“  Um Punkt 12 Uhr, so erfahre ich, werden die Firewalls ausgeschaltet und die Spieler können sich einloggen und mit der Lösung der insgesamt 30 Aufgaben beginnen. Ich will wissen, ob jetzt immer einer des Teams alle Systeme immer im Auge behalten muss. „Eigentlich nicht“, erklärt er.

Ein CTF – was ist das eigentlich?

Die Abkürzung „CTF“ steht für „Capture the Flag“, zu Deutsch „erobere die Fahne“.  Dabei besitzt jede Spielpartei eine Fahne, welche durch die Gegner erobert werden muss. Als Spielmodus ist es auch in vielen Computerspielen verbreitet , wo Teams aus Spielern sich darum bemühen, eine virtuelle Flagge aus den gegnerischen Camp zu erobern und ins eigene Lager zu bringen. Das Ziel eines Hacking-CTFs ist sehr ähnlich – so muss ein Team zum Beispiel ein Passwort oder eine andere Zeichenfolge „erobern“. Diese kann auf verschiedenen Arten und Weisen versteckt sein, etwa in einer Datei, in einem verschlüsselten Text oder einer Webseite. Ans Ziel kommt nur, wer mit Geschick und reichlich „Hirnschmalz“ die Aufgabe, auch „Challenge“ genannt, löst. 

„Wir haben fast alles automatisiert und haben hier auch eine Anzeige zum Status der einzelnen Challenge-Komponenten. Ein Skript prüft immer, ob eine Challenge noch so funktioniert, wie sie soll. Sofern nichts schiefgeht, muss keiner von uns was da dran machen. Wenn‘s irgendwo klemmt, dann bekommen wir alle eine Push-Nachricht aufs Handy. Außerdem sind wir alle in einem großen Gemeinschafts-Chat – da bekommt man eventuelle Probleme schnell mit.“ Eine Übersicht der Einzelkomponenten auf einem anderen Bildschirm zeigt ein grünes Feld an, wenn alles funktioniert. Zwei Felder sind gerade auf rot gesprungen. Es ist 12:02 Uhr. Wie aufs Stichwort meldet sich der Orga-Chat „Habe Probleme beim Einloggen“, heißt es da. Und eine Zeile tiefer: „Wie kann man seinen Teamnamen ändern?“ Das Fazit am Tisch zu diesem Zeitpunkt lautet: „Soweit läuft eigentlich alles gut, bis auf Kleinigkeiten“. 

Wie wird gewertet?

Das Lösen einer Challenge bringt einem Team Punkte ein. Je schwerer die Challenge, desto mehr Punkte bringt sie ein. Am Ende gewinnt das Team mit den meisten Punkten. Manchmal ist es aber so knapp, dass auch die Zeit mit einbezogen werden muss, in der die Challenges gelöst werden. In einem CTF spricht man hier vom „First Blood“ – Prinzip: wer eine Challenge als erster löst, bekommt eine höhere Punktzahl für die Challenge gutgeschrieben als diejenigen, die die richtige Lösung später einreichen. 

Was müssen CTF-Spieler mitbringen?

Ansonsten ist die Stimmung im Saal eigentlich recht entspannt. Viele Menschen stehen um Tische herum und unterhalten sich. Massenweise aufgeklappte Laptops sucht man vergebens. Denn ein CTF wie dieses ist nicht vergleichbar mit einer LAN-Party. Die Spieler sitzen überall auf der Welt: Indien, Taiwan, Vietnam, USA, England…noch internationaler wird’s nicht. „Dass jemand tatsächlich vor Ort mitspielt, ist eher selten“, heißt es. Ein Blick in die Teilnehmerliste zeigt insgesamt über 700 angemeldete Teams aus aller Welt – nur acht davon spielen vor Ort, direkt auf der Konferenz. 

Das Betriebssytem ist eigentlich egal. Benutz' einfach die Plattformen, mit denen du dich wohlfühlst, ob unter Windows, Linux oder MacOS.

Zwar ist die Spielerschaft international und die Teams kommen aus allen Ecken der Erde – dennoch gibt es keinen „Weltverband“ oder Vereinswesen in diesem Bereich. Es gibt im klassischen Sinne keine Vorrunden, Viertel- oder Achtelfinale. Es gibt keine Landes,- oder Bundesligen. Auch eine Champions League oder Weltmeisterschaft für CTFs sucht man vergeblich - eigentlich. Denn einige CTFs gelten als „inoffizielle WM“, so etwa der CTF-Wettbewerb auf der DefCon-Konferenz in Las Vegas. „Kann eigentlich jeder bei einem CTF mit machen?“, will ich von Carl wissen. „Klar, es kann grundsätzlich jeder mitmachen. Normalerweise sind es immer Teams, die sich zu einem CTF anmelden, denn kaum einer hat sämtliche Skills, die man für alle Challenges in einem CTF braucht. Für einige CTFs muss man sich allerdings erst qualifizieren, weil die schon auf einem sehr hohen Level sind – die sind echt nichts für Anfänger. Qualifizieren kann ein Team sich zum Beispiel für ein solches CTF, indem es ein anderes CTF gewinnt.“ 
„Gibt es eine vorgeschriebene Ausrüstung?“ will ich wissen. „Also Programme, ein bestimmtes Betriebssystem wie Kali Linux oder sowas?“. „Nee. Bring einfach das mit, was dir hilft und mit dem du dich wohlfühlst. Es ist völlig egal, ob du Windows, MacOS oder Linux benutzt. Viele benutzen irgendein Linux. Andererseits: Einer der besten CTF-Spieler der Welt ist auf Windows unterwegs. Du musst halt am Ende selber gut damit umgehen können. Werkzeuge…..naja, kommt drauf an, was du machen willst. Ein Text-Editor ist schon mal ein guter Anfang.“ Auf meine Frage, was ich denn können muss, reagieren einige der Teammitglieder belustigt. „Naja, alles“, witzelt einer. „Nee, im Ernst.", schaltet sich Tobias ein. "Jeder hat sein Spezialgebiet, von Websicherheit über Kryptografie bis zu Reverse Engineering oder Forensik. Die Kategorie (gemeint ist Forensik; Anm. d. Verf.) ist aber eher wenig verbreitet, weil die Challenges in dem Bereich echt langwierig sind und man oft viel raten muss.“

Was für Challenges gibt es überhaupt?

Grob gesagt gibt es fünf Aufgabentypen: Binary Exploit, Reverse Engineering, Web Exploit, Kryptografie und Forensik.  Beim Exploiting geht es entweder darum, eine Schwachstelle in einer vorher präparierten Anwendung oder einer Webseite zu finden und wenn möglich die Kontrolle über ein System zu übernehmen. Bei Krypto-Challenges ist die Lösung in einem verschlüsselten Text versteckt, den es zu entschlüsseln gilt. Bei Forensik-Challenges bekommt der Spieler zum Beispiel ein Speicherabbild eines Systems und muss in diesem sein „Flag“ finden. Dazu muss ein Spieler zunächst einmal herausfinden, wo die Information versteckt ist – denn ein Speicherabbild ist schnell mal einige Gigabyte groß. Gerade hier müssen die Spieler viel Geduld und bisweilen eine hohe Frustrationstoleranz mitbringen. 

Eine Einsteiger-Challenge in diesem Jahr heißt zum Beispiel "ShinyCode". Das Ausgangsmaterial besteht aus einem ca. 10 Minuten langen Video. Es zeigt das FluxFingers-Logo, das in verschiedenen Farben blinkt. Der Begleittext verrät nur, dass es sich um einen Code handelt, der eine sehr alte Technik verwendet, die auf kurzen und langen Signalen basiert.  

 

Die richtige Balance

Der Wettbewerb läuft also nun. Nachdem wir uns versichert haben, niemanden bei etwas Wichtigem zu stören, lassen wir uns die Regeln erklären. „Wirkliche Regeln gibt es eigentlich nicht. Das wäre ja auch bei einem „Hacking-Wettbewerb“ unsinnig, denn es geht ja darum, auf kreativen Wegen zum Ziel zu kommen. Wir machen einem eigentlich keine Vorschriften, wie er / sie genau an eine Challenge ran geht. Außerdem können wir dabei auch noch was lernen.“ Es gibt aber, so erklärt Carl mir, so ein paar Dinge, die nicht gerne gesehen sind.“ Die müssen wir auch beachten, wenn wir die Challenges entwicklen. Es darf zum Beispiel keiner einen Vorteil haben, nur weil er ein bestimmtes Werkzeug hat. Es ist zwar schön, wenn einer mit einem teuren und guten Werkzeug arbeiten kann, aber das wird ihm für die Lösung der Aufgabe keine Vorteile bringen. Es geht ja bei einem CTF nicht darum, wer die besseren Werkzeuge oder mehr Rechenleistung hat.“ A propos Rechenleistung: Ein weiterer wichtiger Faktor beim Entwurf einer Challenge ist auch, wo die einzelnen Spieler sitzen und was sie für Hardware dabei haben. Manch ein Spieler sitzt auch mit seinem Laptop am Flughafen. Wo es um Rechenleistung geht, sollte ein etwa zwei Jahre alter Laptop eine Challenge problemlos packen können, wie Simon mir erklärt. 
Das leuchtet ein – denn wenn für die Lösung einer Aufgabe ein bestimmter Text entschlüsselt werden muss, dann könnte mancher ja auf die Idee kommen, einfach entweder einen sehr leistungsstarken Rechner mitzubringen oder Rechenzeit auf einer Cloudplattform einzukaufen. Auch automatisierte Logins, um beispielsweise Passwörter auszuprobieren, sind kein Thema – wir haben da eine künstliche Bremse eingebaut, damit keiner auf die Idee kommt, sowas zu machen. Automatisierte Tool sind unfair den anderen Spielern gegenüber, denn sowas frisst auf unseren Systemen Bandbreite und Rechenleistung. Und es wäre langweilig.“ 
Langeweile darf bei den Challenges jedoch nie aufkommen. Niklas dazu: „Wir müssen immer eine Balance finden zwischen Schweregrad und Herausforderung. Wenn die Challenges zu einfach sind, dann sind die „alten Hasen“ frustriert, weil sie sich nicht gefordert fühlen. Wenn die Challenges aber in der zur Verfügung stehenden Zeit „unlösbar“ sind oder man völlig abstruse oder unlogische Lösungswege gehen muss, dann ist das ein Zeichen von schlechtem Challenge-Design. Das frustriert Neulinge ungemein und verschreckt die Spieler. “  Wichtig ist vor allem, dass alle Spieler etwas für sich zu tun finden. Es muss daher auch Challenges geben, die für Anfänger geeignet sind. „Wir haben dieses Jahr insgesamt 30 Challenges dabei. Von denen sind neun noch ungelöst. Ein Blick auf die Uhr verrät: Es ist kurz vor Mitternacht. Selbst um diese Zeit ist das FluxFingers-Team noch vollständig am Stand.

Es geht bei einem CTF nicht darum, wer das beste Werkzeug hat. Das wäre langweilig.

Stäbchenfisch

Fluxfingers-Team

Schlaf ist schon wichtig...

Zwischendurch sind Tobias und Simon für ein paar Stunden schlafen gegangen und planen, die „Nachtschicht“ zu übernehmen. Wichtig ist, dass jederzeit ein Ansprechpartner erreichbar ist, denn das CTF ist ein globales Event. Ein Blick auf das aktuelle Scoreboard zeigt, dass gerade die Teams aus dem europäischen Raum besonders aktiv sind. Die Mannschaften aus dem asiatischen Raum machen gerade Feierabend. „Bei den Spielern ist es gerade früh morgens und da gehen dann ein paar Leute einfach mal schlafen.“ Einen wirklichen „Schichtbetrieb“ gibt es bei den am CTF teilnehmenden Teams nicht. Jeder arbeitet nach seinem eigenen Tempo – allerdings kann man dabei schon einmal die Zeit vergessen. Dass Spieler komplett „durchmachen“, ist aber nicht der Regelfall. Das komme eher bei kurzen CTFs vor, die maximal 24 Stunden dauern. „Schlafen ist schon wichtig. Denn wenn du müde wirst, kannst du dich nicht mehr konzentrieren. Dann fängst du an, Fehler zu machen. Damit tust du dir und deinem Team keinen Gefallen.“, meint Carl. „Mate oder Kaffee helfen zwar ein bisschen, aber irgendwann ist einfach Ende – dann solltest du definitiv schlafen gehen.“ Ich erfahre, dass es auch CTFs gibt, die sehr lange dauern – 72 Stunden und länger. Da werden dann auch zwischendurch mal für einige Stunden die Firewalls wieder hochgefahren und eine Pause erzwungen. Diese Zeit können die Spieler dann nutzen, um beispielsweise zu schlafen, und das Orga-Team kann die Zeit für Reparaturen und kleine Nachbesserungen nutzen. 

Schlafen ist schon wichtig - sonst kannst du dich irgendwann nicht mehr konzentrieren und fängst an, Fehler zu machen.

Carl, FluxFingers

Regeln durchsetzen

Der zweite Tag bricht an. Beim Besuch am FluxFingers-Stand ist die Atmosphäre gerade etwas angespannt. Niklas erklärt: „Da gibt es einige Teams, die gerade automatische Scanner auf die Web-Challenges loslassen - Nessus und andere kommerzielle Werkzeuge. Das ist jetzt nicht Sinn und Ziel der Sache – da müssen wir definitiv eingreifen.“ Die Art und Weise, wie Spieler an eine Challenge herangehen, verrät auch etwas über den Schweregrad. „Normalerweise setzen die Spieler solche Tools dann ein, wenn sie entweder nicht mehr weiterwissen oder wenn ihnen die Zeit wegläuft. Aber das zieht natürlich Ressourcen auf unserer Seite“. Auf die Frage, was man dagegen machen kann, meint Paul schulterzuckend: „Naja, viel machen kann man da nicht. Du kannst natürlich versuchen eine Verwarnung auszusprechen oder wenn gar nichts mehr hilft, eine Ursprungs-IP bannen – aber wenn du dann etwa die IP des Hotels auf die Bann-Liste setzt, dann hast du sofort alle Teams ausgesperrt, die vom Hotel aus spielen. Das geht dann natürlich nicht. Mal schauen, wir posten gleich mal eine Nachricht im Chat und vielleicht noch auf das öffentliche CTF-Portal.“ Wenn die Challenge zu schwer ist, so erklärt mir Tobias, dann führt kein Weg daran vorbei, den Spielern Hinweise zu geben, die ihnen einen Schubs in die richtige Richtung geben. Denn es ist, so erfahre ich, auch sehr frustrierend für die Spieler, wenn sie stundenlang im Nebel stochern müssen. Mittlerweile ist die Zahl an ungelösten Challenges auf drei zusammengeschmolzen. Das CTF läuft jetzt seit knapp 26 Stunden. 

Wir wollen die Spieler nicht frustrieren, indem wir sie stundenlang im Nebel stochern lassen. Wenn es zu schwer ist, dann geben wir natürlich auch mal den einen oder anderen Tipp.

Tobias, FluxFingers

Ungelöste Aufgaben

Der Rest des Tages verläuft ruhig und wir hören uns noch einige der Vorträge an auf der Konferenz an. Am nächsten Morgen sehen Tobias und Simon ziemlich müde aus, als ich um kurz nach sieben Uhr morgens wieder vorbeischaue. „Wir machen jetzt noch zwei Stunden, dann kommt die Ablösung. Dann gehen wir erst mal eine Runde schlafen.“ Eine einzige Challenge ist bis jetzt noch ungelöst – die „Contiki NG“-Challenge. „Contiki NG“ ist ein IoT-Framework, das von vielen Herstellern genutzt wird. Ich habe hier eine Version davon bereitgestellt, in der noch eine Sicherheitslücke im Netzwerk-Stack vorhanden ist.“ Leicht zu finden ist die aber nicht," wie mir "Sceptic", der Autor der Challenge verrät. „Die Lücke ist auch in der momentan aktuellen offiziellen Version vorhanden - der Hersteller weiß Bescheid und ein Patch steht kurz vor der Veröffentlichung. Aber eigentlich habe ich schon echt viele Hinweise gegeben.“ Ich ziehe mich noch ein wenig zurück, um an meinem Video-Wochenrückblick zu arbeiten.

Endspurt

Um kurz vor 12 bin ich wieder unten. Auf dem Scoreboard ist Bewegung ins Spiel gekommen. In zwei Minuten ist Schluss. Ein Team aus Südkorea mit dem Namen „wecaneat5hamburgersatonce“ liegt derzeit vorne, dicht gefolgt von "dcua" aus der Ukraine und "#71" aus Israel. Die Teams liefern sich im wahrsten Sinne des Wortes ein Kopf-an-Kopf-Rennen. Als schließlich der Hammer fällt, liegt das Burger-Team knapp vorne und hat somit das CTF gewonnen. Ein Twitter-Post gratuliert den Gewinnern. Die nächsten Stunden verbringt das Fluxfinger-Team damit, Feedback zu sammeln und das „Twitter-Gewitter“ im Blick zu behalten. Die Spieler und Teams bedanken sich für die Challenges und sparen nicht mit Lob. Einer schreibt „Eure TreesForFuture-Challenge zu lösen war eine lange Reise, aber es hat sich wirklich gelohnt“.  

Es gibt nach dem letzten Vortrag auch noch eine Preisverleihung für die CTF-Teams, die lokal gespielt haben - Unter Anderem das Team "Flat Network Society", gefolgt von "teambi0s" aus Indien, sowie "We0wnY0u" von der TU in Wien. Alle die lokal gespielt haben und im Namen ihrer Teams Preise entgegennehmen, sind Mitglieder von Teams, die teils auch "von zuhause aus" mitgemacht haben. Denn wie bereits erwähnt: ein CTF ist ein globales Ereignis.   

Auch wir sind nach drei Tagen Konferenz, zahlreichen interessanten (und auch lustigen) Gesprächen, wenig Schlaf und viel Mate reif für die Heimreise. Das Fluxfinger-Team wird noch eine Nacht bleiben, um den Stand abzubauen, auszuspannen - und um vielleicht ein bisschen Schlaf nachzuholen. 

Das FluxFingers Team der Ruhr-Universität Bochum

Tim Berghoff
Security Evangelist