Wie wir die Qualifizierungsphase von CTFZone-2020 vorbereitet haben

Vom 30. November bis 1. Dezember wurde die Qualifikationsphase des CTFZone- Turniers abgeschlossen, an dem 1043 Teams aus der ganzen Welt teilnahmen. Nach unseren Angaben wurden Probleme sogar in Simbabwe (26 eindeutige IPs) gelöst. Tiefer graben, war es ein Universitäts-Team aus der Stadt Bulawayo.


In diesem Jahr wurde CTFZone zur Qualifikationsrunde der DEF CON CTF . Das Team, das das Finale gewinnt (es findet vom 16. bis 17. April 2020 auf der OFFZONE statt), wird zum Turnier nach Las Vegas reisen . Damit die Glücklichen Zeit haben, ein Visum zu bekommen, wurden die Konferenzdaten sogar auf einen früheren Zeitpunkt verschoben.


DEF CON CTF ist für viele Teams der älteste und angesehenste Sicherheitswettbewerb. Den Gewinnern wird kein Palmenzweig geschenkt, aber auch ohne geht alles gut. Derzeit gibt es weltweit nur 6 Turniere, bei denen Sie sich für die DEF CON CTF qualifizieren können.





Geographie der Teilnehmer CTFZone

Über das Konzept


In der internationalen CTF-Bewegung haben sich Teams aus verschiedenen Regionen auf bestimmte Bereiche spezialisiert. In der Vergangenheit können Russen beispielsweise das Internet besser lösen, während asiatische und amerikanische Teams bei PWN stärker sind. Auf derselben DEF CON sind fast alle Tasks Binärdateien. Vielleicht ist das der Grund, warum amerikanische und asiatische Teams in letzter Zeit dort bessere Leistungen erbracht haben. Wir bei CTFZone versuchen zu zeigen, dass CTF nicht nur PWN ist, sondern auch viele andere interessante Kategorien: Web, Kryptographie, Reverse, OSINT, Forensik, PPC.


Web


In webbasierten Aufgaben versuchten Autoren - Experten für Penetrationstests während der Arbeitszeit - Schwachstellen aus realen Projekten zu übertragen. In der Web-Shop- Aufgabe haben wir beispielsweise die beliebte Bibliothek python-markdown2 verwendet, in der unser Experte einige Wochen vor dem Wettbewerb eine Zero-Day-Sicherheitslücke gefunden hat, um den XSS-Filter zu umgehen. Während der CTF hat jedoch jedes der vier Entscheidungsteams eine eigene Version dieser Sicherheitsanfälligkeit gefunden, die uns über die Qualität der Filterung in der Bibliothek nachdenken lässt.


Für den Web-Card- Auftrag haben wir die Zero-Day-Sicherheitsanfälligkeit in der Standard-Java-XML-Validierungsklasse verwendet. Dies wurde beim Testen einer echten Webanwendungsfirewall festgestellt. Daher haben wir die Teilnehmer aufgefordert, WAF zu umgehen, das wir speziell für diese Aufgabe entwickelt haben. Die detaillierte Version des Wrightups wird später veröffentlicht.


Nun, die EmeraldRush- Aufgabe hat gezeigt, wie GitLab und Github im letzten Jahr geworden sind - die mit Ruby verbundenen Schwachstellen, auf die beide geschrieben sind. Eine davon basiert auf CVE-2018-18649 (es gibt jedoch keinen Open-Access-Exploit dafür), die zweite wurde kürzlich entdeckt und auf der HackerOne-Plattform veröffentlicht (eine Beschreibung finden Sie im Artikel ). Natürlich wurden die Entwickler vor dem Wettbewerb über diese und alle anderen Sicherheitslücken im Internet in Übereinstimmung mit den Grundsätzen von Responsible Disclosure informiert.


Krypto



Das Cryptotask-Entwicklungsteam hat sich nicht nur auf die in CTF ständig auftretenden Fehler im Zusammenhang mit der RSA-Implementierung gestützt, sondern auch auf die sensationellen Angriffe der letzten Jahre. Beispielsweise musste sich die Aufgabe OCB2 mit einem Angriff auf das gleichnamige symmetrische Verschlüsselungssystem befassen, für dessen Entdeckung sie auf der Crypto-Konferenz den Best Paper Award verliehen haben.


