Un Po Di Consigli per Aspiranti Professionisti Del Settore Della Sicurezza Informatica



Recentemente è stata pubblicata una mia intervista su Motherboard di VICE e appena qualche ora dopo ho iniziato a ricevere un quantitativo stupefacente di email da persone che chiedevano fondamentalmente tutte la stessa cosa, un po di consigli per aspiranti professionisti nel settore della sicurezza informatica.

Considerando che rispondere individualmente ad ogni email sarebbe poco fattibile ho allora deciso di scrivere un post nel quale raccogliere alcuni di questi consigli.
Se per alcuni di voi lettori dovessero sembrare delle banalità, mi scuso fin da subito, ma l’età di chi mi ha mandato quelle email è molto varia, così come il loro background professionale, quindi volerò abbastanza basso ed elencherò solo alcune delle basi.

Chiedo anche scusa fin da subito per gli errori di sintassi, grammatica e via dicendo. Non sono abituato a scrivere in Italiano, non sono abituato a scrivere cose non tecniche e soprattutto non sono uno scrittore :D

Non è come nei film

Prima di tutto, mettetevi bene in testa questa cosa, lavorare nel mondo della sicurezza non è come nei film. Se vi siete interessati a questo percorso perchè “Matrix è figo” o perchè volete diventare come Elliot di Mr. Robot ( iniziate con la morfina se proprio dovete, poi ne riparliamo ), fidatevi che la cosa non fa per voi :D

Considerate questo scenario:

Lavorate sul vostro target ( che può essere il reversing di un applicazione, il pentest su la rete di un cliente, la scrittura di un exploit … qualsiasi cosa ) da giorni, e da altrettanti giorni praticamente non vi lavate. Siete incollati al computer da innumerevoli ore e vi staccate solo per andare al bagno e, quando proprio ne avete bisogno, dormire qualche ora. Avete consumato i vostri pasti davanti al computer usando una mano sola, anche il vostro animale domestico vi schifa per quanto puzzate e si sta facendo sempre più difficile trattenere quella pipì che sono almeno quattro ore che vi scappa … eppure continuate, quello schermo è tutto quello che vedete e sarà così finchè non avrete raggiunto il vostro obiettivo.

Se l’idea ( che ammetto essere un po esagerata, ma nemmeno tanto :D ) vi spaventa, o se pensate che non arrivereste mai a quel punto per quella che in fondo è “una scatola con uno schermo”, mi dispiace. Non volevo distruggere i vostri sogni, ma come vi avevo detto non è come nei film.

social life

Se invece fate parte di quella “minoranza minorata” che vede questa situazione come accettabile e anzi, si fomenta solo al pensiero, trovatevi un bravo dottore! Ehm, volevo dire, benvenuti nel club :D

Coltivate la vostra Curiosità

Accettate fin da subito il fatto che studierete per la maggior parte della vostra vita.
Mai sentito dire “non si finisce mai di imparare” ? Beh, non avete la minima idea di quanto sia sacrosanto questo modo di dire nel mondo dell’informatica. Anche i più grandi professionisti di questo settore, anzi soprattutto loro, studiano costantemente nuove cose, imparano, assorbono e rielaborano.
Quindi va da se che se non siete curiosi per natura, se non vi chiedete il perchè di ogni cosa e non vi ostinate a studiare finchè non lo sapete, per voi sarà una vita veramente difficile e frustrante, perchè leggerete per memorizzare, non per capire. Quello che fate vi deve piacere e proprio tanto, solo a quel punto lo studio diventerà ricerca, le ore passate al computer saranno un investimento su voi stessi e i risultati inizieranno ad arrivare.

Coltivate la vostra curiosità, ponetevi delle domande, cercate (quasi morbosamente) le risposte e divertitevi mentre lo fate.

Imparate la lingua Inglese

Per quanto mi pare assurdo dover dare questo consiglio nel 2016, dalle email che ho ricevuto e per alcuni casi di persone che ho incontrato, ho capito che bisogna (ancora) farlo.

shish

La stragrande maggioranza della documentazione tecnica è in inglese, i più importanti progetti open source sono commentati in inglese, alcuni dei libri migliori si trovano solo in inglese, cazzo perfino Alan Turing era inglese (se non capite il perchè di questa ultima frase, capitelo! ) … dovete imparare la lingua inglese, face it!

Non serve che componiate sonetti in inglese o che, fin da subito, sappiate intrattenere una conversazione con Bob che abita dall’altra parte del mondo, ma è fondamentale che sappiate cercare tra informazioni in inglese e, soprattutto, capirle quando le leggete.

Come si dice dalle mie parti, “mettetece ‘na pezza!” :D

Imparate ad usare Google

Ora che siete diventati curiosi e che avete imparato l’inglese, avete acquisito un buon 80% della capacità di districarvi tra il mare di informazioni della rete. Il restante 20% che vi manca consiste nell’imparare ad usare Google (o qualsiasi altro motore di ricerca degno di questo nome) che, per quanto possa sembrarvi banale, vi aprirà le porte di tutto ciò che mai vi potrà servire durante il vostro percorso tecnico/professionale.
Si dice che “non esistono domande stupide”, per quanto mi riguarda le domande stupide sono quelle che prima non hai fatto a Google.

Se non trovate la risposta alla vostra domanda, il più delle volte avete cercato male, keep searching ;)

Studiate le basi e studiatele ORA

