Shellcode: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Correzione ortografica |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. |
||
(Una versione intermedia di un altro utente non mostrate) | |||
Riga 22:
==== Download 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 d'oggi, è comunemente utilizzato negli attacchi [[drive-by download]], quando una vittima visita un sito malevolo che cerca di avviare un download e di eseguire una shellcode per installare software sulla macchina vittima. Una variazione di questo tipo di shellcode è “download and loads a library”.<ref>{{Cita web |url=http://skypher.com/index.php/2010/01/11/download-and-loadlibrary-shellcode-released/ |titolo=Download and LoadLibrary shellcode released |cognome=SkyLined |data=11 gennaio 2010 |accesso=19 gennaio 2010 |urlmorto=sì |urlarchivio=https://web.archive.org/web/20100123014637/http://skypher.com/index.php/2010/01/11/download-and-loadlibrary-shellcode-released/ |dataarchivio=23 gennaio 2010 }}</ref><ref>{{Cita web|url=https://code.google.com/p/w32-dl-loadlib-shellcode/
|titolo=Download and LoadLibrary shellcode for x86 Windows
|cognome=SkyLined |data=11 gennaio 2010 |accesso=19 gennaio 2010 }}</ref> I vantaggi di questa tecnica è che il codice dello shellcode può essere più piccolo, non richiede la creazione di un nuovo processo sulla macchina bersaglio e che lo shellcode non ha bisogno di implementare il codice per la pulizia del processo bersagliato, ma questo può essere effettuato da una libreria caricata all'interno del processo.
Riga 54:
===== Percent encoding =====
Gli exploit che hanno come obiettivo 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 (informatica)|NOP]]</code> (no-operation) prima di essere codificate hanno questa forma.
Riga 71:
Molti shellcode vengono scritti senza utilizzare il bytes [[null]], perché sono progettati per essere inseriti nel processo bersaglio attraverso una stringa null-terminata. Quando una stringa null-terminata viene copiata, la copia includerà il primo [[carattere null]], ma i bytes successivi a questo non verranno processati. Quando lo shellcode che contiene il null viene inserito in questa maniera, verrà inserita solo una parte dello shellcode non rendendolo in grado di eseguire successivamente.
Per produrre uno shellcode libero da [[null]] partendo da uno che contiene dei bytes null, possono essere sostituite le istruzioni macchina che contengono gli zeri con istruzioni che producono lo stesso effetto ma che sono prive di bytes null. Per esempio su una architettura [[IA-32]] si potrebbe eseguire questa sostituzione:
B8 01000000
questa istruzione contiene zeri come parte del literal (1 viene espanso come 0x000000001) con queste istruzioni:
33C0 [[XOR (istruzione)|XOR]] EAX,EAX // Imposta il registro EAX a 0x000000000
|