Und in der NTRU- Aufgabe war es notwendig, den Angriff auf ein asymmetrisches Gittersystem zu untersuchen. Sie wurde im September beschrieben, aber den entsprechenden Artikel zu finden und zu lesen, reichte nicht aus. Der Autor des Problems selbst stieß auf Probleme, als sich herausstellte, dass die Veröffentlichung den günstigsten Fall für die Beschreibung darstellte, der mit den in der endgültigen Aufgabe ausgewählten Parametern nicht funktionierte. Ich musste den Algorithmus wiederholen! Es ist interessant, dass einer der Teilnehmer (Alexey Udovenko vom LC / BC-Team) das Problem ohne einen Artikel gelöst hat, nachdem er eine etwas andere Lösungsmethode gefunden hatte, die auf demselben Prinzip basierte.

Forensik


Nun, die schwierigste Kategorie in unserer CTF war die Forensik. Jeder ist es gewohnt zu glauben, dass solche Aufgaben mit drei Hilfsprogrammen gelöst werden: vor allem Volatilität und Strings. Aber wir hatten andere Aufgaben - zum Beispiel eine ungewöhnliche In-The-Shadows- Aufgabe, für deren Lösung es notwendig war, sich mit der hier beschriebenen Technik zu befassen. Einzelheiten werden später auch im Distriktkomitee bekannt gegeben.


Über das Training


Die direkte Vorbereitung auf die CTFZone-Qualifikationen bestand aus mehreren Hauptphasen (Zusammenstellen eines Projektteams, Entwickeln von Aufgaben, Testen und Bereitstellen der Infrastruktur, Starten einer Rakete in den Weltraum) und vielen Hilfsphasen (Suchen nach Inspiration, Herstellen von Kommunikation, Qualen und Zweifeln, Überwinden der Existenzkrise).


Drei Monate vor Beginn der Hauptversammlung wurden die Termine - 7. und 8. Dezember - festgelegt. Das Team kam zu dem Schluss, dass nichts Zeit haben würde, aber dennoch zur Sache ging. Und sieben Tage später wurden diese unrealistischen Fristen eine Woche früher verschoben, da die ausgewählten Daten und alle folgenden bereits andere CTFs in Anspruch genommen haben. Es blieb nur noch zu lächeln, die Zähne zusammenzubeißen und mit dreifacher Energie zu arbeiten. Es gab kein Zurück, Entwicklung des Startanuls.





Infolgedessen war die Aufgabe mehr als üblich - 30 Stück. Jede Aufgabe ist einzigartig, lebt aber nicht sehr lange: 3 Monate Vorbereitung und nur 36 Flugstunden. Aber was! Die Tasten, die Sie sorgfältig auf der Vorderseite bemalt haben, werden von den weltweit führenden CTF-Mitarbeitern berührt - sie tauchen in Ihre Idee ein und geben Ihnen ein persönliches Feedback. Dies ist eine großartige Erfahrung und eine Gelegenheit, mit einer großen Community über Ihre Arbeit zu sprechen. Schließlich hängt oft mit den Schwachstellen, die in den Aufgaben liegen, eine Art Geschichte zusammen. Einige Aufgaben waren so schwierig, dass niemand sie herausfinden konnte. Am Ende der Qualifizierung ungelöster Probleme blieben zwei: Popular Forensic und Web-Card .


Über die Infrastruktur


Die Organisation der Turnierinfrastruktur könnte auf unterschiedliche Weise angegangen werden. Schneiden Sie beispielsweise auf herkömmliche Weise virtuelle Maschinen für Aufgabenentwickler und gewähren Sie ihnen dort Zugriff. In dieser Situation wird jeder Entwickler zu einem zufriedenen Administrator des lokalen Hosts, alles funktioniert nach seinen Wünschen und es bleibt nur die Bereitstellung der Netzwerkkonnektivität. Es ist jedoch klar, dass in diesem Fall von Replikation und Fehlertoleranz keine Rede ist. Der für unsere Infrastruktur Verantwortliche hat gerade eine der CTFs bei ZeroNights im Jahr 2016 nicht bestanden, und dieses Mal, unterrichtet aus bitterer Erfahrung, hat er beschlossen, die Dinge anders zu machen.


