Un semplice esempio per mostrare l'uso della funzionalità di sicurezza Protezione esecuzione dati (DEP)

4

Sto trovando davvero difficile capire perché abbiamo bisogno di un DEP!

Microsoft dichiara questo su DEP:

The primary benefit of DEP is to help prevent code execution from data pages.

Typically, code is not executed from the default heap and the stack. Hardware-enforced DEP detects code that is running from these locations and raises an exception when execution occurs.

Software-enforced DEP can help prevent malicious code from taking advantage of exception-handling mechanisms in Windows.

Che cosa significa?

Puoi darmi un semplice esempio non di codice per questo!

    
posta Anirudha 27.06.2012 - 20:24
fonte

1 risposta

3

Hardware DEP takes advantage of the NX ("No Execute page protection", AMD specification) or XD ("Execute Disable", Intel specification) bit on DEP compatible CPU’s, and will mark certain parts of the memory (which should only contain data, such as the default heap, stack, memory pools) as non-executable.

When an attempt is made to execute code from a DEP protected data page, an access violation (STATUS_ACCESS_VIOLATION (0xc0000005)) will occur. In most cases, this will result in process termination (unhandled exception). As a result of this, when a developer decided he wants to allow code to run from a certain memory page, he will have to allocate the memory and mark it as executable.

http://www.corelan.be/index.php/2010/06/16/exploit-writing-tutorial-part-10-chaining-dep-with-rop-the-rubikstm-cube/#hwdep

Quando stai provando a reindirizzare il flusso del codice attraverso un exploit di buffer overflow, ecc., vuoi reindirizzare il flusso a uno shellcode / payload personalizzato che ti darà accesso remoto, ecc. al computer vittima.

Lo facciamo riscrivendo registri come EIP (Extended Instruction Pointer), ESP (Extended Stack Pointer), ecc. Con questa tecnologia si tenta di impedire il reindirizzamento del flusso di codice verso posizioni di memoria non autorizzate. Quindi, al fine di invocare la shell, avremmo bisogno di superare la violazione di accesso in teoria.

In sostanza i programmatori devono specificare posizioni di memoria che possono avere codice eseguibile, le altre posizioni hanno dati non eseguibili al momento del richiamo che causano un'eccezione di violazione di accesso.

Leggi di più sui suoi aspetti tecnici qui: link

    
risposta data 27.06.2012 - 21:38
fonte

Leggi altre domande sui tag