it-swarm.com.de

Was genau ist CTF und wie kann ich mich als Programmierer auf eine CTF mit anfängerfreundlichen Menschen vorbereiten?

Ich habe mich an einen alten Freund gewandt, der in meiner Schulzeit ein großartiger Programmierer war, und er hat mich eingeladen, mit seiner Universitätsgruppe an einer der CTF-Veranstaltungen teilzunehmen.

Diese Gruppe scheint sehr anfängerfreundlich und offen für alle zu sein, aber ich befürchte immer noch, dass ich nicht annähernd genug Kenntnisse im Sicherheitsbereich habe, um teilnehmen zu können. Deshalb möchte ich mich ein bisschen darauf vorbereiten, genau herausfinden, was dies ist und was ich tun kann, um mich auf ein grundlegendes Niveau zu verbessern. Die Internetrecherche gab mir nur eine sehr vage Vorstellung davon, was eine CTF ist.

Was ich bereits habe, sind Grund- und Zwischenkenntnisse in einigen Programmiersprachen, einschließlich C #, PHP/Javascript/etc (Grundkenntnisse), C (sehr Grundkenntnisse), Java. Ich weiß nicht, ob dies von Nutzen ist, aber ich dachte, es kann nicht schaden.

Was genau ist eine CTF und wie kann ich mich als absoluter Anfänger selbst auf eine CTF-Veranstaltung vorbereiten?

80
MansNotHot

CTFs (Capture The Flag) sind wie Kurse innerhalb von Spielen. Einige Websites bieten einfache Möglichkeiten zum Erlernen der Seile mit einfachen Herausforderungen mit zunehmendem Schwierigkeitsgrad. Zum Beispiel http://overthewire.org/wargames/ zeigt Ihnen, wie Sie Tools (Hex Dump, vi, sogar das Terminal selbst) bei jeder Herausforderung verwenden.

Das Hauptziel besteht normalerweise darin, Code zu finden, der entweder in eine Datei (stegano) eingebettet ist, in einer Datei auf einem Server versteckt ist, auf der Sie eine bekannte Sicherheitsanfälligkeit missbrauchen müssen (reguläre CTFs), oder sogar den Quellcode eines Programms ausnutzen, um einen zu finden geheimes Passwort (Umkehrung).

Nehmen Sie sich wie bei jeder Programmierherausforderung Zeit, lernen Sie die Tools und haben Sie keine Angst, nach Hilfe oder Zuschreibungen zu suchen (offensichtlich nicht in der CTF, die Sie erreichen möchten), aber sie bieten Einblicke in die zu verwendenden Tools. abhängig von der Art der Herausforderung.

Einige Links:

https://www.hackthebox.eu/ : Verschiedene Kategorien von CTF, wie oben erläutert, von leicht bis schwer, viele Zuschreibungen

http://overthewire.org/wargames/ : Meist normale CTFs mit einer auf einem Server versteckten Datei und bestimmten Regeln zum Suchen/Entschlüsseln. Gut für Anfänger, bringt Ihnen die grundlegenden Werkzeuge bei

84
Elcan

"CTF" zu sagen ist ein bisschen wie "Videospiel" zu sagen. Wie bereitest du dich auf ein Videospiel vor? Nun, es kommt darauf an, was das Spiel ist! Tetris unterscheidet sich sehr von Skyrim, das sich von Mario Kart unterscheidet.

Es gibt sehr wenig, was Sie tun können, um sich vorzubereiten, ohne viel mehr Informationen zu kennen. In einer CTF musste ich Netzwerk, TCP/IP, Web-App-Design, Verschlüsselung und Speicherforensik verstehen. Es gibt keine Möglichkeit, sich auf all das vorzubereiten, ohne zu wissen, dass es benötigt wird.

Allen CTFs ist gemeinsam, dass es normalerweise viele logische Rätsel gibt.

Der beste Weg, sich auf eine CTF vorzubereiten, ist die Durchführung von CTFs. Der größte Spaß einer CTF besteht darin, nicht zu wissen, was Sie wissen müssen, und schnell zu lernen, was Sie brauchen, um es herauszufinden.

22
schroeder