Wir haben uns lange entschieden, wo wir leben werden, und am Ende haben wir uns entschlossen, uns in der Cloud umzudrehen. Die Gründe sind klar: Wettbewerbe für Hacker, also ist es besser, Google zu brechen, und es gab bereits vorgefertigte Entwicklungen im Zashnik. Das Hauptwerkzeug für die Erstellung der Plattform war Terraform, mit dem Sie die Infrastruktur in Form von Code in einem deklarativen Format beschreiben können und alle anderen Gesten erledigen können. Das heißt, Sie müssen beispielsweise nicht darüber nachdenken, wie Sie die Google-API aufrufen und ihm mitteilen, wie viele und welche virtuellen Maschinen Sie bereitstellen möchten.
Außerdem musste entschieden werden, wie Aufgaben gestartet werden sollen. Wir hatten großes Glück, dass alle Entwickler bereits Aufgaben in Docker schreiben konnten. Dies ist ein solcher Hype-Containerizer, mit dem Sie einen Service mit allen Abhängigkeiten in eine isolierte Umgebung packen können, die sich zwischen Neustarts nicht ändert. Es gibt nicht viele Möglichkeiten, mit Docker zu arbeiten: Dies sind hauptsächlich Orchestratoren wie Compose und k8s. Um alles schön zu machen, also Wishlist mit Balancing, Repliken, Fehlertoleranz und anderen Unternehmen zu implementieren, lag die Wahl des Orchesters auf der Hand - Kubernetes.




Hier gab es jedoch einige Missverständnisse zwischen dem Ersteller der Infrastruktur und den Entwicklern. Pentester sind eine besondere Kaste in der IT-Welt: Sie ähneln teilweise Administratoren, Netzwerkern und kennen sich mit Datenbanken aus und sind in der Programmierung orientiert. Im Allgemeinen nicht Menschen, sondern Schweizer Messer. Sie sind extrem außergewöhnlich und ehrgeizig, aber leider habe ich vergessen, dass Pentester immer noch keine professionellen Admins sind, als beschlossen wurde, Helm für jede Aufgabe zu schreiben. Dies führte zu einem kleinen Krieg, in dem erklärt werden musste, warum bestimmte Entscheidungen erzwungen und Beschränkungen auferlegt werden.


Die Jungs hatten keine Erfahrung damit, Helm zu schreiben, aber sie alle wussten, wie man Compose schreibt. Sie selbst verstehen, dass zwischen dem lokalen Compose und dem Helm-Chart innerhalb weniger Wochen oder sogar Monate nach dem Studium des Materials eine Lücke besteht. Dies war die erste Glocke, die darauf hinwies, dass es einige Probleme gab (wo wäre CTF ohne sie, besonders wenn das Team und der Administrator fast jedes Mal neu sind).


Aus Zeitgründen war es nicht möglich, alles zu automatisieren - einige Dinge mussten an die Schultern der Entwickler selbst weitergegeben werden. Die Pentester mussten in Versammlungen sitzen, wo ihnen gesagt wurde, wie man Helme schreibt, während sie selbst anscheinend diese Entwicklung auf das Licht verfluchten. Trotz allem ist es uns gelungen - alle Aufgaben wurden in Helmkarten beschrieben und verpackt, die Überwachung wurde in Form von Grafana und Prometheus konfiguriert. Der Moment der Wahrheit ist gekommen.


Und hier stellte sich zur Erleichterung aller heraus, dass die resultierende Infrastruktur sehr einfach zu verwalten ist. Als alles bei Google beschrieben und bereitgestellt wurde, führten wir ein Briefing für die Diensthabenden durch. Es waren zehn, und alle haben großartige Arbeit geleistet: Sie hoben die Gefallenen auf, sammelten und rollten die korrigierte Version in einen Würfel.


Über die Finalisten


Infolgedessen wurden 10 Star-Teams für das Finale ausgewählt. Warum stellar? Fakt ist, dass 6 von 10 Teams bei CTFtime in den Top Ten der Weltmeisterschaften sind und die restlichen vier etwas hinter den Top Ten liegen, aber auch in den Top Ten.


Das Hauptmerkmal des Turniers war, dass der heftigste Kampf nicht um einen Platz in den Top Drei, sondern um die zehnte Reihe ging. Für die Teilnehmer war es wichtig, ins Finale zu kommen, und dort wird die Situation zurückgesetzt, und die Sitzverteilung, die wir aufgrund der Ergebnisse der Qualifikationswettbewerbe vorgenommen haben, kann sich erheblich ändern.




CTFZone 2019 Qualifikation Finalisten Endstand

Was weiter?


Weiter wird es möglich sein, ein wenig auszuatmen, dann wieder tief durchzuatmen und mit den Vorbereitungen für das Finale zu beginnen. Es wird im Attack / Defense-Format abgehalten, und das ist eine ganz andere Geschichte. Jemand könnte fragen: Warum ist das alles? Die Frage ist gut, aber es gibt wahrscheinlich keine logische Antwort darauf. Es ist nur so, dass es nicht umsonst ist, wenn Sie mindestens 5 Sekunden lang wirklich einen Überblick über das Geschehen haben, sich lebendig fühlen und sehen können, zu welchem ​​Team Sie gehören.

Source: https://habr.com/ru/post/de481280/


All Articles