Caratteristiche e differenza tre Hacking e Penetration test

Caratteristiche e differenza tre Hacking e Penetration test

Hacking vs Penetration test

Anche se i due nomi divergono nel loro significato, hacking e penetration test sono le due facce della stessa medaglia. Il termine hacking si è sviluppato negli anni assumendo i più svariati significati, passando da inizialmente significato positivo a quello che oggi molti considerano negativo, adottato per indicare individui senza scrupoli che si divertono a discapito del prossimo, sia su scala sociale che economico.

Il penetration testing, è un attività relativamente recente e ramo chiave della sicurezza informatica. Essa si prefigge lo scopo di individuare il grado di sicurezza di un sistema attraverso tecniche di raccolta informazioni e attacco. Nel breve, un operatore che effettua una procedura di penetration test non fa altro che tentare di hackerare un sistema di sicurezza non con lo scopo di violarlo od arrecare danni, ma bensì di scovare i punti deboli e tapparli.

Hacking e penetration test coincidono quindi nel loro significato pratico e condividono metodologie e strumenti con l’unica variante del fine. In cosa consistono effettivamente queste metodologie e quali fattori vanno considerati e sfruttati. In questo capitolo affronteremo non tanto la metodologie usata, ma su quali cardini chiave si fondano queste pseudo discipline: vulnerabilità, exploit e payload.

Caratteristiche e differenza tre Hacking e Penetration test

Vulnerabilità

Come il nome stesso dice, la vulnerabilità, in particolare a livello informatico, consiste in una parte o componente del sistema preso in esame, in corrispondenza del quale le misure di sicurezza messe a protezione di esso sono assenti, ridotte o ancor peggio compromesse. Il termine sicurezza però non deve essere mal interpretato e solo in senso stretto del termine, esso rappresenta un concetto più ampio. La vulnerabilità di un software, anche definita bug, è spesso rappresentato da un difetto di progettazione, d’implementazione o dello stesso sviluppo a causa di una procedura di debug incompleta, errata o peggio ancora inesistente. Le principali cause di questo funzionamento incorretto sono dovute a operazioni di input per il quale il software assume comportamenti non previsti. Nella maggior parte dei casi queste operazioni sono dovute a inserimenti di dati parziali o volutamente incorretti oppure da inserimenti di dati su cui non sono presenti controlli.
Sfruttare la vulnerabilità di un software quindi permette all’attaccante di usare a proprio beneficio i mutamenti di comportamento che si vengono a creare in presenza di un certo input (buffer overflow), da un semplice crash dell’applicazione a un ben peggiore stack overflow, procedura che consentirebbe di sovrascrivere l’area dati del processo con nuovi dati.
La ricerca delle vulnerabilità di un software è spesso effettuata sia dagli attaccanti che dagli stessi produttori ed entrambi utilizzano le medesime metodologie.

Esistono specifici software prefissi a questo scopo, capaci di monitorare il comportamento a basso livello del sistema preso in esame, a seconda del vario tipo di input inserito. Anche se parliamo di programmi specifici, ciò non implica che questa sia una procedura automatica. Per prima cosa bisogna studiare attentamente la struttura del campione e verificare gli input standard. In secondo luogo, verificare il comportamento su input alterati fino a raggiungere l’obbiettivo desiderato. Questa è solo una soluzione necessaria, ma non sufficiente, non sempre la vulnerabilità può essere presente, tutto sta nell’abilità delle due parti, il programmatore e il ricercatore.
Naturalmente per tutti i mali c’è una cura, quando una vulnerabilità viene trovata e resa pubblica, ed esiste un gruppo di sviluppo dedicato al software, questi cercheranno di sviluppare una patch correttiva a finché la falla sia tappata. Non a caso, le più importanti compagnie software, per fare un nome Google con il suo Chrome, stanziano premi in denaro a chiunque riesca a trovare le vulnerabilità dei propri software ed a spiegare quali siano e come sanarli. Cedere una piccola quantità di denaro è ben piccola cosa di fronte a quanti danni potrebbero essere causati da un attaccante che sfrutti le vulnerabilità di un software distribuito a livello mondiale e usato da milioni di utenti.

Exploits

