Domanda:
Come migliorare come esperto di sicurezza
KLE
2011-09-29 23:11:16 UTC
view on stackexchange narkive permalink

Sono uno sviluppatore di software professionista 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 è fortemente incentrata sulla parte teorica della sicurezza web, ovvero ho letto molti libri, seguo blog e mailing list, ma la mia esperienza pratica è limitata.

Io conosco la causa principale delle vulnerabilità, so come funzionano e come fermarle. Quello che mi piacerebbe fare è portare le mie conoscenze al passo successivo: 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 vorrei approfondire la mia conoscenza della sicurezza delle applicazioni web e acquisire maggiore esperienza, soprattutto in campi come i test di penetrazione.

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

Un'opzione potrebbe essere quella di installare un'applicazione web vulnerabile localmente (so che ce n'è almeno una su Google Code, può non ricordo il suo nome), quindi utilizza guide come la Guida al test di OWASP per provare le diverse tecniche. Tuttavia, probabilmente sto cercando un modo più guidato di imparare, ovvero voglio sapere in quale ordine dovrei fare le cose, assicurarmi di fare le cose nel modo giusto e nell'ordine giusto - piccoli passi, quindi da dire.

Ogni consiglio è più che benvenuto.

Evita semplicemente CEH o qualsiasi merda del genere e sarai bravo.
Cinque risposte:
#1
+23
D.W.
2011-09-30 01:18:10 UTC
view on stackexchange narkive permalink

È fantastico che tu stia imparando così tanto da solo. Sei sulla strada giusta. Il tuo entusiasmo per imparare da solo ti metterà un gradino sopra la 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, sporcati le mani, gioca, non aver paura di esplorare. Quando vedi qualcosa che sembra interessante, seguilo in modo opportunistico. All'inizio potresti essere sopraffatto, ma a lungo andare penso che troverai un'esperienza preziosa.

Penso che una buona esperienza sia impegnarsi in una valutazione della sicurezza di un sistema software. Questa sarebbe un'esperienza divertente per te. È possibile scegliere un'applicazione Web open source o un framework di programmazione Web e valutarne la sicurezza: eseguire una valutazione del rischio architettonico (ciò che Microsoft chiama "modellazione delle minacce", con STRIDE e simili), leggere il codice e rivedere il codice di sicurezza , prova alcuni strumenti di analisi statica. Quindi, scrivi i tuoi risultati e pubblica un post sul blog con la tua valutazione. Fallo un paio di volte e penso che l'esperienza ti sarà estremamente utile.

Un'altra esperienza molto positiva per te sarebbe creare una o due applicazioni web non banali. Mi piace web2py come framework di programmazione web per la sua facilità di curva di apprendimento, ma in alternativa scegliere qualcosa di più popolare (ad esempio, Ruby on Rails, PHP o uno dei suoi framework) potrebbe essere una buona esperienza per vedere quali sono i problemi con i framework comuni. Scrivi un'applicazione web, con del codice JavaScript lato client. Gioca per imparare a usare jQuery o simili. Forse sperimentare con Node.js. Penso che questo sarà un modo fantastico per ottenere visibilità su alcune delle sfide e sulla mentalità che probabilmente gli sviluppatori web dovranno affrontare.

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

Hai menzionato la pratica dell'hacking di un'applicazione web. Imparare a hackerare un'applicazione web è divertente e ne vale la pena fino a un certo punto. È positivo avere un'esperienza pratica nell'hacking di un'applicazione Web, per aiutarti a pensare ai rischi e per rendere concreti i concetti. Tuttavia, non ne farei l'obiettivo principale del tuo apprendimento. Il test di penetrazione web è un'attività di fascia bassa in questi giorni, con opportunità di carriera meno promettenti, quindi non consiglierei di concentrare le tue energie sull'imparare a diventare un web pentester. Non è così che ti consiglierei di posizionarti, se hai la possibilità di scegliere (e sembra che tu lo faccia).

So che questa è una vecchia domanda, ma se il test di penetrazione web è un'attività di fascia bassa, quali sono le attività di fascia più alta?
@nmit026 forse degno della sua stessa domanda, ma DW ne ha citate alcune: fare una valutazione della sicurezza, una valutazione del rischio architettonico (ciò che Microsoft chiama "modellazione delle minacce", con STRIDE e simili), leggere il codice e fare una revisione del codice di sicurezza, provarequalche strumento di analisi statica, ecc. E ovviamente tutte le attività positive, come * progettazione * e * costruzione * di applicazioni ...
Aggiungerei: * non stare da solo *.Essere esperti (in sicurezza o altro) non ha valore se non hai altre persone che leggano i tuoi feedback (quindi condividi i post del blog che hai scritto), il codice delle persone da rileggere (controlla la sicurezza il codice di qualcun altro, non il tuo), persone che rileggono il tuo codice (lo stesso) e in generale, persone che sapranno dire "questo ragazzo mi ha aiutato con i miei problemi di infosec".In questo modo, queste persone ti aiuteranno a "passare ad altre persone" e migliorerai come esperto (e farai fronte a nuove sfide e persone ogni giorno).
#2
+11
Dieter
2011-10-07 03:28:18 UTC
view on stackexchange narkive permalink

Posso identificarmi con la tua situazione :-)
Sono un po 'che ronzio nella comunità di infosec, fondamentalmente cercando di andare avanti con le cose che vuoi fare anche tu. Questi sono alcuni suggerimenti che ho raccolto su come sporcarti le mani.

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