Was ist eine CTF? Es handelt sich um eine Art Computersicherheitswettbewerb namens CTF, da Sie eine "Flagge", eine eindeutige Zeichenfolge, erfassen und für Punkte an die Bewertungsinfrastruktur senden. CTFs sind fast immer zeitlich begrenzt, oftmals zwischen 24 und 48 Stunden (normalerweise ununterbrochen über ein Wochenende, was Wettbewerbern auf der ganzen Welt unabhängig von der Zeitzone einen fairen Schuss bietet). Es gibt zwei Hauptarten von CTFs - Gefährdung und Angriff/Verteidigung. CTFs im Gefährdungsstil sind einfacher zu organisieren und auch einfacher zu spielen/für neue Spieler weniger zu bestrafen. In einer CTF im Gefährdungsstil schreiben die Organisatoren eine Reihe von Herausforderungen (anfällige Binär- oder Webdienste, die in der Cloud ausgeführt werden, Crackme-Umkehrprobleme, in Festplattenabbildern oder Paketerfassungen versteckte Dinge oder verschlüsselte Nachrichten) und weisen jedem Punktwerte zu fordern Sie sie heraus und stellen Sie sie Wettbewerbern zur Verfügung (häufig auf einem Board wie dem von Gefährdung, wobei die Herausforderungen nach Schwierigkeitsgrad und Kategorie geordnet sind (binäre Ausnutzung, Reverse Engineering, Web-Ausnutzung, Kryptographie und Forensik sind die typischen Kategorien)). Wenn der Wettbewerb beginnt, erhalten die Teilnehmer Zugang zum Raster der Herausforderungen, Sie lösen sie und senden Flaggen für Punkte. Am Ende gewinnt derjenige, der die meisten Punkte hat (Unentschieden, die normalerweise zeitlich unterbrochen werden, um die Gesamtpunktzahl zu erreichen - schneller ist besser). .

In einer CTF für Angriff/Verteidigung erstellen die Organisatoren immer noch eine Reihe anfälliger Dienste, aber jedes Team muss eine Kopie dieser Dienste ausführen, die sie verteidigen müssen. Sie hacken andere Teams, um ihre Flaggen zu stehlen, und versuchen, Ihre eigenen Dienste zu patchen, um zu verhindern, dass andere Teams Ihnen dasselbe antun. A/D-CTFs erfordern viel zusätzliche Logistik- und Infrastrukturarbeit für die Organisatoren (VPNs, Zielhosts pro Team usw.). Sie können auch für neue Spieler sehr demoralisierend sein, wenn Sie gestampft werden (oder jemand Ihre Infrastruktur beharrlich hat) und Sie nichts dagegen tun können. Sie können aber auch viel Spaß machen und sie arbeiten mit einigen ungewöhnlichen Fähigkeiten wie binärem Patchen und Exploit-Reflexion.

In Bezug auf die Vorbereitung: Studium, Übung und Werkzeug. Florent Uguets Vorschläge für Kriegsspiele sind gut zum Üben. Einige andere Ressourcen, die Sie möglicherweise nützlich finden, sind:

  • Trail of Bits ' CTF Field Guide enthält einige Vorträge, Werkzeuglisten und exemplarische Vorgehensweisen für alte CTF-Probleme.
  • picoCTF ist eine CTF, die sich an Schüler mit sehr wenig Hintergrund richtet. Der Wettbewerb ist vorbei, aber die Organisatoren haben die Probleme den Menschen überlassen, von denen sie lernen können. Es ist ein guter Anfang, und wenn Sie Programmiererfahrung haben, sind Sie der Kurve weit voraus und sollten in der Lage sein, die frühen Dinge ziemlich schnell durchzukauen. Ich denke, es kommt auch eine neue PicoCTF im Oktober.
  • pwnable.kr hat eine Vielzahl guter Herausforderungen bei der binären Ausnutzung zu üben.
  • Oft finden Sie Online-Aufzeichnungen von Herausforderungen aus früheren CTFs. Dies ist ein guter Weg, um sich mit bestimmten ctfy-Redewendungen oder den Arten von Problemen vertraut zu machen, die in einem bestimmten ctf auftreten können. ctftime.org aggregiert Zuschreibungen und hostet einen Kalender mit kommenden ctfs.