Il computer è uno strumento, i programmi che girano al suo interno sono strumenti, internet stessa è uno strumento e, come per ogni altro strumento, dovete imparare a capire come funzionano, a cosa servono i suoi vari pezzi, quando usarne uno piuttosto che un’altro e via dicendo.
Come la racchetta diventa l’estensione del braccio del tennista, dovete far diventare questi vostri strumenti un’estensione del vostro cervello e l’unico modo è capire come funzionano.

Per quanto non sono un fan dei libri tecnici e metto (quasi) sempre la pratica prima della teoria, ce ne sono molti che vi faranno risparmiare mesi, a volte anni, di ricerche nella rete tra informazioni sparpagliate.

Buona lettura.

E’ importante che cominciate fin da subito, le stesse identiche cose saranno più difficili da assorbire in futuro quando nella vostra testa ce ne saranno già un mare e con loro, a volte, delle nozioni sbagliate di come queste funzionino veramente.
Io ve lo dico, più andate avanti senza le basi, più probabilmente dovrete disimparare mentre le studiate.

Imparate almeno due linguaggi di programmazione.

Ci sono due scuole di pensiero in merito: c’è chi dice che la programmazione è fondamentale per entrare nel mondo della sicurezza e c’è invece chi dice che non serve necessariamente … io faccio parte della prima categoria.

Imparare a programmare un computer significa mettere finalmente in pratica quello che si ha imparato di come funziona, è “l’esercizio finale” che che unisce teoria e pratica … inoltre la programmazione si dimostrerà essere la migliore alleata, fidatevi! ;)

Iniziate con il C (o l’Assembly x86 se siete proprio masochisti), non tanto perchè dovete diventare degli assi con questo linguaggio, ma perchè è quello che, secondo la mia opinione, concilia meglio “il basso livello” (cioè come ragiona la macchina) con ”l’alto livello” (cioè come ragionate voi). Ha una sintassi che si può leggere senza avere attacchi epilettici ogni due righe eppure espone elegantemente i concetti di puntatore, stack, heap, allineamento della memoria e tutte queste cose carine che diventeranno il vostro pane se e quando inizierete a scrivere exploit, reversare un’applicazione, ecc :)

Oltre a farvi i pipponi mentali su come funziona un calcolatore, direi che è anche arrivata l’ora di piegarlo al vostro volere e fargli fare quello che volete voi, non trovate?
Ci sono operazioni che fate manualmente ogni giorno e che possono essere automatizzate, informazioni che possono essere trovate meglio e più velocemente, insomma, vi serve anche un linguaggio di scripting.

Qui potete scegliere tra Python, Ruby e compagnia bella, non fa molta differenza onestamente, c’è anche chi usa PHP come linguaggio di scripting da terminale. Per quanto questo possa sembrare bizzarro dato che il PHP storicamente è utilizzato quasi solo per applicazioni web, impararlo ed usarlo come primo (mi raccomando, il primo, non fermatevi al PHP se volete studiarlo) vostro “coltellino svizzero” sarebbe prendere due piccioni con una fava: starete imparando il vostro primo linguaggio di scripting e starete imparando come funziona un buon 90% delle applicazioni web che forse, un giorno, vi troverete a dover “penetrare”.

Scrivete e/o studiate delle utilities di rete.

Come avrete già capito, il mio è un approccio atipico perchè è molto orientato alla pratica. Sono un forte sostenitore del concetto secondo il quale imparare qualcosa con la pratica sarà sempre più efficace che un approccio prettamente accademico/teorico, non è necessariamente il punto di vista giusto, ma quantomeno è quello che con me funziona meglio :)

Ora che avete capito come funziona un pc e che sapete programmarlo come vi pare, è arrivato il momento di capire come i vari pc comunicano tra loro usando la rete, quindi perchè non iniziare a scrivere la vostra prima utility di rete?

Se proprio non avete idee/fantasia, potete studiare il codice sorgente di cose come telnet, netcat, dig, wget, curl e chi più ne ha più ne metta. Le idee vi verranno, avrete voglia di migliorarli o modificarli per il vostro utilizzo specifico, inizierete a scrivere codice.

open source

Non Arrendetevi

Intendiamoci, all’inizio ci saranno imprecazioni, un’alternanza di sensazioni tipo “o mio dio cosa sta succedendo a questo computer?!” e “io sono DIO!!!!”, tanti di quei bug da pagare una piccola nazione di programmatori per fixarli ma soprattutto momenti nei quali avrete voglia di mollare.
Non siete perfetti, il vostro codice non è perfetto e non lo sarà mai, il vostro cervello ha bisogno di tempo e metodo per assorbire tutte queste cose, accettatelo ma continuate comunque a perseguire quella perfezione, è questo il segreto ;)

cat

Sarete stupiti da quanto ancora possiate imparare indipendentemente dalla vostra età, condizione sociale o titolo di studio … dipende solo dalla vostra curiosità e tenacia.

Fatto!

Ebbene si, abbiamo finito :)

Vi state chiedendo dove è la lista di “tool super segreti per hackerare ogni cosa”? O forse dove sono tutte quelle informazioni più specifiche sulla sicurezza?

Al di là del fatto che se avete più di dodici anni dovreste lavorare un po sulla vostra ingenuità ( :D ), la risposta a queste domande è anche la sintesi del mio ultimo consiglio: accettate il fatto che non ci sono scorciatoie.

pill

Non ci sono tutorial magici che vi faranno diventare “hacker in tre settimane”, neanche libri così completi da insegnarvi tutto quello che c’è da sapere. Dovrete imparare cercare, organizzare, gestire le informazioni e il vostro modo di assorbirle, questo richiede inevitabilmente tempo, dedizione e, come ho già abbondantemente detto, curiosità.