http://www.elearnsecurity.com/course/penetration_testing/

Sta guadagnando molto successo nella comunità della sicurezza per essendo molto pratico. Hanno anche una configurazione che chiamano "The Colosseum", dove hai a tua disposizione un parco giochi di app web vulnerabili.

Questa non è una di quelle "certificazioni per il bene delle risorse umane". È adeguatamente utile.

DVWA
Puoi anche dare un'occhiata alla Damn Vulnerable Web App, creata da un mio amico di nome Ryan Dewhurst: http: // www. dvwa.co.uk/ - un po 'come WebGoat di Owasp, ma a mio parere migliore. Ad esempio: ti mostra la vulnerabilità e poi il codice PHP su come prevenirlo.
Un elenco con altri come questo: https://web.archive.org/web/20160527115615/http: //punter-infosec.com/vulnerable-web-applications-to-learn-web-application-testing-skills

Agnitio
Questo è un strumento basato su elenchi 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.

https://web.archive.org/web/ 20160427080011 / http: //www.securityninja.co.uk/application-security/agnitio-v1-2-released-today/

EH-NET Dai un'occhiata a http://www.ethicalhacker.net, ci sono tantissimi suggerimenti utili.

Sfide / wargame
Questi sono buoni per ovvi motivi: pratica, pratica, pratica. Ce ne sono molti e quelli buoni hanno livelli sia per i principianti che per gli oltre.

http://www.thehexfactor.org/
https://web.archive.org/web/20160406111843/http://www.iriss.ie/iriss/hackeire.htm

Spero che alcuni di questi possano essere utili per te. Ciao!

P.S .: Scusa se i link non sono link, a quanto pare non mi sono ammessi molti link perché la mia reputazione non è abbastanza alta (questa è la mia prima risposta).

Se il tuo datore di lavoro / organizzazione coinvolge periodicamente un'azienda esterna per eseguire test di vulnerabilità, chiedi / implora / lotta / combatti per essere coinvolto con quella, forse, come persona addetta allo sviluppo web / app. Puoi entrare in contatto con qualcuno che svolge il lavoro pratico (chiedi loro come è entrato nel gioco), potresti essere in grado di guidare il tuo datore di lavoro attingendo alle tue conoscenze teoriche. Rivedere la proposta scritta di lavoro presentata dall'azienda esterna è utile così come potresti essere in grado di dare suggerimenti costruttivi su ciò che intendono.
@jl01 - potresti postare questo come una domanda, piuttosto che come un commento. Quindi sarai in grado di aggiungere formattazione ecc.
#3
+4
Mike Samuel
2011-09-30 04:44:45 UTC
view on stackexchange narkive permalink

http://google-gruyere.appspot.com/ fornisce alcuni problemi pratici su cui puoi lavorare.

Questo codelab mostra come possono essere le vulnerabilità delle applicazioni web sfruttati e come difendersi da questi attacchi. Il modo migliore per imparare le cose è fare, così avrai la possibilità di fare dei veri test di penetrazione, sfruttando effettivamente una vera applicazione. In particolare, imparerai quanto segue:

  1. In che modo un'applicazione può essere attaccata utilizzando vulnerabilità di sicurezza web comuni, come le vulnerabilità di cross-site scripting (XSS) e cross-site request forgery (XSRF).
  2. Come trovare, correggere ed evitare queste vulnerabilità comuni e altri bug che hanno un impatto sulla sicurezza, come denial-of-service, divulgazione di informazioni o esecuzione di codice in modalità remota.
  3. ol >
