Symlink Attack: tecniche di intrusione

Symlink-Attack-tecniche-di-intrusione

Oggigiorno riceviamo una grande quantità di informazioni, molte delle quali evidenziano la continua esposizione ad attacchi informatici ai danni di organizzazioni ed aziende di ogni settore.

Siamo da sempre abituati a vedere fantomatici Hacker utilizzare programmi che visualizzano sul monitor dell’attacker una miriade di bit in movimento o numeri che ruotano ad altissima velocità, ma la realtà è ben diversa.

In questo articolo vogliamo mostrarvi in maniera concreta come viene trattata una delle tecniche di intrusione talvolta utilizzate: la vulnerabilità sui link simbolici.

Sfruttando questa falla di sicurezza, l’obiettivo è quello di leggere/scrivere dati di altri utenti, ad esempio il file che contiene le password del sistema (generalmente accessibile solo dall’utente amministratore).

Per eseguire l’exploit, l’Hacker analizza il programma potenzialmente vulnerabile con lo scopo di conoscere quali sono i dati a cui esso accede, focalizzando l’attenzione verso i file temporanei, il più delle volte memorizzati in directory accessibili da “chiunque”.

Se l’applicazione che crea e apre le risorse temporanee non esegue i dovuti controlli, come ad esempio verificare che il dato non è già presente sul disco, allora è possibile fargli aprire un qualsiasi file.

Vediamo ora un esempio pratico esaminando, in un ambiente Linux, un programma di cui non si dispone del codice sorgente.

Utilizzando l’utility “strings”, si estrapolano le stringhe incorporate nell’eseguibile in fase di compilazione, cercando nomi di file e cartelle temporanee:

symlink1

In questo caso, è evidente che l’applicazione accede al file “/tmp/app.tmp” e per sfruttare la vulnerabilità, basterà creare un link simbolico chiamato “/tmp/app.tmp”, facendolo puntare verso un altro file che vogliamo leggere (come quello delle password).

symlink2

Con questo escamotage quando il programma andrà ad aprire “/tmp/app.tmp”, leggerà il contenuto di “/etc/shadow”.

symlink3

In alcune circostanze come ad esempio quando il percorso del file temporaneo viene definito a “runtime”, l’utilizzo di “strings” non produrrà nessun risultato valido. Per far fronte a queste situazioni, è sufficiente usare il comando “strace” e monitorare le “system call” richiamate dall’applicazione potenzialmente vulnerabile.

E’ necessario tenere presente che l’esecuzione delle istruzioni non è sempre “lineare”, in quanto possono esserci variazioni in base alla logica del programma.

Con “strace” dunque, si devono percorrere tutti i casi, avviando più volte il software da analizzare e passandogli uno ad uno tutti gli argomenti possibili. La procedura è estremamente semplice e, come avrete modo di vedere nel prossimo esempio, non richiede conoscenze specifiche.

Il processo di debug inizia evidenziando le chiamate di sistema utilizzate dall’applicazione in cui volete individuare il bug.

symlink4

Tracciando in maniera dettagliata solo le “syscall” soggette ad attacchi sui link simbolici, come la “open”.

symlink5

Anche questa volta, grazie all’output dell’utility “strace”, abbiamo rilevato facilmente il tentativo di accesso ad un file temporaneo.

Pur essendo semplice, questo tipo di attacco è paragonabile per pericolosità ad altri ben più complessi. Di fatto, la sicurezza della nostra azienda può essere messa a rischio dalla semplice creazione di un file all’interno di una cartella condivisa.

Lascia un commento

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

*

Accedi

Registrati | Password dimenticata?