Breve:
L'exploit è diverso dai test di penetrazione? Sì.
L'exploit sta ricercando parte del pentesting? Normalmente no.
Un buon riassunto di cosa sono i test di penetrazione è qui: definizione di Wikipedia di test di penetrazione .
Test di penetrazione semplice
Un sacco di attività di testing sulla penetrazione sta eseguendo attacchi o exploit preesistenti e ben noti. (Come per esempio eseguire MetaSploit.) Questo lavoro si basa su alcuni modelli di dove possono trovarsi i problemi rilevanti. Ma in realtà non implica la ricerca di sfruttamento o il reverse engineering.
Andando più in profondità
Tuttavia, andando più a fondo nei test di penetrazione, non è sufficiente utilizzare strumenti completamente disponibili. In questa fase, le persone:
- Considerare il sistema di destinazione (le sue operazioni e le sue possibili debolezze) in dettaglio
- Crea attacchi in base al sistema di destinazione
L'analisi del sistema di destinazione è di solito al livello di esaminare il suo design di alto livello, i suoi componenti (come server Web, framework, protocolli di comunicazione, ecc.).
Ovviamente questa analisi può essere approfondita come il reverse engineering o la revisione del codice sorgente, ma spesso i dettagli di livello più alto sono abbastanza buoni da poterlo definire sufficientemente su come attaccare il sistema.
In questa precedente risposta è possibile trovare una descrizione più dettagliata delle fasi usuali relative ai test di penetrazione Qual è la differenza tra un test di penetrazione e una valutazione della vulnerabilità?
Perché non eseguire il reverse engineering o sfruttare la ricerca
La ragione per cui il reverse engineering e l'exploit di ricerca sono raramente parte importante del pentesting è che si sta facendo un pentesting per il proprietario del sistema. Pertanto, l'hacker ha già fornito strumenti molto migliori di quelli che i ricercatori hanno in genere: il sistema viene solitamente rivelato loro in dettaglio per consentire loro di svolgere il proprio lavoro in modo efficiente. (In altre parole, sono autorizzati a mettere in corto circuito gran parte della ricerca sugli exploit.)
Python e scripting
La ragione per cui lo scripting è importante nei test di penetrazione è che i test di penetrazione di solito coinvolgono un gran numero di casi di test molto simili. Per rendere efficienti queste piccole variazioni, in genere viene utilizzato lo scripting.
Ad esempio, Metasploit, che è uno strumento comune da utilizzare su questo campo, può essere copiato usando python.
Oltre a python, vengono utilizzati altri linguaggi di scripting, come Ruby e Perl.
I mean if you can reverse one program probably you will be able to find a vulnerability, but for this you need to be good with C and Assembly.
In caso di software ben scritto non sarei d'accordo. Anche se hai accesso al codice sorgente originale del software, in genere è difficile trovare vulnerabilità.
Se hai solo accesso al binario, è ancora più difficile, dato che hai effettivamente bisogno di decompilare il software, e molta conoscenza è scomparsa e il codice non è più in un formato di facile lettura. Il moderno software è abbastanza grande da rendere molto difficile concentrarsi su parti importanti del binario e scavare da esso vulnerabilità essenziali.