Shellcode: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m typo |
tradotto da en.wiki |
||
Riga 1:
Uno '''shellcode''' è un programma in linguaggio [[assembly]] che tradizionalmente esegue una [[shell]], come la [[shell Unix]] '/bin/sh' oppure la shell [[command.com]] sui [[sistema operativo|sistemi operativi]] [[DOS]] e [[Microsoft Windows]]. Uno shellcode può essere utilizzato per sfruttare un [[exploit]], consentendo ad un [[hacker]] o un [[cracker]] di acquisire l'accesso alla [[riga di comando]] di un [[computer]].
{{stub informatica}}▼
==Come funziona uno shellcode==
Gli shellcode sono tipicamente inseriti nella memoria del computer stfruttando [[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===
I cracker che scrivono gli shellcode utilizzano spesso tecniche per nascondere il loro attacco. Essi provano generalmente ad aggirare il modo in cui i gli [[Intrusion Detection System]]s (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 auto-modificante]], [[codice polimorfico]] e [[codice alfanumerico]].
==Vedi anche==
* [[Buffer overflow]]
* [[Heap overflow]]
* [[Assembly]]
==Collegamenti esterni==
* http://www.phrack.org/phrack/49/P49-14 L'introduzione canonica ai [[buffer overflow]] e la creazione di shellcode.
* http://www.shellcode.com.ar/docz/bof/Writing_shellcode.html Un'introduzione allo sviluppo di shellcode
* http://www.metasploit.com/shellcode.html Contiene esempi di shellcode [[x86]] e non-[[x86]] e un interfaccia on-line per la generazione e la codifica automatica di shellcode.
* http://www.shellcode.org/ Contiene esempi di shellcode [[x86]] e non-[[x86]].
* http://www.vividmachines.com/shellcode/shellcode.html Tutorial sugli shellcode in [[windows]] e [[linux]] con esempi passo-passo.
[[en:Shellcode]]▼
[[fr:Shellcode]]
[[de:Shellcode]]
▲[[en:Shellcode]]
[[es:Shellcode]]
[[pl:Shellcode]]
|