| Indice |
|---|
| Structured Excepition Handling ovvero SEH |
| SEH frames |
| SEH in una applicazione multithread |
| Exploit tramite SEH |
| Eliminare la terminazione della applicazione |
| Tutte le pagine |
Utilizzando la gestione delle eccezioni si potrebbe far eseguire del codice esterno all'applicazione. Infatti per chi conosce il problema degli overflow, con essi è possibile scrivere del codice nella memoria dello stack, ma la cosa più difficile è il far eseguire il codice introdotto.
Come abbiamo detto a tal scopo si può sfruttare la gestione delle eccezioni.
Il primo metodo consiste nel sovrascrivere un frame SEH, modificandone l'indirizzo del gestore (handler), in questo modo al verificarsi della eccezione il controllo passerebbe all'eventuale codice inserito ad arte. Quindi un hacker dovrebbe fare 2 cose:
- Inserire nella memoria uno shellcode.
- Modificare il puntatore al gestore della eccezione in modo che il controllo passi al codice inserito e non al vero gestore.
- Provocare una eccezione.
A tal fine potrebbe utilizzare un buffer overflow che dovrà scrivere e sovrascrivere le parti di memoria dello stack.
Un secondo metodo invece consiste nell'inserimento di un nuovo SEH frame. Chi agisce ovvero chi ha il controllo è sempre l'applicazione che è in esecuzione, quindi come fare a farle inserire un nuovo frame??? Vediamo di spiegarlo brevemente. L'indirizzo del primo frame è possibile ricavarlo sempre alla stessa maniera, infatti è la prima DWORD della tabella TIB, che sta all'indirizzo contenuto in FS:[0].
Quindi sovrascrivendo il contenuto della memoria a questo indirizzo ci si può creare un nuovo frame ad hoc.





