CTF Hacking: Cos’è il Capture the Flag per un principiante?
Che cos’è il capture the flag hacking?
Questo blog è progettato per una persona che è nuova di zecca nell’hacking Capture The Flag (CTF) e spiega le basi per darvi il coraggio di entrare in un CTF e vedere da soli com’è partecipare. I CTF sono eventi che di solito sono ospitati alle conferenze sulla sicurezza delle informazioni, compresi i vari eventi BSides. Questi eventi consistono in una serie di sfide che variano nel loro grado di difficoltà, e che richiedono ai partecipanti di esercitare diverse competenze per risolverle. Una volta che una sfida individuale viene risolta, viene data una “bandiera” al giocatore e questi la invia al server CTF per guadagnare punti. I giocatori possono essere lupi solitari che tentano le varie sfide da soli, o possono lavorare con altri per cercare di segnare il maggior numero di punti come una squadra.
Gli eventi CTF sono di solito cronometrati, e i punti vengono totalizzati una volta che il tempo è scaduto. Il giocatore/team vincente sarà quello che ha risolto il maggior numero di sfide e quindi si è assicurato il punteggio più alto.
Qui c’è uno screenshot di un tabellone da un evento CTF di BSides San Francisco:
Si prega di notare la frase che ho segnato con una casella rossa. Come vedrete rapidamente, i compiti CTF sono spesso basati su incidenti/vulnerabilità del mondo reale che vi danno la possibilità di sperimentare come viene effettivamente fatto e vi preparano meglio a difendere i vostri sistemi da questi tipi di attacchi. Quindi non solo gli eventi CTF sono divertenti, ma possono anche essere educativi e professionalmente gratificanti.
Preparazione CTF
Se non hai mai sperimentato un evento CTF prima, non sentirti frustrato o arrenderti, perché la chiave per qualsiasi tipo di hacking è la pazienza. Anche se a volte è una cosa difficile da avere, l’unico modo per imparare è perseverare e fare pratica da soli (vedi questo post più in basso su come fare pratica) e forse la prossima volta segnerai il primo posto! Una cosa che puoi provare a fare durante il tuo primo evento CTF, se possibile, è trovare una squadra esperta che sia disposta a farti unire a loro. Assicuratevi di essere chiari sul fatto che questo è il vostro primo evento CTF e che vi piacerebbe molto che vi mostrassero le corde.
Nella mia esperienza, i membri della comunità InfoSec sono solitamente molto disposti a condividere le loro conoscenze con chiunque sia interessato a cercare di imparare e crescere in questo campo. Allo stesso tempo, però, un tema comune che si sente spesso nella comunità è che c’è una carenza di talenti. A volte questa può essere una lotta molto reale, e molti professionisti che si sono fatti strada nel campo hanno speso molto tempo per farlo, sacrificando molto per imparare, praticare e affinare il loro mestiere. Per questo motivo, prima di chiedere aiuto con domande di base, dovreste prima ricercare l’argomento e fare uno sforzo per capire le cose da soli.
Nella comunità InfoSec, la fiducia non è qualcosa a cui si può dare valore. Se il tuo lavoro consiste nell’entrare nella rete di un cliente, l’ultima cosa che qualcuno vuole è che le informazioni sensibili siano condivise con qualcuno al di fuori del team. La fiducia è una componente critica di questa relazione e non posso esprimere abbastanza quanto sia importante rimanere etici anche durante le competizioni. Infine, ultimo ma certamente non meno importante: quando andate ad un evento CTF, non dimenticate di portare un computer portatile o un altro computer che abbia un sistema operativo con vari strumenti già installati (di più su questo sotto), senza il quale sarete partiti male.
In sintesi, i CTF sono una grande opportunità per imparare, quindi se non avete mai sperimentato un evento CTF o anche un evento BSides, vi incoraggio fortemente a saltare dentro e partecipare ad uno appena potete!
Servizio di Simulazione Avanzata
Consente ai clienti di testare le loro operazioni di sicurezza e capacità di rilevamento contro tecniche avanzate di penetrazione
Per saperne di più
Tipi di eventi
Ci sono solitamente due diversi tipi di eventi CTF. I due tipi più comuni sono:
- Squadra Rossa/Squadra Blu
- In questo stile di evento la squadra rossa cerca di catturare le bandiere mentre la squadra blu cerca di difendere le varie bandiere dalla cattura.
- Red Team
- Questo stile di evento di solito coinvolge una o più persone, che lavorano da sole o in squadra, che tentano di catturare varie bandiere mentre non c’è una squadra che le difende.
Ogni tipo di evento ha vari pro e contro. In uno scenario Red Team vs. Blue Team, gli attaccanti imparano tecniche vitali mentre i difensori hanno la possibilità di imparare come difendere i loro sistemi da un attacco attivo. In uno scenario Red Team, invece, tutti si coalizzano contro il povero host CTF e fanno del loro meglio per fargli divulgare ogni bandiera su cui gli attaccanti possono mettere i loro artigli digitali.
Tipi di sfide
I CTF di solito presentano diverse sfide che utilizzano o esercitano specifiche aree di interesse. Alcune popolari aree di interesse sono:
- Programmazione
- Questi tipi di compiti di solito richiedono una sorta di programmazione da risolvere. Nella maggior parte dei casi, si tratta di un mix di programmazione e di reverse engineering.
- “Crypto”
- Queste sfide presentano comuni scenari del “mondo reale” che spesso includono il sempre popolare tipo di malware ransomware.
- Exploitation
- Questi compiti vi costringeranno a determinare come sfruttare (usando buffer overflow, formato stringa, SQL injection, ecc….) un dato processo in esecuzione sulla macchina bersaglio CTF.
- Reverse Engineering
- Per compiti come questo, il reverse engineering sarà solitamente richiesto, per esempio, quando il server vi invia un eseguibile.
Come partecipare ad un evento CTF?
La mia prima esperienza con un CTF fu ad un evento locale BSides. Sono andato all’evento BSides con il seguente pensiero: “Probabilmente ci saranno molti hacker esperti qui; penso che prenderò un portatile Tails che mi permetterà di prendere appunti e navigare sul web quando necessario”. Mentre la mentalità di voler proteggere i miei dispositivi non era esattamente una cattiva idea, fare affidamento su un Tails ha reso la vita piuttosto difficile quando si è trattato di partecipare all’evento CTF. Ad essere onesti, non mi sono reso conto che ci sarebbe stato un evento CTF lì e quindi non ho nemmeno pensato a questo aspetto dell’evento. Quello che vi consiglierei di usare al vostro primo CTF, in ordine dal più facile al più difficile, sarebbe uno dei seguenti:
- Kali Linux
- Questa distribuzione è costruita appositamente per i test di penetrazione. E’ piena di ogni strumento immaginabile e probabilmente una tonnellata in più che non avrete mai bisogno di usare.
- BlackArch
- Questa distribuzione è basata su Arch Linux ma è pre-costruita, proprio come Kali, con tonnellate di strumenti di sicurezza.
- Arch Linux
- Questa è una installazione di base di Linux che viene fornita con strumenti standard di Linux. Se scegliete questa opzione, dovrete fare il lavoro di installazione di tutti gli strumenti che vi vengono in mente e di cui potreste aver bisogno o come minimo assicurarvi di avere accesso a una connessione internet che vi permetta di installare rapidamente gli strumenti necessari all’evento.
Esempi
Come ho detto prima, c’è stato un evento BSides a San Francisco che ha ospitato una sessione CTF alcuni mesi fa. Possiamo guardare più da vicino questo evento per darvi un’idea migliore di cosa sia la cattura della bandiera.
Prima di tutto, lo screenshot sopra vi mostra il tabellone finale, che metterò anche qui:
Si noti che il vincitore ha vinto con 6.773.000 punti mentre il giocatore più vicino aveva 5.178.000 punti. Questo è un bel vantaggio che mi dice che dcua è probabilmente un giocatore hacker/CTF abbastanza esperto. Ora scaviamo nei diversi tipi di compiti di cui abbiamo parlato in precedenza. Ecco una lista dei diversi compiti che erano disponibili in questo evento CTF:
Come potete vedere, ci sono diversi tipi di compiti e alcuni di essi si sovrappongono in termini di abilità richieste per risolverli. Diamo un’occhiata più dettagliata ad alcuni dei compiti della lista. Ne sceglieremo solo una:
Taylor’s Magical Flag Oracle è un compito basato sul reverse engineering e sulla codifica che vale 150 punti. Se clicchi sul link ‘Task’ ti vengono presentate informazioni dettagliate su cosa comporta:
Come puoi vedere, ci sono molti dettagli che vengono forniti, inclusi suggerimenti su come risolvere questa sfida/task CTF. Poiché questo evento si è già concluso, c’è anche una sezione “Writeups” in cui diversi giocatori hanno presentato i passi che hanno usato per risolvere la sfida. Questa sezione può essere una lettura molto interessante e può anche aiutarvi se state provando la sfida da soli e avete bisogno di una spinta sulla strada giusta.
Diamo una rapida occhiata ad altre due sfide e poi passerò alle risorse che potete usare per saperne di più sui CTF, come partecipare o anche come ospitarne uno.
Per il nostro prossimo esempio, sembra opportuno scegliere il compito ‘xref’ date tutte le notizie sulle recenti infezioni da ransomware WannaCry:
Qui ci sono i dettagli per ‘xref’:
Nota che questa descrizione non fornisce molto da fare. Questo è ciò che rende questo compito particolarmente interessante e in qualche modo una sfida; se non lo avete mai fatto prima, sarà difficile sapere anche solo da dove iniziare. Per fortuna, però, questo evento è finito, quindi useremo uno degli scritti per farci un’idea su come la sfida è stata risolta.
L’URL qui: https://github.com/1337pwnie/ctf-writeups/tree/master/2017/UIUCTF fornisce i dettagli. In questo caso, c’è un file README contenuto nel file .ZIP fornito che fornisce un suggerimento. Per risolvere la sfida, è necessario scrivere del codice (anche se il compito sembra mancare del tag ‘programmazione’). Piuttosto che ripercorrere qui l’intero scritto, sentitevi liberi di sfogliare l’URL e la soluzione passo dopo passo.
Prossimo, diamo un’occhiata al nostro ultimo compito:
Goodluck è una vulnerabilità “p0wn” in formato stringa che essenzialmente significa che segnare contro di essa sputerà fuori la bandiera. Nel mondo reale, idealmente, portare a termine un compito come questo vi darebbe accesso illimitato alla macchina bersaglio. Ecco i dettagli su goodluck:
Per risolvere questo, dobbiamo capire come utilizzare una vulnerabilità di formato stringa per darci una bandiera. I dettagli di questo sono tecnici e approfonditi, quindi si prega di consultare la sezione risorse qui sotto per i link alle varie sfide menzionate in questo post e si possono poi utilizzare i vari write-up sulle diverse soluzioni che sono state utilizzate per risolvere le sfide/compiti.
Come posso saperne di più sulla CTF?
Ci sono molte risorse sul web che si possono utilizzare per determinare come giocare una CTF o come ospitare una CTF. Interrogate Google e YouTube per i dettagli sui vari eventi imminenti in cui potete essere coinvolti. Molti di questi permettono ai giocatori remoti di entrare nel gioco, quindi non dovete necessariamente assistere fisicamente a un evento per partecipare. Il CTF specifico che ho usato per discutere come funziona il CTF e le mie esperienze con esso è stato preso da qui: https://ctftime.org/event/453.
Ecco un’altra risorsa interessante e utile che potreste trovare utile: http://www.amanhardikar.com/mindmaps/Practice.html. Questo URL vi dà accesso a una vasta gamma di strumenti che riguardano tutti applicazioni vulnerabili, applicazioni web, sistemi operativi, ecc. Queste risorse sono un ottimo punto di partenza.
Se Google, YouTube e le altre risorse presentate qui non rispondono alle vostre domande, non esitate a contattarmi direttamente e cercherò di aiutare il più possibile. Potete contattarmi su Twitter @CerebralMisjif. Sentitevi liberi di seguirmi o pingarmi lì e farò del mio meglio per rispondere a qualsiasi domanda possiate avere.
Conclusione
Questo blog è stato progettato per una persona nuova di zecca al CTF, e dovrebbe darvi il coraggio di entrare in un CTF e vedere da soli com’è. Gli eventi CTF sono ottimi posti per incontrare colleghi appassionati/professionisti della sicurezza delle informazioni, e forniscono anche buone opportunità per fare rete, far crescere le proprie competenze in un ambiente sicuro, e divertirsi mentre lo si fa. In alcuni casi, vengono assegnati dei premi al vincitore di un evento CTF e questi possono essere molto belli da evidenziare se si sta cercando una carriera nel campo dell’InfoSec.
Spero che abbiate trovato questo articolo utile ed educativo. Spero anche che abbiate acquisito una migliore comprensione di cosa sia un CTF, di come possa aiutare a migliorare le vostre conoscenze, le vostre competenze e la vostra capacità di difendere i sistemi attuali, e soprattutto di quanto possa essere divertente un CTF! Come ho detto, alcuni siti stanno iniziando a permettere ai giocatori remoti di partecipare agli eventi CTF, quindi tenete gli occhi aperti per questi se siete interessati. Spero di vedervi a uno di questi eventi un giorno; contattatemi se parteciperete a qualche evento, così potremo cercare di incontrarci.