Come migliorare come esperto di sicurezza

33

Sono uno sviluppatore di software professionale con un grande interesse per la sicurezza delle applicazioni web. Direi che probabilmente ho una migliore comprensione della sicurezza delle applicazioni web rispetto allo sviluppatore medio. Il mio problema è che la mia conoscenza è strongmente focalizzata sulla parte teorica della sicurezza del web - cioè, ho letto molti libri, seguo blog e mailing list, ma la mia esperienza pratica è limitata.

Conosco la causa principale delle vulnerabilità, so come funzionano e come fermarle. Quello che mi piacerebbe fare è portare le mie conoscenze al prossimo passo: voglio quell'esperienza pratica. So che probabilmente finirò per fare cose relative alla sicurezza ad un certo punto della mia carriera, ma non ancora, almeno non a tempo pieno. Nel frattempo mi piacerebbe sviluppare la mia conoscenza della sicurezza delle applicazioni web e ottenere più esperienza, specialmente in campi come i test di penetrazione.

La mia domanda a voi, miei cari esperti di sicurezza, che consiglio avete per me di ottenere quell'esperienza pratica che tanto desidero? Quali risorse potresti consigliare per conoscere i diversi strumenti e le tecniche utilizzate nei test di penetrazione?

Un'opzione potrebbe essere, installare localmente un'applicazione Web vulnerabile (so che ce n'è almeno una su google, non ricordo il suo nome), e quindi usare guide come la Guida ai test di OWASP per provare le diverse tecniche . Tuttavia, probabilmente sto cercando un modo di apprendimento più guidato, nel senso che voglio sapere in quale ordine dovrei fare le cose, assicurarmi di fare le cose nel modo giusto e nell'ordine giusto - piccoli passi, quindi per dire.

Qualsiasi consiglio è più che benvenuto.

    
posta KLE 29.09.2011 - 20:11
fonte

5 risposte

23

È fantastico che tu stia facendo così tanto da solo. Sei sulla strada giusta. Il tuo entusiasmo di imparare da solo ti farà superare un bel po 'della tua concorrenza. Complimenti.

Il mio consiglio principale sarebbe: non preoccuparti troppo di pianificare un percorso attraverso tutto il materiale che vuoi imparare. Non hai bisogno di un piano attentamente studiato. Invece, sporca le mani, gioca, non aver paura di esplorare. Quando vedi qualcosa di bello, seguilo opportunisticamente. All'inizio potresti essere sopraffatto, ma a lungo termine penso che troverai un'esperienza preziosa.

Penso che una buona esperienza sia quella di impegnarsi in una valutazione della sicurezza di un sistema software. Questa sarebbe un'esperienza divertente per te. Si può scegliere un'applicazione web open-source o un framework di programmazione web e fare una valutazione della sicurezza di esso: fare una valutazione del rischio architettonico (ciò che Microsoft chiama "modellazione delle minacce", con STRIDE e simili), leggere il codice ed eseguire la revisione del codice di sicurezza , prova alcuni strumenti di analisi statica. Quindi, scrivi i risultati e pubblica un post sul blog con la tua valutazione. Fatelo un paio di volte e penso che l'esperienza sarà estremamente utile per voi.

Un'altra ottima esperienza per te sarebbe quella di creare un'applicazione web non banale o due. Mi piace web2py come framework di programmazione web per la sua facilità di apprendimento, ma in alternativa scegliere qualcosa che è più popolare (ad es. Ruby on Rails, PHP o uno dei suoi framework) potrebbe essere una buona esperienza per vedere quali sono i problemi con framework comuni. Scrivi un'applicazione web, con un codice JavaScript sul lato client. Gioca in giro imparando come usare jQuery o simili. Forse sperimentare con Node.js. Penso che questo sia un modo fantastico per ottenere l'esposizione ad alcune delle sfide e mentalità che gli sviluppatori web probabilmente dovranno affrontare.

A seconda della tua personalità, potresti trovare divertente creare un blog e scrivere cose divertenti che hai imparato, mentre le impari. Per molte persone, l'atto di scrivere qualcosa lo solidifica nel tuo cervello e ti costringe a capirlo meglio.

Hai menzionato di praticare l'hacking di un'applicazione web. Imparare a hackerare un'applicazione Web è divertente e vale la pena arrivare fino a un certo punto. È bello avere qualche esperienza pratica per l'hacking di un'applicazione web, per aiutarti a pensare ai rischi e per rendere concreti i concetti. Tuttavia, non lo renderei l'obiettivo principale del tuo apprendimento. I test di penetrazione del Web sono un'attività di fascia bassa in questi giorni, con opportunità di carriera meno promettenti, quindi non consiglierei di concentrare le tue energie sull'apprendimento di essere un web pentester. Non è il modo in cui ti consiglierei di posizionarti, se hai la possibilità (e sembra che tu lo faccia).

    
risposta data 29.09.2011 - 22:18
fonte
11

Posso identificarmi con la tua situazione :-)
Sto girovagando per la comunità di Infosec da un po 'di tempo, cercando in sostanza di andare avanti con le cose che vuoi fare anche tu. Questi sono alcuni dei suggerimenti su come sporcarti le mani.

