Come trovo le vulnerabilità nel software? [chiuso]

-3

Ho letto una risposta qui che ha parlato di diventare un PenTester. La risposta diceva che devi imparare a rompere il software. Ho postato un commento sulla risposta chiedendo dove iniziare a imparare a interrompere il software, ma non ho ricevuto alcuna risposta, quindi ho deciso di porre la mia domanda. Come imparo a rompere il software? Sono già un programmatore e conosco Java, C ++. Inoltre ho familiarità con JavaScript, CSS, HTML, Python e C. Ho letto regolarmente sulle vulnerabilità della sicurezza, ma ora voglio sapere come trovarli.

Grazie.

Modifica: ho fatto cose come usare l'intestazione winnt.h in C ++ per modificare i punti di ingresso degli eseguibili e aggiungere nuove sezioni agli eseguibili, diavolo ho scritto un'intera finestra di lavoro eseguibile solo con un editor esadecimale.

Modifica: riduzione della domanda: sono interessato alle vulnerabilità di siti Web e server Web, vulnerabilità del sistema operativo, vulnerabilità nella memoria del computer come MemoryLeaks, cose come virus, ecc.

    
posta nom 19.06.2015 - 11:50
fonte

3 risposte

7

Non esiste un modo per trovare le vulnerabilità. Ma ecco alcuni passi che puoi seguire.

Target

Per prima cosa devi scegliere una piattaforma e un pezzo di software da attaccare. Per iniziare vorrei scegliere qualcosa che sia open source. Ci sono molti vantaggi a questo; il principale è che puoi guardare il codice sorgente. Devi quindi scegliere un aspetto che vorresti attaccare. Ad esempio, potresti voler attaccare l'implementazione UDP dello stack di rete Linux.

Esecuzione di un'analisi su un software a sorgente chiuso significa che stai smontando il binario, eseguendo il rooting delle istruzioni e eseguendo il debug del processo. Questo è lungo e noioso. È meglio capire cosa rompe il codice con il codice sorgente prima di andare a cercarlo nello smontaggio.

Essendo specifico nel tuo target ti permette di analizzare sistematicamente un pezzo di software.

Analizzare

Con il tuo obiettivo in mente inizia la tua analisi della parte del software che vuoi trovare vulnerabilità.

  • Determina quali file del codice sorgente influenzano il tuo target.
  • Con l'open source puoi inserire i messaggi di debug per assicurarti di comprendere il flusso del codice. Questo può essere estremamente importante. Sapendo quali sezioni di codice sono chiamate e le variabili che portano a quel risultato sono fondamentali per capire cosa sta succedendo.
  • Eseguire gli strumenti di analisi del codice sul progetto. A seconda del progetto, questo potrebbe essere un punto controverso, ma possono essere utili e rilevare errori di programmazione comuni.
  • Abilita tutti i flag di compilazione del compilatore . Il tuo obiettivo è trovare errori di programmazione. Quale modo migliore di avere il compilatore che ti dice dove pensa che il codice sia cattivo.

Queste sono solo alcune delle cose che puoi fare per analizzare il software. Crea un elenco di possibili errori di codifica.

Triggering

Ora con un elenco di possibili errori di codifica è necessario determinare se è possibile attivarli. Ancora una volta, i messaggi di debug ti aiuteranno. Torna al codice sorgente e determina cosa esattamente deve accadere per ogni difetto di codifica per rompere il software. Non stai cercando il pieno sfruttamento, vuoi solo che il codice si blocchi, o fare qualcosa di inaspettato. È necessario determinare cosa potrebbe innescare un difetto di codifica. Questo potrebbe essere qualsiasi cosa che influisce su una variabile di lunghezza, ingannare una funzione per prendere un percorso per elaborare i dati in modo errato, ecc. Alcuni difetti di codifica non sono attivabili, ma questa è la natura dell'analisi di vulnerabilità.

A questo punto hai una lista di difetti e un elenco di idee per ogni difetto su cosa potrebbe far sì che faccia qualcosa di inaspettato.

Fuzzing

Ora scrivi il codice. Usando praticamente qualsiasi linguaggio di programmazione è conveniente per il software che stai attaccando. Potresti scrivere codice Python per lanciare pacchetti specifici sui dispositivi di rete per tentare di rimuovere l'implementazione UDP di un dispositivo basato su Linux.

L'obiettivo è implementare i trigger e sperare che il codice funzioni nel modo in cui pensi. I tuoi messaggi di debug saranno utili qui.

  • Possono dirti se il percorso del codice è anormale.
  • Possono mostrare le variabili che stai tentando di manipolare
  • Assicurano che l'innesco stia facendo ciò che ti aspetti, e puoi regolarlo di conseguenza.

Con un po 'di fortuna sei in grado di far accadere qualcosa di diverso. Forse questo può portare all'esecuzione del codice, forse no. È un cavallo di un colore diverso.

Reality

L'analisi della vulnerabilità richiede tempo. Molto tempo. Non trascorrerai un giorno ad analizzare il software e a trovare 10 vulnerabilità. La media non ufficiale per l'analisi della vulnerabilità è 1 vulnerabilità per 3 mesi di analisi. Puoi raddoppiare quella volta se stai analizzando un progetto non open source.

    
risposta data 19.06.2015 - 13:36
fonte
1
  1. Questo tipo di ricerca è, non è, non sarà, o sarà illegale a seconda di dove vivi e potrebbe avere conseguenze non intenzionali. Evita di farlo con la rete del tuo datore di lavoro o, peggio, con la connessione del tuo coniuge.

  2. Alcune vulnerabilità possono essere localizzate tramite fuzzing. Una volta che una vulnerabilità è stata trovata, puoi imparare come valutarli leggendo la prova dei concetti. Ad es., link

risposta data 19.06.2015 - 13:36
fonte
1

Per spiegare in breve:

Prima di tutto per la comprensione, capisci la differenza tra creare codice e codice di interruzione, dato che sei un programmatore di cui sei a conoscenza nello sviluppo della pagina di accesso dell'applicazione web.

Ora come rilevatore di vulnerabilità come è necessario testare, per prima cosa mettiti nei panni dell'hacker e rompi il più possibile. Poiché sei a conoscenza delle vulnerabilità del sito web, esplora il Web come testare la vulnerabilità all'interno della tua applicazione: ad esempio, sono a conoscenza di una vulnerabilità di SQL injection:

  • Identifica la vulnerabilità
  • come posso testare la vulnerabilità
  • categorizza se può essere controllato manualmente o dovrebbe essere rilevato usando gli strumenti

Fammi fare un esempio:

  • vulnerabilità: SQL injection
  • la pagina web deve essere testata: login.aspx
  • strumenti utilizzati: ricerca per indicizzazione della pagina di accesso con SQL injection
  • è vulnerabile? Se sì risolvilo come uno sviluppatore, ci sono strumenti pronti disponibili sul mercato per ogni vulnerabilità delle applicazioni Web.

In generale è possibile verificare per prima cosa lo standard di Owsap e il manuale dell'hacker dell'applicazione Web.

In sintesi per la tua domanda è simile al tuo sviluppo.

In sviluppo: ottieni il requisito - > sviluppa il requisito - > test - > fix - > release.

In sicurezza: sviluppa - > identifica la vulnerabilità - > esplora la vulnerabilità - > confronta la vulnerabilità con l'applicazione sviluppata - > test - > risolvi

    
risposta data 19.06.2015 - 12:46
fonte

Leggi altre domande sui tag