Che cosa è esattamente CTF e come posso prepararmi come programmatore per un CTF con persone amichevoli per i principianti?

76

Ho contattato un mio vecchio amico che era un programmatore eccezionale ai tempi della scuola e mi ha invitato a partecipare a uno degli eventi del CTF con il suo gruppo universitario.

Questo gruppo sembra molto amichevole per i principianti e aperto a tutti, ma ho ancora paura di non avere abbastanza conoscenza nel campo della sicurezza per poter partecipare. Quindi mi piacerebbe prepararmi un po ', scoprire esattamente che cosa è e cosa posso fare per migliorare a livello base. La ricerca su Internet mi ha appena dato un'idea molto vaga di cosa sia un CTF.

Quello che ho già sono conoscenze di base e intermedie in alcuni linguaggi di programmazione tra cui C #, PHP / Javascript / etc (base), C (molto di base), Java. Non so se questo è di qualche utilità, ma ho pensato che non potesse far male.

Che cos'è esattamente un CTF e come posso, come principiante assoluto, prepararmi per un evento CTF da solo?

    
posta MansNotHot 04.09.2018 - 09:10
fonte

4 risposte

82

I CTF (Cattura la bandiera) sono come i corsi all'interno dei giochi. Alcuni siti Web forniscono a quelli facili l'apprendimento delle corde, con semplici sfide di difficoltà crescente. Ad esempio link ti insegnerà come utilizzare gli strumenti (esadecimale, vi, anche il terminale stesso) per ogni sfida.

L'obiettivo principale è di solito trovare del codice, incorporato in un file (stegano), nascosto in un file all'interno di un server in cui è necessario abusare di una vulnerabilità nota (CTF regolare) o persino sfruttare il codice sorgente di un programma per trovare una password segreta (inversione).

Proprio come qualsiasi sfida di programmazione, prenditi il tuo tempo, impara gli strumenti e non aver paura di cercare aiuto o riscrittura (ovviamente non sul CTF che stai cercando di ottenere), ma possono fornire informazioni sugli strumenti da usare, a seconda del tipo di sfida.

Alcuni link:

link : varie categorie di CTF come spiegato sopra, che vanno da facili a difficili, molte riscrizioni

link : CTF prevalentemente regolari con un file nascosto in un server e regole specifiche per trovarlo / decodificarlo. Buono per i principianti, ti insegnerà gli strumenti di base

    
risposta data 04.09.2018 - 09:37
fonte
22

Dire "CTF" è un po 'come dire "videogioco". Come ti prepari per un videogioco? Bene, dipende da cosa è il gioco! Tetris è molto diverso da Skyrim, che è diverso da Mario Kart.

C'è ben poco che puoi fare per preparare senza conoscere MOLTE più informazioni. In un CTF avevo bisogno di capire il networking, il TCP / IP, la progettazione di app Web, la crittografia e la memoria forense. Non c'è modo di prepararsi a tutto questo senza sapere che è necessario.

L'unica cosa comune a tutti i CTF è che di solito ci sono molti enigmi logici.

Il modo migliore per prepararsi a un CTF è fare CTF. La maggior parte del divertimento di un CTF non è sapere cosa devi sapere e imparare rapidamente ciò di cui hai bisogno per capirlo.

    
risposta data 04.09.2018 - 09:29
fonte
16

Che cos'è un CTF? È un tipo di competizione per la sicurezza del computer, chiamato CTF perché si cattura una "bandiera", una stringa univoca e la si invia all'infrastruttura di punteggio per i punti. I CTF sono quasi sempre limitati nel tempo, spesso per 24-48 ore (tipicamente continuativi nel corso di un fine settimana, il che dà ai concorrenti di tutto il mondo una buona dose indipendentemente dal fuso orario). Esistono due tipi principali di CTF: pericolo e attacco / difesa. I CTF in stile Jeopardy sono più facili da organizzare e anche più facili da giocare / meno punitivi per i nuovi giocatori. In un CTF in stile jeopardy, gli organizzatori scrivono una serie di sfide (servizi binari o web vulnerabili in esecuzione sul cloud, sfide di inversione di tipo crackme, cose nascoste nelle immagini disco o acquisizioni di pacchetti o messaggi crittografati), assegnano valori punto a ciascuno sfida, e metterli a disposizione dei concorrenti (spesso su un forum come quello a rischio, con sfide organizzate per difficoltà e categoria (sfruttamento binario, reverse engineering, sfruttamento del web, crittografia e analisi forense sono le categorie tipiche)). Quando la competizione inizia, i concorrenti ottengono l'accesso alla griglia delle sfide, li risolvi e invia le bandiere per i punti, e alla fine chi ottiene il maggior numero di punti vince (i legami solitamente interrotti per raggiungere il punto vincente totale - più veloce è meglio) .

In un attacco / difesa CTF, gli organizzatori costruiscono ancora una serie di servizi vulnerabili, ma ogni squadra deve eseguire una copia di questi servizi, che devono difendere. Hai hackerato altre squadre per rubare le loro bandiere e prova a correggere i tuoi stessi servizi per evitare che altri team facciano lo stesso con te. I CTF A / D comportano un sacco di operazioni logistiche e infrastrutturali aggiuntive per gli organizzatori (VPN, host target per team, & c). Possono anche essere molto demoralizzanti per i nuovi giocatori se vieni picchiato (o qualcuno ha persistenza sulla tua infrastruttura) e non c'è nulla che tu possa fare al riguardo. Possono anche essere molto divertenti, e funzionano con abilità inusuali come patch binari e exploit reflection.

In termini di preparazione: studio, pratica e strumenti. I suggerimenti di Florent Uguet per i wargames sono utili per la pratica. Alcune altre risorse che potresti trovare utili includono:

  • Trail of Bits " Guida ai campi CTF contiene alcune lezioni, elenchi di strumenti e procedure dettagliate dei vecchi problemi CTF.
  • picoCTF è un CTF destinato agli studenti delle scuole superiori con uno sfondo molto limitato. La competizione è finita, ma gli organizzatori hanno lasciato da parte i problemi per le persone. È un buon punto di partenza, e se hai esperienza di programmazione sei molto più avanti della curva e dovresti essere in grado di masticare velocemente le cose in anticipo. C'è anche un nuovo picoCTF in arrivo a ottobre.
  • pwnable.kr ha una serie di buone sfide di sfruttamento binario su cui esercitarsi.
  • Spesso è possibile trovare resoconti di sfide dei precedenti CTF online, il che è un buon modo per familiarizzare con gli idiomi particolarmente delicati o con i tipi di problemi che potrebbero presentarsi in un particolare ctf. ctftime.org aggrega le annotazioni, oltre ad ospitare un calendario di ctfs in arrivo.

In termini di strumenti, un consiglio che vorrei offrire è quello di diventare strong in un linguaggio di scripting. La CTF è generalmente sotto pressione temporale e la velocità è più importante della correttezza perfetta. Python sembra essere il linguaggio di scelta più comune, e ci sono molti strumenti validi per le sfide di tipo ctf in python ( pwntools , ad esempio). Raccogliere un po 'di familiarità potrebbe essere utile.

    
risposta data 04.09.2018 - 17:41
fonte
11

CTF è fondamentalmente ciò che è noto nei giochi. È Cattura la bandiera, ma invece di una bandiera per rubare devi raggiungere più obiettivi che fungono da bandiere.

Ad esempio, un flag nella competizione potrebbe essere quello di decodificare una convalida della chiave per sviluppare un generatore di chiavi.

Dato che conosci alcuni linguaggi di programmazione e i principi di base di questi, è questo sarebbe utile se intensificate la vostra comprensione logica e le capacità investigative. Guarda i vecchi CTF e fai un po '. Se incappi in problemi, cerca gli argomenti e capisci i meccanismi.

Come già detto Schroeder. È molto difficile da preparare, poiché molto probabilmente non sai quali saranno le attività.

Come suggerimento personale: Rilassare. Sei lì con loro per imparare e divertirti a esplorare i difetti del sistema. Prova a divertirti.

    
risposta data 04.09.2018 - 09:33
fonte

Leggi altre domande sui tag