Shellcode: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m apostrofo tipografico |
|||
Riga 3:
== Tipi di shellcode ==
Esistono due diversi tipi di shellcode, locale e remoto. La distinzione dipende dal tipo di controllo che
=== Locale ===
Uno shellcode locale è utilizzato da un attaccante che possiede un accesso limitato alla macchina, ma che sfruttando una vulnerabilità di un processo con privilegi più elevati, per esempio un buffer overflow, può ottenerne gli stessi privilegi se
=== Remoto ===
Lo shellcode remoto è invece utilizzato quando un attaccante vuole sfruttare una vulnerabilità di un processo di
Si possono classificare ulteriori distinzioni in base al metodo con cui la connessione viene stabilita. Se è lo shellcode stesso che può stabilire la connessione, questo viene chiamato "reverse shell" o ''connect-back'' shellcode, perché lo shellcode in esecuzione sulla macchina remota si connette alla macchina
Lo shellcode può riutilizzare questa connessione per comunicare con
|titolo=Shellcode/Socket-reuse
|cognome=BHA |data=6 giugno 2013 |accesso=7 giugno 2013 }}</ref>
Si può utilizzare un [[firewall]] per identificare le connessioni in uscita effettuate da una connect-back shellcode e il tentativo di connessione in ingresso da parte di una bindshell.
Il firewall può fornire una protezione aggiuntiva contro un attaccante, anche se il sistema è vulnerabile, impedendo in maniera preventiva di ottenere
=== Downloand and execute ===
Download and execute è un tipo di shellcode remoto che effettua un [[download]] ed esegue una qualche forma di malware sul sistema bersaglio. Questo tipo di shellcode non crea una shell, ma istruisce la macchina di scaricare un certo file eseguibile dalla rete, salvarlo su disco e poi eseguirlo. Al giorno
|titolo=Download and LoadLibrary shellcode released
|cognome=SkyLined |data=11 gennaio 2010 |accesso=19 gennaio 2010 }}</ref><ref>{{Cita web|url=http://code.google.com/p/w32-dl-loadlib-shellcode/
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
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
|titolo=English Shellcode
|data=November 2009 |accesso=10 gennaio 2010 }}</ref>
Riga 88:
=== Shellcode a prova di caratteri Unicode ===
Molti programmi moderni utilizzano la codifica di stringhe in formato Unicode per permettere
|titolo=Building IA32 'Unicode-Proof' Shellcodes
|editore=Phrack |data=13 agosto 2003 |accesso=29 febbraio 2008 }}</ref> che è possibile scrivere shellcode che possono eseguire correttamente anche dopo questa trasformazione. Esistono programmi in grado di modificare automaticamente ogni shellcode in uno codificato mediante UTF-16 e sono basati sullo stesso principio di un decoder automodificante che decodifica lo shellcode originale.
|