#4
+4
jl01
2011-12-21 20:46:15 UTC
view on stackexchange narkive permalink

seguendo il suggerimento di Rory Alsop (sopra):

Se il tuo datore di lavoro / organizzazione coinvolge periodicamente un'azienda esterna per eseguire test di vulnerabilità, chiedi / implora / lotta / combatti per essere coinvolto in quello, forse come web / app persona punto dev.

Ciò ti consentirà di entrare in contatto con qualcuno che svolge il lavoro pratico (chiedi loro come è entrato nel gioco).

Potresti essere in grado di guidare il tuo datore di lavoro toccando nella tua conoscenza teorica. Anche se potresti non aver effettivamente utilizzato gli strumenti di test impiegati, la comprensione di ciò che questi strumenti stanno facendo a livello di base e di ciò che tali strumenti intendono divulgare ti aiuterà.

Rivedere la proposta scritta di lavoro inviata 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 "boiler-plate" rispetto a ciò che è veramente significativo. E ho potuto vedere le citazioni per tale 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 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 eseguirne una contro un'app web è buono. Puoi scaricare il modello / strumento STRIDE da MS (richiede Visio l'ultima volta che l'ho usato) e usarlo per creare il tuo prodotto finito. È inoltre possibile utilizzare la scala MS DREAD per misurare il rischio potenziale. Il documento NIST 800-30 che è il framework federale di valutazione del rischio è un'altra buona fonte per le fasi del processo e un framework di reporting. Modelli come STRIDE, DREAD, le pubblicazioni NIST diventano tutti punti solidi di citazioni di "best practice" in qualsiasi articolo che presenti.

In definitiva, la direzione sarà quella dei consumatori di qualunque output tu crei. Dare loro qualcosa che capiscono ed è utile ti darà il tipo di esposizione necessaria per i successivi incarichi di sicurezza.

#5
+2
dmitris
2011-12-20 21:55:05 UTC
view on stackexchange narkive permalink

Devo essere rispettosamente in disaccordo con D.W. per quanto riguarda l'attrattiva della sicurezza delle applicazioni web come campo e carriera (ma qui sono di parte). Penso che sia un'area molto eccitante, dinamica e in crescita in cui un numero crescente di giocatori ha grandi poste in gioco. Direi che se hai un grande interesse per la sicurezza delle applicazioni web, vai all in per quello - se questo ti entusiasma, 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 ti muoverai nel campo della sicurezza. Leggi o rileggi i post "classici": http://www.gamedev.net/blog/355/entry-2250592-become-a-good-programmer-in-six-really-hard-steps/ e http://www.norvig.com/21-days.html e prosegui lungo il lungo percorso verso la vera padronanza e comprensione: conoscere le lingue, i computer, i sistemi operativi, il networking protocolli e così via dall'interno ti daranno una spinta enorme e ti faranno risaltare quando inizi a lavorare nell'area della sicurezza.

  • partecipa alla sicurezza di [applicazione web] comunità (o comunità). Arrivare su questo sito è il primo passo giusto :) 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), mettiti in contatto con loro e vengono alle loro riunioni; se no, considera di avviarne uno!

  • vai a una conferenza come OWASP, BlackHat o DefCon se puoi, oppure sfoglia il loro sito web, diapositive pubblicate e webcast

  • prendi i tuoi "modelli di comportamento": naviga tra gli argomenti sulla sicurezza, i post e scegli alcuni blog e account Twitter che seguiresti e che ti darebbero informazioni e ispirazione.

  • impara uno scanner di applicazioni web, ad esempio W3AF http://w3af.sourceforge.net/ Puoi anche partecipare al progetto e aiutare a renderlo migliore (o più adatto ai tuoi scopi o interessi)

  • prendi in considerazione di fare un'immersione profonda nella sicurezza dei dispositivi mobili e / o del cloud: entrambe sono aree altamente dinamiche e promettenti

  • finalmente più libri: non ce ne sono mai abbastanza! :) Assicurati di leggere "The Web Application Hacker Handbook" (aka WAHH2) e "The Tangled Web"; considera di passare attraverso l '"offuscamento dell'applicazione Web" se il suo materiale ti interessa. Per rendere le letture più orientate alla pratica e coinvolgenti, prova a inventare cose che illustrino ciò di cui hai letto o facendo alcune variazioni sugli exploit o esempi di codice. Ad esempio, sborsare per un paio d'ore di laboratori http://mdsec.net/labs/ (compagno di WAHH2) e poi provare a codificare demo simili per altri argomenti.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...