Gli exploit sono dipendenti dalla piattaforma?

11

Esaminare panoramica dell'ultimo exploit di IE pubblicato , ho notato quello che penso sia il montaggio. Non so nulla sullo sviluppo degli exploit, ma so qualcosa sull'assemblaggio. Vedendo quel codice assembly, significa che sfrutta architetture specifiche per target su sistemi operativi specifici?

Come in, significa che la vulnerabilità di IE deve essere sviluppata IN ASSEMBLAGGIO una volta per ogni sistema operativo (XP, Vista, 7, 8), raddoppiata in base a 32/64 bit, quindi raddoppia di nuovo in base all'ordine dei byte?

    
posta user2738698 28.04.2014 - 18:03
fonte

4 risposte

15

Sì, la maggior parte degli exploit dipende dalla piattaforma. Ci sono dettagli.

Ad esempio, se un utente malintenzionato si rivolge a Internet Explorer, si rivolge a Sistemi Windows . La maggior parte dei sistemi Windows funziona su x86. Inoltre, su Windows fino a 7, l'IE predefinito è la versione a 32 bit, anche se il sistema operativo è Windows a 64 bit. Inoltre, a livello di assembly, XP, Vista e 7 sono molto simili (in effetti, possono eseguire le stesse applicazioni, quindi, dal punto di vista delle applicazioni, le cose non cambiano molto).

Ciò significa che una singola versione di exploit (x86 a 32 bit, per "Windows") funzionerà già per la maggior parte dei casi. Un attaccante laborioso penserà anche a una versione a 64 bit per Windows 8 o ai (pochissimi) utenti con un sistema operativo pre-8 a 64 bit che esegue l'IE a 64 bit. Un attaccante molto industrioso proverà a creare una versione ARM per Surface RT .

Tutte queste piattaforme sono little-endian. IE per altre CPU è morto da un po 'di tempo (ho usato la versione Sparc / Solaris nel 2000 o giù di lì, ma era una versione 5.x).

Il punto importante è che gli aggressori non devono fare molta assicurazione della qualità. Non è un problema per l'attaccante se ciò che invia a un bersaglio non funzionerebbe perfettamente su altre macchine che non sta attualmente bersagliando.

    
risposta data 28.04.2014 - 18:22
fonte
3

Gli exploit dipendono dalla piattaforma poiché ogni piattaforma può avere un diverso modo di gestire il layout della memoria e l'esecuzione del processo. Ad esempio, l'esecuzione di un exploit su WinXP sarà relativamente più semplice piuttosto che su altre versioni recenti di Windows. Parlando in particolare degli exploit di IE, ha più a che fare con la ricerca di vulnerabilità in alcune delle funzioni del browser o delle DLL e sfruttare tali vulnerabilità per aggirare i meccanismi di sicurezza del sistema operativo.

    
risposta data 28.04.2014 - 20:19
fonte
3

Are exploits platform dependent?

Sì.

As in, does that mean that the IE vulnerability needs to be developed IN ASSEMBLY once for each OS( XP, Vista, 7, 8 ), doubled based on 32/64 bit, then doubled again based on byte order?

No.

L'uso dell'assembly non lo rende più dipendente dalla piattaforma. È solo come dipendente dalla piattaforma come sarebbe se fosse scritto in C, (anche se per la maggior parte degli scopi C rende molto più facile indirizzare quelle piattaforme diverse).

La pagina che hai collegato non indica quali piattaforme l'exploit ha come target e mostra solo il codice x86. Se si rivolge anche a x64, sono ancora solo due piattaforme: x86 Windows e x64 Windows, e anche per quelle due il codice sarebbe in gran parte isomorfo (simile). Il semplice fatto che abbia assembly in esso non esplode improvvisamente la complessità di supportare diverse edizioni di Windows che girano sulla stessa architettura della CPU.

(Giusto per capire: l'assembly portatile può essere scritto e compilato una volta, in modo che lo stesso blob di codice macchina venga eseguito sotto tutti i sistemi operativi Windows, OS X, Linux e no , sulla stessa architettura della CPU: in questo modo, l'assembly è less dipendente dalla piattaforma rispetto ad altri linguaggi, poiché richiede meno di una piattaforma.I formati di file eseguibili standard che contengono il codice macchina sono ancora OS-specifico, tuttavia, ad esempio OS X non saprà come caricare un exe di Windows, anche se il codice macchina interno potrebbe essere eseguito se fosse caricato.)

L'ordine dei byte non è un problema come x86 & x64 sono puramente little endian.

Si noti inoltre che l'assembly che si sta vedendo è un smontaggio , quindi non è stato necessariamente scritto in assembly; potrebbe essere stato scritto in quasi tutte le lingue. Dato che si tratta di un exploit, e progettato per fare cose strane ed extralinguistiche, sarebbe stato più facile scrivere le parti di esso nell'assemblaggio stesso, e alcuni potrebbero essere stati scritti in modo più semplice in C, e alcuni potrebbero essere stati avviati in C, disassemblati, e adattato nell'assemblea.

Quindi la risposta breve è che supportare diverse versioni di Windows nell'exploit non è così difficile come lo si immagina.

    
risposta data 29.04.2014 - 15:33
fonte
2

È possibile avere un exploit tra browser o multipiattaforma. Dipenderà dalle librerie, dai framework e dal tipo di exploit.

La maggior parte degli exploit si rivolge a una piattaforma specifica, una versione specifica, ecc. Un exploit è un attacco alla logica, quindi potrebbe essere possibile scrivere codice una volta che funzionerà su architetture basate sulla logica, tuttavia in alcuni casi potresti dover scegliere architetture più specifiche.

ad es., si tratta di sfruttare l'ottimizzazione del compilatore o di saltare a un'istruzione diversa.

    
risposta data 28.04.2014 - 18:16
fonte

Leggi altre domande sui tag