Programmazione VS Reti

Started by alessandro, December 19, 2011, 01:02:06 PM

Previous topic - Next topic

alessandro

Per diventare un buon pen tester (non fino a livello professionale, ma quasi :)), secondo voi cosa è più importante?

- le reti

- programmazione (che linguaggi?)

Non mi riferisco al web pen testing, ma alla sicurezza di pc e network.


berghem

Probabilmente entrambi.... Non puoi pensare che un software sia sicuro (o una macchina) se il contesto fa acqua da tutte le parti...
Saper programmare, è fondamentale, primo o poi il tuo programma te lo scrivi....
Il linguaggio, dopo anni di seghe mentali e di discussioni sui vari forum del tipo meglio questo o quel linguaggio, ti dico, in linea di massima, va bene qualsiasi linguaggio, l'importante che l'output rispetti le tue esigenze....

alessandro

Ok. Io so sia il C++, sia il Python, entrambi fino alle classi. Io penso di approfondire il Python.

Per imparare a creare shellcode e buffer overflow, mi serve anche l'assembly, giusto?


SYSTEM_OVERIDE

Quote from: alessandro on December 19, 2011, 04:32:50 PM
Ok. Io so sia il C++, sia il Python, entrambi fino alle classi. Io penso di approfondire il Python.

Per imparare a creare shellcode e buffer overflow, mi serve anche l'assembly, giusto?



Esattamente .
Comunque la programmazione è alla base di tutto ...

alessandro

Ok. Ora approfondisco il Python e poi ci darò dentro con l'assembly 8086. Le reti le lascio perdere

vincenzo

#5
Investire sul C++ è quasi sempre cosa buona e giusta. Dipende certo dall'utilità. Se ti interessa approfondire l'architettura di un sistema operativo e la sua gestione, dico che dovresti conoscere almeno: Assembly, C, Python e Bash (per quanto riguarda Linux). E insisto sul linguaggio C al posto del C++ per la programmazione di sistema. Il linguaggio C ti avverto, sembra piccolo e snello, ma contiene una serie di imperfezioni che lo rendono sia molto versatile che molto "error prone", ma di fatto è la lingua franca dei sistemi operativi e dei protocolli TCP/IP. Se ti interessa conoscere l'exploiting a basso livello (nel senso che il livello è vicino al linguaggio macchina) ti suggerisco un titolo: http://goo.gl/CAuKv e, se non hai difficoltà con l'inglese, anche: http://goo.gl/a8gjI.

You cannot teach a man anything. You can only help him discover it within himself.



alessandro

Quindi vado avanti con le classi e il resto del Python o mi metto da 0 a imparare il C?
Sia chiaro che non devo diventare programmatore/pen tester per professione, però vorrei imparare molto :)
Quasi quasi sono spinto al C...

Che ne dici? C -> Assembly -> imparo bene varie tecniche di pen test

vincenzo

#7
Con C e Assembly capisci come funzionano i sistemi operativi e i programmi. In particolare saprai cosa succede quando si esegue un programma. Questo non ha quasi nulla a che fare con il pentesting. Vedi il passaggio C->Assembly come distaccato da ...-> imparo tecniche di pentesting. Puoi fare entrambi i passaggi indipendentemente e contemporaneamente. Devi sapere che si puo' essere degli ottimi pentester senza saper programmare: bisogna soprattutto conoscere i programmi a disposizione e saperli usare. Backbox è l'ambiente più adatto per imparare, per il semplice fatto che contiene i tools più utilizzati. Già capire come si usa il Metasploit Framework, per esempio, sarebbe un ottimo traguardo. Ti consiglio, prima di imparare tecniche di pentesting, di conoscere bene i comandi da terminale (e più in generale lo scripting Bash). Per quanto riguarda Python e C, lo stesso, puoi impararli anche contemporaneamente. Se non hai tempo per imparare il C ti consiglio di continuare con Python. Le classi del C++ sono utili per fare programmi di grandi dimensioni, ma sono concetti importanti più per chi fa il programmatore di professione e in certi ambienti. Il C++ è un linguaggio molto complicato. Se vuoi conoscerlo è solo per cultura personale o per scrivere qualche bel programma opensource che lo richieda.

You cannot teach a man anything. You can only help him discover it within himself.



alessandro

Ok grazie, mi hai chiarito molto le idee! Io di tempi da dedicare al pc, purtroppo, ne ho poco, quindi penso di imparare a usare i tool e (magari) andati avanti col python. Per quanto riguarda la shell conosco abbastanza comandi.

Ultima cosa: che tool mi consigli di imparare a usare (per primi), e c è qualche guida/documentazione ufficiale?
(Io per metasploit ho letto un po della guida ufficiale in inglese e ho guardato molti video su youtube)

vincenzo

#9
Prego, guarda qui: http://sectools.org/
I tools della lista che stanno anche su Backbox vale la pena di imparare a usarli. All'inizio ti consiglio di mettere su una rete locale, magari virtuale, oppure installa solo un sistema operativo su virtualbox per esempio. Per iniziare fai pratica con nmap (scanner) e wireshark (sniffer), e nel frattempo cerca di capire come sono fatti i protocolli tcp/ip. Poi passa ad altri tools più specifici.

PS: per le guide occorre che leggi il più possibile e spesso dovrai farlo in inglese. Nei siti relativi a ogni tools trovi le documentazioni ufficiali.
      Un best-seller sull'hacking, che ti illustra alcune delle tecniche più utilizzate è questo: http://goo.gl/d6Y1Q

You cannot teach a man anything. You can only help him discover it within himself.



alessandro


alessandro

Ultima cosa poi non rompo più (:)): per imparare ad usare bene wireshark ho bisogno di imparare bene le reti? Che manuale mi conviene studiare a proposito? E che manuale esiste per wireshark? Grazie

vincenzo

#12
Ciao, vedi qui:
http://www.wireshark.org/download/docs/user-guide-a4.pdf
http://www.wireshark.org/docs/
ripeto, di solito trovi le guide ufficiali o link utili nei siti relativi a ogni programma. ;)

Ci sono tanti libri sui protocolli tcp/ip, personalmente quello che conosco sulle reti è per via dei libri di Stevens sulla programmazione Unix, non saprei che guida gratuita consigliarti sul web a parte il secondo volume di Daniele Giacomini che credo valga la pena leggere: http://appuntilinux.mirror.garr.it/mirrors/appuntilinux/a2/a248.htm#almltitle2008

You cannot teach a man anything. You can only help him discover it within himself.



alessandro

Ok! Il protocollo tcp/ip devo conoscerlo in modo approfondito o mi basta sapere qualche nozione di base?

vincenzo

Ti basta conoscere nozioni di base.

You cannot teach a man anything. You can only help him discover it within himself.