L’exploit è il termine usato per identificare un codice che sfrutta delle vulnerabilità in modo da causare un comportamento anomalo di un determinato sistema o componente. Questi comportamenti possono variare da un escalation dei privilegi a un denial of service: nel primo caso, l’anomalia permette di elevare i propri privilegi utente anche fino al livello amministratore, nel secondo caso, detto anche DoS, si va a compromettere totalmente il funzionamento di un determinato servizio/funzione o la macchina stessa.
Gli exploit possono essere classificati sia per tipo di contatto, sia per il tipo di vulnerabilità che sfruttano, sia per l’effetto che provocano. Nel primo caso, gli exploit si possono definire remoti, quando vengono eseguiti attraverso la rete senza precedenti accessi al sistema, oppure locali, quando è richiesto un preventivo accesso al sistema e da esso far partire l’esecuzione. Nel secondo caso, come abbiamo già spiegato nel precedente capitolo, la classificazione si basa sul tipo d’input che può essere dato o la particolare condizione creata. In questo caso la lista diventa molto può lunga e elencheremo solo alcuni quali: buffer overflow, heap overflow, sql injection, format string attack, race condition e ecc… Nel terzo caso invece troviamo il risultato finale dell’esecuzione quali EoF, DoS, Spoofing, ecc.

Una vulnerabilità può possedere uno o più exploit, ma non è mai il caso contrario, visto che exploit sfrutta una determinata eccezione ed è quindi da considerare dedicato. Normalmente quando un exploit viene pubblicato, questo è studiato nelle sue parti per capirne il funzionamento e su cosa fa leva, e di norma la vulnerabilità sfruttata viene patchata ovvero risolta. In questi casi, l’exploit diventa obsoleto e non più efficiente per le nuove versione del software. Proprio per questo motivo gli hacker che sviluppano un exploit cercano in tutti i modi di tenerlo privato e non condividerlo con altri. Questi tipo di exploit sono definiti exploit 0-day e rimangono tali finche la loro diffusione non è tale da potervi dare rimedio o la vulnerabilità che sfruttano viene resa nota. Questi tipi di exploit sono ovviamente i più appetibili e il sogno di ogni hacker.

Payload

Il payload è la parte di codice che se eseguito su un sistema può avere vari effettivi, a seconda di come è stato progettato. Viene definito come la runtime di un virus informatico che ne estende le funzioni oltre l’infezione del sistema. Si intende quindi payload qualsiasi operazione che a tempo determinato, causale o attivato da un evento, è mandata in esecuzione da un virus. Nel gergo comune non viene posta molta attenzione alle differenza stilistica tra virus, malware e payload, e quindi nella maggior parte dei casi il termine virus sta ad indicarli tutti. Nel dettaglio, i virus informatici sono un particolare tipo di malware, composto anche da più parti, in grado di duplicarsi e diffondersi in modo automatico tra i vari sistemi informaci con cui può entrare in contatto. Da qui l’assonanza del termine con i virus biologici. Mentre i malware informatici sono generalmente composti da due parti: exploit, già analizzato, e il payload. Se il primo ha il compito di sfruttare una vulnerabilità col fine di penetrare all’interno del sistema, la seconda, è effettivamente il codice malevole che viene mandato in esecuzione. Naturalmente esistono exploit che agiscono singolarmente, come nel caso degli exploit DoS, oppure altri, come nel caso degli exploit Execution Code, che consentono dopo aver creato una situazione di stack o heap overflow di inserire un codice eseguibile direttamente in memoria. Quindi sia exploit che payload possono essere utilizzati singolarmente o combinatamente, dimostrando la loro l’estrema modularità e giustificando ancor più l’utilizzo di soluzione framework preposte esattamente a quest’utilizzo.

Esiste un estrema varietà di payload e la loro principale catalogazione è solitamente fatta secondo lo scopo a cui sono preposti. Fra i molti troviamo:

  1. Backdoor: programmi che consentono un accesso non autorizzato ai sistemi in cui sono eseguite. Nella maggior parte dei casi sono installate da altri payload e non sempre un software malevolo, ma possono fungere da sistema d’accesso d’emergenza
  2. Trojan horse: programmi che all’apparenza contengono istruzioni lecite all’utente, ma che in background svolgono attività dannose
  3. Spyware: sono software principalmente preposti a raccogliere informazioni all’insaputa dell’utilizzatore, memorizzandole in file o inviandole
  4. Rootkit: sono programmi preposti, non a una funzione esplicitamente malevola, ma al camuffamento di altri, come payload
  5. Keylogger: programmi che consentono di registrare qualsiasi digitazione dell’utente
  6. Bomba logica: particolare tipo di payload, che si scatena solo in presenza di determinati eventi o stati del sistema. Anche esso può contenere altri payload

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *