Lo stile di programmazione di Pen Tester [chiuso]

2

Di recente mi sono laureato e ora lavoro come sviluppatore di software, ma a un certo punto della mia carriera, mi piacerebbe passare al Penetration Testing.

So che i pennarelli a volte scrivono i propri strumenti, ma sono curioso di sapere se seguono e usano i modelli di progettazione, i principi SOLID e mirano a scrivere codice pulito, o si tratta piuttosto di fare in modo che il programma faccia il suo compito.

    
posta Pr0f 07.11.2016 - 21:41
fonte

2 risposte

11

C'è una grande differenza tra i pen-tester che scrivono un po 'di codice e gli sviluppatori di strumenti di sicurezza.

Durante un pen-test, potrebbe essere necessario scrivere un codice personalizzato. Ad esempio, se si trova l'iniezione di modelli sul lato server, è probabile che non vi sia alcun exploit off-the-shelf che funzioni in questo scenario esatto. Ma con un po 'di codice puoi ottenere una shell. Questi script completano il lavoro; i modelli di design sono irrilevanti.

Molti strumenti di sicurezza sono molto più complessi degli script one-off. Metasploit è un buon esempio. Prima di Metasploit, la maggior parte degli exploit sono stati sviluppati come script di prova con penna one-shot. L'exploit mirerebbe a una specifica vulnerabilità e fornirebbe un carico utile specifico. Metasploit ha introdotto la modularità e la struttura nello sviluppo degli exploit. In particolare, separando i concetti di: exploit, payload e codificatori.

In effetti, ora ci sono tutti i tipi di strumenti di sicurezza che sono stati sviluppati pensando a pratiche di progettazione forti, sebbene molti di questi siano commerciali, ad es. Nessus, Checkmarx, Burp Suite.

    
risposta data 07.11.2016 - 22:15
fonte
3

Per il lavoro di pentesting, probabilmente utilizzerai molte librerie diverse e penso che sia l'aspetto principale del lavoro.

Sapendo questo, è anche un po 'di lavoro organizzare questi progetti, avere tutte le librerie nel tuo sistema e così via. Un progetto / cartella per ogni utility che crei è un bel po 'di lavoro.

Per le utilità di pentesting non hai bisogno di molti schemi di progettazione o cose del genere. Potresti aver bisogno di qualcosa come il motore del flusso di lavoro per eseguire le tue utilità, proprio come fa metasploit.

Consiglierei di utilizzare uno dei motori di flusso di lavoro esistenti e provare a scrivere solo utility / plug-in. In questo modo puoi ottenere molto senza salire in acque alte.

Un altro punto è decidere il tuo linguaggio di programmazione in modo che tu possa limitarti a uno solo per la maggior parte del tempo. Leggendo dalla tua domanda, potrebbero essere Python, Ruby, Java, C # etc che sono tutti ottimi per scopi di scripting.

    
risposta data 08.11.2016 - 08:32
fonte

Leggi altre domande sui tag