In Bezug auf Werkzeuge würde ich raten, eine Skriptsprache zu beherrschen. CTF steht im Allgemeinen unter Zeitdruck und Geschwindigkeit ist wichtiger als perfekte Korrektheit. Python scheint die gebräuchlichste Sprache der Wahl zu sein, und es gibt viele gute Werkzeuge für Herausforderungen vom Typ ctf in python ( pwntools , zum Beispiel). Ein wenig Vertrautheit zu erlangen, könnte auch gut sein.

17
lorimer

CTF ist im Grunde das, worunter es in Spielen bekannt ist. Es ist Capture The Flag, aber anstatt einer Flagge zu stehlen, müssen Sie mehrere Ziele erreichen, die als Flaggen fungieren.

Zum Beispiel könnte eine Flagge im Wettbewerb darin bestehen, eine Schlüsselvalidierung rückzuentwickeln, um einen Schlüsselgenerator zu entwickeln.

Da Sie einige Programmiersprachen und deren Grundprinzipien kennen, wäre es hilfreich, wenn Sie Ihr logisches Verständnis und Ihre Ermittlungsfähigkeiten vertiefen würden. Schauen Sie sich alte CTFs an und machen Sie einfach welche. Wenn Sie auf Probleme stoßen, recherchieren Sie die Themen und verstehen Sie die Mechanik.

Wie Schröder schon sagte. Es ist sehr schwer vorzubereiten, da Sie höchstwahrscheinlich nicht wissen, was die Aufgaben sein werden.

Als persönlicher Tipp: Entspannen Sie sich. Sie sind mit ihnen da, um zu lernen und Spaß beim Erkunden von Systemfehlern zu haben. Versuche eine tolle Zeit zu haben.

12
Nico

Ich stelle fest, dass die meisten Antworten Ihre Frage "Wie bereite ich mich auf eine CTF vor?" Zu vermeiden scheinen, daher werde ich mich einschalten.

Zunächst möchten Sie alle CTFs des Veranstalters erstellen, insbesondere diejenigen mit demselben Titel. In der kürzlich am vergangenen Wochenende abgehaltenen TokyoWesterns CTF 2019 (CodeBlue Qualifiers) gab es beispielsweise eine Frage, "Slack Emoji Converter Kai", die auf eine andere CTF-Frage in ihrer vorherigen CTF im letzten Jahr (2018), "Slack Emoji Converter", verwies. Es erforderte eine ähnliche Ausnutzung mit Ghostscript, und wenn Sie nicht über die Erfahrung verfügten, hätte es unnötig lange gedauert, nur um den Exploit zu lesen/zu lernen.

Zweitens möchten Sie OSINT für die Organisatoren ausführen. Sie möchten wissen, wer die Mitglieder sind und was sie kürzlich veröffentlicht/entdeckt haben.

Warum solltest du das tun?
Genau wie im vorherigen Beispiel lassen sich CTF-Fragesteller von Exploits in ihrer Umgebung inspirieren. Wenn sie nicht auf einen alten Exploit verweisen, haben sie wahrscheinlich einen neuen. Die PHPNote-Frage in dieser CTF erforderte einen Exploit zwei der Mitglieder, die bereits im Juni gemeinsam veröffentlicht wurden . Teams, die sich dessen bewusst waren, brauchten nur wenige Stunden, um einen funktionierenden Exploit durchzuführen, während diejenigen, die nicht vorbereitet waren, mehr als 12 Stunden brauchten, um zu lösen. Lesen Sie mehr über ihre kürzlich erworbenen CVEs und jüngsten Veröffentlichungen.

Zuletzt möchten Sie sich über alle Exploits mit dem höchsten Schweregrad in den letzten 1-2 Jahren (für CTFs auf hoher Ebene) oder nur über allgemeine/beliebte Exploits (für CTFs für Anfänger) informieren.

Beachten Sie, dass dies nur für normale CTFs gilt. Ich kenne immer noch keinen zuverlässigen Weg, um mich auf das DEFCON-Finale vorzubereiten.

1
Yuu