Skip to main content

Cos'è un code Shell?

Shellcode è la sequenza del codice macchina o le istruzioni eseguibili, che viene iniettata nella memoria dei computer con l'intenzione di assumere il controllo di un programma in esecuzione.In tale attacco, uno dei passaggi è quello di ottenere il controllo del contatore del programma, che identifica l'istruzione successiva da eseguire.Il flusso del programma può quindi essere reindirizzato al codice inserito.Il codice macchina invadente è chiamato payload dell'attacco ed è l'elemento comunemente indicato dal termine code Shell.Questo metodo è stato spesso utilizzato per concedere un accesso per l'attaccante aprendo una shell del comando del sistema operativo, quindi gli attacchi di iniezione del codice in generale sono diventati noti come codifica.di dati di input e gestisce gli errori di memoria.Gli sviluppatori di software di solito possono evitare questa minaccia definendo rigorosamente i dati di input e rifiutando valori impropri.Se non controllati, i valori che necessitano di più spazio di archiviazione rispetto alla memoria assegnati per quel valore potrebbero essere accettati.Ciò provoca una culatta di sicurezza chiamata overflow del buffer, in cui parte dei dati viene scritta in posizioni di memoria adiacenti ai valori assegnati.Se manipolata attentamente, questa anomalia può consentire l'introduzione di codice invadente.

Shellcode è normalmente scritto in un linguaggio di programmazione con accesso al sistema di basso livello come assembly, C o C ++.A seconda della vulnerabilità mirata, tuttavia, lo stesso risultato potrebbe essere realizzato inserendo il codice per un linguaggio di scripting interpretato, come Perl, o bytecode per una macchina virtuale, come Java.Il codice può essere impiantato prima, durante o dopo il dirottamento del contatore del programma.Pertanto, il codice invadente può essere contenuto in un file sulla macchina target o trasmesso su una connessione di rete in tempo reale.

Gli exploit di code locali sono progettati per dare un controllo degli aggressori su una macchina a cui ha accesso fisico.Un obiettivo in questo caso potrebbe essere quello di creare un account con i privilegi di amministratore, ad esempio.Allo stesso modo, se un processo in esecuzione ha un livello di privilegio elevato, un exploit di successo concederebbe temporaneamente lo stesso livello di accesso all'intruso.

I processi in esecuzione su una macchina remota possono essere sfruttati utilizzando protocolli di rete standard per comunicare con il computer di destinazione.Connect-Back Shellcode indica alla macchina di destinazione di avviare una connessione al computer intrusi.Se l'intruso inizia la connessione, il codice viene chiamato bindshell, in quanto tenta di assumere il controllo di una connessione di rete chiamata porta sulla macchina remota.Il metodo Connect-Back è più ampiamente utilizzato, poiché i firewall raramente vietano le connessioni in uscita.