Root-me: divertimento e non solo!

Recentemente ho cambiato un po’ la mia opinione sui CTF (Capture The Flag) e in generale sulle piattaforme come HTB, root-me, ecc. Confrontandomi su questo tema, con amici, colleghi ed ex colleghi ho notato che ognuno ha la propria linea di pensiero.

Io, in primis, fino a qualche tempo fa, ero abbastanza scettico sull’utilità di queste piattaforme se non per il puro e semplice divertimento. Infatti, come alcuni pensano, queste challenge talvolta presentano scenari e casistiche molto lontane dalla realtà, in cui la soluzione potrebbe trovarsi in posti che non vi sareste mai aspettati. Risolvere alcune challenge rischia, quindi, di diventare una perdita di tempo perché quello che si deve trovare è una flag che richiede diversi passaggi, ma applicabili a quella sola CTF.

Mi sono in parte ricreduto e in questo post volevo spendere due parole su root-me. Non è ancora passato un mese da quando mi sono iscritto (link al mio profilo) e devo ammettere che mi sto divertendo un sacco a cercare di rompere diverse challenge.

Indovinate un po’ da quale categoria sono partito? Vista la mia forte addiction per il reversing e per smanettare con gli assembly vari non potevo che iniziare ovviamente con Cracking!

Dopo circa 3 settimane sono riesco ad ottenere il badge “Reverser Rookie , avendo superato il 50% di challenge risolte nell’area Cracking.

Le mie validation per difficoltà finora sono distribuite come segue:

Anche se sono su root-me da poco, mi sono fatto una prima idea sulla qualità delle challenge e della piattaforma.

Per quanto riguarda esclusivamente la sezione Cracking, avendo completato fino quasi il 70% delle challenge, posso permettermi di dirvi che si tratta di crackme ben fatti. Voglio aggiungere, di seguito, qualche mia considerazione (prima) e qualche consiglio (dopo) se mai vi imbatterete in quest’area:

  • I punteggi assegnati alle singole challenge, a mio parere, non sono troppo veritieri circa il grado di difficoltà. È vero che, talvolta, un crackme che risulta facile per un reverser potrebbe non esserlo per un altro. Sicuramente, se partite con i crackme con punteggi <20 non c’è praticamente nulla di complesso sono ottimi per iniziare. Penso che un buon modo per capire se la difficoltà assegnata alla challenge sia bilanciata consiste nel vedere quante validation ha e confrontarla con altre challenge con lo stesso punteggio. Vi posso dire che sotto le 500 validation si tratta di sfide impegnative e che possono richiedere skill specifiche.
  • Ci sono crackme per diverse piattaforme hardware come Intel x86, Intel x64, MIPS, ARM. C’è, persino, una challenge che dovrete risolvere reversando l’assembly del Gameboy! Personalmente mi sono divertito molto a reversare un crackme per un’architettura RISC così arcaica. Quest’ultimo è uno di quegli scenari che, come dicevo al punto precedente, non troverete mai nella realtà, ma che, per il divertimento che danno nelle ore che ci dedicate, possono valere la pena di installare i tool e studiare qualche buon paper per risolverli.
  • Alcuni dei crackme sono ottimi per capire il funzionamento di sistemi di protezione che potete trovare in scenari reali. Vi dovrete scontrare, ad esempio, con Nanomites, trick anti-debug di vario genere, tecniche di offuscamento del codice, concetti di crittografia. Coloro che pensano di risolvere tutto con un colpo di Ghidra quasi sicuramente ne usciranno scottati, soprattutto nelle challenge medio-complesse in cui servono nervi saldi, pazienza e sedute di debugging di ore.

Consigli:

  • Non cercate la strada difficile, né quella troppo facile! Ok, questo è un consiglio che si applica molto al Reverse Engineering. Se vedete che ci state mettendo troppo a risolvere una challenge, facendo mille supposizioni, probabilmente state sbagliando approccio. Questa cosa è vera, soprattutto, per le challenge fino alla media difficoltà, per quelle hard e very hard la musica cambia!
  • Bisogna essere metodici, nel Reverse Engineering quasi più che nel Penetration Testing. Aprendo un eseguibile su IDA o su qualsiasi tool di analisi statica o dinamica non bisognerebbe partire velocemente ad analizzare dall’entry point. Un’attenta analisi delle librerie importate, delle tecnologie impiegate, dei segmenti dell’eseguibile può aiutare moltissimo a risparmiare tempo nella risoluzione e dare dettagli su come catturare in maniera astuta la preda senza doverla rincorrere a lungo.

Conclusioni

Chiudo questo brevissimo post con una mia personalissima opinione sui CTF. Secondo me, investire tempo sulle challenge è utile. Si impara molto, si fa molta pratica, si comprendono i propri limiti, ci si fa male, a volte si soffre, ma alla fine ci si prendono soddisfazioni quando si ottengono i risultati.

Nel mio caso è sempre un sacrificio perché lavorando devo impiegare il mio tempo libero fuori dall’orario di lavoro e nei fine settimana per dedicarmi a questa passione.

Sono scelte, e ovviamente, ognuno dedica il proprio tempo e le proprie risorse come preferisce. Non aspettatevi di essere degli dei in terra se, facendo le CTF, avete risolto tutto o se siete bravi nel risolvere le challenge di un’area, la realtà potrebbe darvi degli schiaffi pesanti. Un esempio sono i Penetration Test, in cui non avete le libertà che avete nelle CTF, dovrete fare un report dettagliato dei passaggi che avete fatto, e potreste, ad esempio, mandare in DoS un sistema se sbagliate payload con il risultato di avere un cliente arrabbiato e insoddisfatto.

Comprare corsi e fare certificazioni è un buon modo per migliorare e sono uno dei sostenitori di questa linea di pensiero. I corsi, però, non vi danno la garanzia di diventare dei guru di una tematica. Dovrete sempre metterci del vostro e compensare la pratica con delle challenge di qualità è un ottimo modo di integrare studio e pratica per diventare sempre più bravi.

-bdev-