Shellcode

Da Wikipedia, l'enciclopedia libera.

Uno shellcode è un programma in linguaggio assembly che tradizionalmente esegue una shell, come la shell Unix '/bin/sh' oppure la shell command.com sui sistemi operativi DOS e Microsoft Windows. Uno shellcode può essere utilizzato per sfruttare un bug mediante un exploit, consentendo ad un hacker o un cracker di acquisire l'accesso alla riga di comando di un computer, o più in generale di eseguire codice arbitrario.

Come funziona uno shellcode[modifica | modifica sorgente]

Gli shellcode sono tipicamente inseriti nella memoria del computer sfruttando buffer overflow nello stack e nell'heap, o tramite un format string attack. L'esecuzione dello shellcode può essere ottenuta sovrascrivendo l'indirizzo di ritorno dello stack con l'indirizzo dello shellcode. In questo modo quando la subroutine prova a ritornare al chiamante, ritorna invece al codice dello shellcode che apre una riga di comando che può essere usata dal cracker.

Scoprire l'inserimento di shellcode[modifica | modifica sorgente]

I cracker che scrivono gli shellcode utilizzano spesso tecniche per nascondere il loro attacco. Essi provano generalmente ad aggirare il modo in cui gli Intrusion Detection Systems (IDS) riconoscono un attacco in arrivo. Un tipico IDS di solito cerca in tutti i pacchetti in arrivo gli spezzoni di codice tipici degli shellcode (spesso un grande array di istruzioni NOP); se vengono trovati il pacchetto viene scartato prima di arrivare all'applicazione cui è destinato. Il punto debole degli IDS è che non possono fare delle ricerche effettivamente buone poiché richiederebbe troppo tempo, rallentando così la connessione ad Internet.

Gli shellcode contengono spesso una stringa con il nome di una shell. Tutti i pacchetti in arrivo che contengono una stringa del genere sono considerati abbastanza sospetti dal punto di vista dell'IDS. Inoltre, alcune applicazioni non accettano input non-alfanumerici (ossia, non accettano nient'altro che i caratteri a-z, A-Z, 0-9, e pochi altri).

Per aggirare questo tipo di misure anti-intrusione, i cracker fanno a volte uso di crittazione, codice automodificante, codice polimorfico e codice alfanumerico.

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

Sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di Sicurezza informatica