Protezione contro il sistema remoto compromesso a livello di codice binario

1

La mia comprensione (certamente incompleta) di un sistema remoto compromesso a livello di codice binario è approssimativamente:

  1. Una vulnerabilità del programma, come la mancata convalida dell'input, viene sfruttata per inserire lo shellcode esterno nel sistema di destinazione.
  2. Il flusso del programma viene deviato per eseguire lo shellcode, ad es. sovrascrivendo gli indirizzi di ritorno nello stack di chiamate.
  3. L'utente malintenzionato può ora eseguire codice arbitrario sul sistema di destinazione con i privilegi del processo compromesso.

Supponiamo che siano presenti meccanismi di protezione a livello di sistema, in particolare:

  • Tutti i segmenti di dati non sono eseguibili
  • Tutti i segmenti di codice sono contrassegnati come di sola lettura
  • Il codice è costruito con contrassegni indurenti, come protezione dello stack, controllo della dimensione dell'input, ecc.

In che modo è ancora possibile ottenere il controllo del processo di destinazione (tramite un attacco a livello di codice macchina) in queste condizioni? Come può essere eseguito lo shellcode quando i segmenti di codice non possono essere modificati e i segmenti di dati non possono essere eseguiti?

    
posta chwon 11.11.2016 - 20:24
fonte

0 risposte

Leggi altre domande sui tag