Come fanno gli hacker a trovare le vulnerabilità nel software e nei sistemi operativi?

Questa è una domanda eccellente (e molto ampia)! Quello che si sta veramente cercando è una vulnerabilità. Una vulnerabilità è un difetto in un sistema che qualcuno, come un hacker, potrebbe usare per far sì che il sistema si comporti in modi che non erano previsti. Ci piace chiamarla una "caratteristica" non un bug :).

Un exploit, è un pezzo di codice o un processo che sfrutta la vulnerabilità per bypassare certe restrizioni.

Un'eccellente risorsa per trovare exploit pronti è il database degli exploit. Attualmente contiene oltre 35.483 exploit. In altre parole:

main-qimg-cb1b4a1bd8d24c032c16787aae11f886.webp

La prima vulnerabilità che ricordo di aver sfruttato, era un'iniezione di comandi in un'applicazione web che offriva funzionalità di base di strumenti di rete.

Supponiamo che questo sia il modulo web per quell'applicazione vulnerabile:

main-qimg-7d225b63d82952f82061da8993c5eac4.webp

Se si inserisce un indirizzo IP, come "8.8.8.8", l'applicazione prenderebbe quell'input e creerebbe un comando per la linea di comando.

Probabilmente assomiglierebbe a questo: ping -c 3 8.8.8.8

Accettare l'input dell'utente e generare comandi di sistema è generalmente considerato pericoloso... e divertente!

Supponiamo che un attaccante inserisca quanto segue nella casella dell'indirizzo IP:

8.8.8.8; cat /etc/passwd

Il comando che verrebbe generato sarebbe:

ping -c 3 8.8.8.8; cat /etc/passwd

Se non lo sapete già, il ';' è un carattere di fine comando. Segna la fine di un comando e ti permette di iniziarne uno nuovo. In altre parole, dopo il completamento del comando ping, il sistema eseguirà "cat /etc/passwd".

Quindi, non solo l'applicazione web eseguirà il ping 8.8.8.8 tre volte, ma mostrerà anche il contenuto del file /etc/passwd -- un importante file che contiene una lista di nomi utente su quel sistema.

Come si trova questo tipo di vulnerabilità? Avete diverse opzioni:

  • Cercate le applicazioni che offrono funzionalità che sono tipicamente eseguite sulla linea di comando.
  • Imparate il codice vulnerabile e cercatelo su Github e altri repository di codice sorgente online. Suggerimento: per PHP è sistema e passthru

Le applicazioni web sono un ottimo punto di partenza. Non solo le applicazioni web sono più facili da capire (rispetto a buffer overflow, off-by-one, stack overflow, e vulnerabilità format string), sono anche più facili da sfruttare.

Solo per chiarire. Un exploit è l'uso di software, dati o comandi per "sfruttare" una debolezza in un sistema informatico o un programma per portare avanti una qualche forma di intento malevolo, come un attacco denial-of-service, cavalli di Troia, worm o virus. La debolezza nel sistema può essere un bug, un glitch o semplicemente una vulnerabilità di progettazione. Un exploit remoto sfrutta la vulnerabilità di sicurezza senza aver mai avuto accesso al sistema. Un exploit locale ha bisogno di un accesso preliminare al sistema vulnerabile e di solito comporta l'aumento dei privilegi dell'account utente che esegue l'exploit. Coloro che utilizzano gli exploit spesso usano l'ingegneria sociale per ottenere informazioni critiche necessarie per accedere al sistema. Molti cracker (o hacker) sono orgogliosi della loro conoscenza degli exploit software e li pubblicano su un sito web per condividere o vantarsi con altri cracker. I browser web e i lettori multimediali sono spesso obiettivi dei cracker poiché entrambi hanno accesso alle informazioni del sistema e possono scaricare file da internet. Le patch (o "fix") hanno lo scopo di rimediare a queste vulnerabilità non appena vengono rivelate e sono spesso distribuite negli aggiornamenti del software. Quindi, è vitale mantenere il vostro software aggiornato per assicurarsi che tutte le vulnerabilità conosciute siano coperte da patch. Un exploit zero-day è un exploit che il creatore del software non ha ancora scoperto. Per evitare di perdere i dati a causa di un attacco che sfrutta un exploit, è una buona idea mantenere regolari backup dei vostri dati salvati sul vostro computer

Il processo

-Trucchi

Un trucco è una "procedura o pratica meschina e astuta...progettata per ingannare, illudere o frodare.1" Gli hacker usano trucchi per trovare scorciatoie per ottenere un accesso non autorizzato ai sistemi. Possono usare il loro accesso per scopi illegali o distruttivi, o possono semplicemente testare le proprie abilità per vedere se possono eseguire un compito.

Dato che la maggior parte degli hacker sono motivati dalla curiosità e hanno il tempo di provare infiniti attacchi, la probabilità che alla fine trovino un metodo sofisticato per ottenere l'accesso a qualsiasi ambiente è alta. Tuttavia, questi non sono i tipi di attacchi che affrontiamo in questo articolo, perché la maggior parte delle intrusioni di successo sono compiute attraverso vulnerabilità di sicurezza ben note e ben documentate che non sono state patchate, disabilitate, o altrimenti trattate. Queste vulnerabilità sono sfruttate ogni giorno e non dovrebbero esserlo.

-Ricerca delle vulnerabilità di accesso

Quello che generalmente accade è che un hacker avanzato o d'élite scrive uno strumento di scansione che cerca vulnerabilità ben note, e l'hacker d'élite lo rende disponibile su Internet. Gli hacker meno esperti, comunemente chiamati "script kiddies", quindi eseguono lo strumento di scansione 24 x 7, scansionando un gran numero di sistemi e trovando molti sistemi che sono vulnerabili. In genere eseguono lo strumento contro gli spazi dei nomi associati alle aziende in cui vorrebbero entrare.

Gli script kiddies usano una lista di indirizzi IP vulnerabili per lanciare attacchi, basati sulle vulnerabilità pubblicizzate da una macchina, per ottenere l'accesso ai sistemi. A seconda della vulnerabilità, un attaccante può essere in grado di creare un account privilegiato o non privilegiato. Indipendentemente da ciò, l'attaccante utilizza questo ingresso iniziale (chiamato anche "toe-hold") nel sistema per ottenere ulteriori privilegi e sfruttare i sistemi con cui il sistema penetrato ha relazioni di fiducia, con cui condivide informazioni, con cui è sulla stessa rete, e così via.

Una volta stabilito un toe-hold su un sistema, l'attaccante può eseguire strumenti di scansione contro tutti i sistemi collegati al sistema penetrato. A seconda del sistema compromesso, queste scansioni possono essere eseguite all'interno della rete di un'organizzazione.

-Ricerca delle vulnerabilità del sistema operativo

Come detto in precedenza, gli hacker cercano prima le vulnerabilità per ottenere l'accesso. Poi cercano le vulnerabilità del sistema operativo (OS) e gli strumenti di scansione che segnalano tali vulnerabilità.

Trovare le vulnerabilità specifiche di un OS è facile come digitare un indirizzo URL e cliccare sul link appropriato. Ci sono molte organizzazioni che forniscono informazioni "full-disclosure". La divulgazione completa è la pratica di fornire tutte le informazioni al pubblico dominio in modo che non siano note solo alla comunità degli hacker.

-Attaccare le vulnerabilità di Solaris OE

Utilizziamo Solaris 2.6 OE come esempio. Una vulnerabilità ben nota, per la quale sono disponibili delle patch, è lo

sadmind

exploit. Gli hacker usano spesso questa vulnerabilità per ottenere l'accesso root sui sistemi Solaris 2.6 OE.

Utilizzando solo un motore di ricerca e il numero CVE, trovato cercando attraverso il sito Mitre elencato in precedenza, è possibile trovare il codice sorgente e istruzioni dettagliate su come usarlo. L'intero processo richiede solo pochi minuti. L'hacker trova il codice sorgente sul sito di SecurityFocus e trova le istruzioni dettagliate sul sito SANS.

La mia opinione è che dipende se si sta parlando di cappelli bianchi o di cappelli neri.

Nella maggior parte dei casi, i cappelli bianchi possono prendere il loro tempo e o usare poco sforzo. Per esempio, è possibile sedersi e scansionare le porte o forzare brutalmente un login. Questo è comunemente molto lento, ma tende a funzionare dopo un po' di tempo.

Come per i cappelli neri; si lavora sotto pressione. Non appena si fa la prima mossa, l'orologio inizia a ticchettare. Faccio pen-testing e chiedo che il team/dipartimento di sicurezza non sappia cosa sta per succedere. Questo mi permette di lavorare sotto pressione e vedere se riescono a capire cosa sta succedendo. I black hat troveranno piccoli exploit; per esempio lo spamming di un modulo di login o una pagina che interroga MySQL e non fa il caching. L'interrogazione di MySQL tende solo a causare un aumento dell'utilizzo della CPU, ma questo può ancora essere dannoso per un'azienda. Altri metodi che non dovrebbero funzionare ma lo fanno comunque sono cercare di trovare i dump delle password. La maggior parte delle persone usa ancora la stessa password per tutto, e se trovate un singolo dump con le loro informazioni di login, potreste aver ottenuto i dettagli di login del suo punto vendita aziendale.

Alla fine della giornata, si tratta di tempo. Come ho detto prima, una volta che un cappello nero inizia ad andare, in genere hanno bisogno di stare qualche passo avanti.

Anche Kali Linux; sempre Kali Linux.