eLearnSecurity
Per me personalmente, ho deciso di andare avanti con il corso eLearnSecurity.

link

Sta guadagnando molta trazione nella comunità della sicurezza per essere molto pratico. Hanno anche un setup che chiamano "The Colosseum", dove hai a disposizione un parco giochi di app web vulnerabili.

Questa non è una di quelle "certificazioni per amore di risorse umane". È utile

DVWA
Puoi anche dare un'occhiata all'app Web dannatamente vulnerabile, creata da un mio amico chiamato Ryan Dewhurst: link - una sorta di come il WebGoat di Owasp, ma a mio avviso migliore. Ad esempio: mostra la vulnerabilità e quindi il codice PHP su come prevenirlo.
Un elenco con altri come questo: link

Agnitio
Questo è uno strumento basato su liste di controllo per la revisione del codice di sicurezza. Puoi imparare molto da esso. In generale, dai un'occhiata al blog di SecurityNinja (David Rook), è pieno di cose buone.

link

EH-NET
Controlla link , ci sono un sacco di buoni suggerimenti in là.

Sfide / wargames
Questi sono buoni per ovvi motivi: pratica, pratica, pratica. Ce ne sono molti, e quelli buoni hanno livelli per principianti e non solo.

link
link

Spero che alcuni di questi possano esserti utili. Cheers!

P.S .: Mi spiace che i link non siano link, apparentemente non mi è permesso un sacco di link perché la mia reputazione non è abbastanza alta (questa è la mia prima risposta).

    
risposta data 07.10.2011 - 00:28
fonte
4
Il

link fornisce alcuni problemi pratici che puoi risolvere.

This codelab shows how web application vulnerabilities can be exploited and how to defend against these attacks. The best way to learn things is by doing, so you'll get a chance to do some real penetration testing, actually exploiting a real application. Specifically, you'll learn the following:

  1. How an application can be attacked using common web security vulnerabilities, like cross-site scripting vulnerabilities (XSS) and cross-site request forgery (XSRF).
  2. How to find, fix, and avoid these common vulnerabilities and other bugs that have a security impact, such as denial-of-service, information disclosure, or remote code execution.
    
risposta data 30.09.2011 - 01:44
fonte
4

seguendo il suggerimento di Rory Alsop (sopra):

Se il tuo datore di lavoro / organizzazione impiega periodicamente una società esterna per eseguire test di vulnerabilità, chiedi / chiedi / lotta / combatti per essere coinvolto in questo, forse come la persona che punta al web o all'app.

Ciò ti consentirà di entrare in contatto con qualcuno che fa il lavoro pratico (chiedi loro come hanno fatto il loro ingresso nel gioco).

Potresti essere in grado di guidare il tuo datore di lavoro sfruttando le tue conoscenze teoriche. Anche se probabilmente non hai utilizzato gli strumenti di test utilizzati, la comprensione di ciò che questi strumenti stanno facendo a livello di base e di ciò che questi strumenti sono destinati a rivelare ti aiuterà.

Riesaminare la proposta scritta di lavoro presentato dall'azienda esterna è utile così come potresti essere in grado di dare suggerimenti costruttivi su ciò che intendono. Sono stato in grado di rivedere tali documenti con il mio attuale datore di lavoro e sottolineare "piastra di riscaldamento" rispetto a ciò che è veramente significativo. E sono stato in grado di vedere le citazioni per questo tipo di lavoro da eseguire. Wow!

Infine, il rapporto scritto dei risultati del tester può sembrare triste e fatale per alcuni, ma può essere un'opportunità per te di offrirti volontario per essere coinvolto in eventuali successive valutazioni del rischio o sforzi di mitigazione.

Parlando di valutazioni del rischio, il suggerimento di D.W. di eseguire uno contro un'app web è buono. È possibile scaricare il modello / strumento STRIDE da MS (richiede Visio l'ultima volta che l'ho usato) e utilizzarlo per creare il prodotto finito. Puoi anche utilizzare la scala MS DREAD per misurare il rischio potenziale. Il documento NIST 800-30 che è il quadro di valutazione del rischio federale è un'altra buona fonte per le fasi del processo e un quadro di riferimento. Modelli come STRIDE, DREAD, le pubblicazioni del NIST diventano tutti punti concreti delle citazioni di "buone pratiche" in qualsiasi articolo di tua presentazione.

In definitiva, la gestione sarà il consumatore di qualunque risultato tu crei. Dare loro qualcosa che capiscono ed è utile ti darà il tipo di esposizione necessaria per i successivi incarichi di sicurezza.

    
risposta data 21.12.2011 - 15:46
fonte
2

Devo rispettosamente essere in disaccordo con D.W. per quanto riguarda l'attrattiva della sicurezza delle applicazioni web come campo e carriera (ma sono di parte). Penso che sia una zona molto eccitante, dinamica e in crescita, dove un numero crescente di giocatori ha grossi interessi. Direi che se hai un grande interesse per la sicurezza delle applicazioni web, dai il massimo all-in-questo, se questo ti eccita, sarai in grado di costruire una grande carriera e avere un lavoro interessante e stimolante. Soprattutto, è un campo molto dinamico, quindi non dovresti annoiarti per i prossimi 20-30 anni! :)

Alcuni consigli:

  • continua a lavorare per diventare uno sviluppatore migliore. La tua esperienza nella progettazione, test e codifica, la tua esperienza in quelle aree ti aiuteranno senza dubbio quando entrerai nel campo della sicurezza. Leggi o rileggi i post "classici": link e link e continua lungo il percorso verso la vera padronanza e comprensione - conoscere le lingue, i computer, i sistemi operativi, i protocolli di rete e così via da dentro ti darà una spinta enorme e ti farà risaltare quando inizi a lavorare nell'area di sicurezza.

  • essere coinvolti con la comunità (o le comunità) di sicurezza [dell'applicazione web]. Venire a questo sito è il primo passo corretto :) Per la sicurezza delle applicazioni Web - se c'è un capitolo OWASP vicino a te (https://www.owasp.org/index.php/Category:OWASP_Chapter#Local_Chapters_by_Geographic_Region), contatta loro e vieni ai loro raduni; in caso contrario, prendere in considerazione l'avvio di uno!

  • vai a una conferenza come OWASP, BlackHat o DefCon se puoi - o naviga attraverso il loro sito web, diapositive e webcast pubblicati

  • raccogli i tuoi "modelli di ruolo": naviga attraverso argomenti di sicurezza, post e raccogli alcuni blog e account Twitter che seguiresti e che ti daranno informazioni e ispirazione.

  • impara uno scanner di applicazioni web, ad esempio il link di W3AF Puoi anche essere coinvolto nel progetto e contribuire a fare è meglio (o più adatto ai tuoi scopi o ai tuoi interessi)

  • considera di fare un tuffo in profondità nella sicurezza mobile e / o cloud - entrambe sono aree altamente dinamiche e promettenti

  • finalmente, più libri - non ce ne sono mai abbastanza! :) Assicurati di leggere "The Hacker's Handbook" (aka WAHH2) e "The Tangled Web"; considera di passare attraverso il "Web Application Obfuscation" se il suo materiale ti interessa. Per rendere le letture più orientate e coinvolgenti, prova a inventare cose che illustrano ciò che leggi o fai delle variazioni sugli exploit o sui campioni di codice. Ad esempio, sborsare per un paio d'ore di collegamento lab (compagno di WAHH2) e quindi provare a codificare demo simili per altri argomenti.

risposta data 20.12.2011 - 16:55
fonte