Shellcode: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+ references
FrescoBot (discussione | contributi)
m Bot: accenti e modifiche minori
Riga 56:
 
=== Percent encoding ===
Gli exploit che hanno come obbiettivo i browser, codificano comunemente lo shellcode in una stringa JavaScript usando la notazione di [[percent-encoding]] o URL-encoding, tramite caratteri di escape “\uXXXX” o mediante [[entity]]. Alcuni exploit fanno un'ulteriore offuscamento dello shellcode codificato tramite stringhe per evitare di essere rilevati da strumenti di [[intrusion detection system|IDS]].
Per esempio, sul una architettura [[IA-32]], due istruzioni di <code>[[NOP]]</code> (no-operation) prima di essere codificate hanno questa forma.
 
Riga 82:
In certe circostanze, un processo bersaglio potrebbe filtrare tutti i bytes provenienti dallo shellcode inserito che non sono stampabili o alfanumerici. In queste condizioni, il range di istruzioni che possono essere utilizzate per scrivere uno shellcode diventano molto limitate. Una soluzione a questo problema è stata pubblicata da Rix in [[Phrack]] 57<ref>{{Cita web|url=http://www.phrack.org/issues.html?issue=57&id=15#article |cognome=Rix
|titolo=Writing ia32 alphanumeric shellcodes
|editore=Phrack |data=8 novembre 2001 |accesso=29 febbraio 2008 }}</ref> dove viene mostrato come è possibile convertire ogni tipo di codice in uno alfanumerico. Una tecnica molto utilizzata è quella di creare codice automodificante, perché questo permette al codice di modificare i propri bytes per includerne altri che non rientrano fra quelli ammissibili e di espandere il range di istruzioni utilizzabili. Con questo tipo di trucco, un decoder auto-modificante può essere creato inizialmente utilizzando solamente bytes compresi nell'intervallo ammissibile. Quando lo shellcode in uscita va in esecuzione, il decoder può modificare il proprio codice per essere in grado di utilizzare ogni istruzione richiesta per consentirne il corretto funzionamento e contemporaneamente continuare a decodificare lo shellcode originale. Dopo avere fatto la decodifica, il decoder trasferisce il controllo allo shellcode, in modo tale che possa essere eseguito normalmente. E'È stato mostrato come è possibile creare shellcode di arbitraria complessità che somigliano a normale testo inglese.<ref>{{Cita web|url=http://www.cs.jhu.edu/~sam/ccs243-mason.pdf |cognome=Mason |nome=Joshua |autore2=Small, Sam |autore3=Monrose, Fabian |autore4= MacManus, Greg
|titolo=English Shellcode
|data=November 2009 |accesso=10 gennaio 2010 }}</ref>