Come funzionano gli exploit di programmi eseguibili autonomi, quando si considera la memoria virtuale?

4

La mia comprensione della memoria virtuale è che il sistema operativo consente a ciascun processo di accedere all'intero pool di memoria e crea questa illusione mediante il paging.

Di conseguenza, un programma può vedere solo la propria memoria e non può vedere la vera memoria di sistema, e certamente non lo spazio di memoria di altre applicazioni.

Come funzionano gli exploit come i buffer overflow (quando non c'è input per il programma), se non riescono a vedere al di fuori della propria memoria?

Sto parlando del tipo di exploit che compilate e che risultano in un eseguibile che sfrutta un demone (e non passando input appositamente predisposti attraverso campi di input umani).

    
posta Tim Matheson 05.03.2016 - 14:27
fonte

2 risposte

1

I'm talking about the type of exploits that you compile and that result in an executable that exploits a daemon (and not by passing specially crafted input through human input fields).

Lo fanno passando l'input appositamente predisposto attraverso campi di input non umani. Un programma che fa qualcosa di utile ha bisogno di interagire con altri programmi in qualche modo, sia attraverso i protocolli di rete, attraverso i protocolli di comunicazione interprocesso, leggendo e scrivendo file, ecc. Il programma dannoso usa qualsiasi metodo di interazione utilizzato dal demone e lo invia appositamente input elaborato. Come nel caso dell'input degli umani, il demone analizza l'input. A causa del bug nel demone che rende possibile l'exploit (la vulnerabilità), questo input non viene elaborato correttamente, ma porta invece all'esecuzione del payload (il codice "utile" contenuto nell'exploit).

Se ci pensi, i campi di input umani passano attraverso i programmi intermedi. Quando si sfrutta un'applicazione Web, ad esempio, l'exploit viene recapitato attraverso il livello di rete del sistema operativo remoto, al server Web, all'applicazione. Gli exploit non vengono quasi mai recapitati da una tastiera umana, e anche se lo sono, l'exploit viene fornito tramite il driver della tastiera del sistema operativo, al sottosistema GUI se ce n'è uno e così via.

    
risposta data 08.05.2016 - 00:03
fonte
1

Un buffer overflow è un tipo di vulnerabilità non un exploit. Si riverserà nella memoria virtuale del processo che lo sta eseguendo.

"Un processo non può accedere alla memoria di un altro processo". Questo dipende interamente dal sistema operativo. In Windows / Linux / Android questa è una dichiarazione vera. Esistono molti controlli di accesso per impedire a un processo di manomettere la memoria a cui non dovrebbe aver bisogno di accedere. Tuttavia, molti sistemi incorporati consentiranno a qualsiasi processo di scrivere su qualsiasi porzione di memoria.

Un daemon è un servizio che può essere attivato da un probe esterno. Se esiste una vulnerabilità in un daemon, il file binario dannoso può semplicemente falsificare un probe che attiverà la vulnerabilità. I buffer con codifica hard possono essere utilizzati per attivarlo mentre viene utilizzato un codice shell hardcoded per sfruttare la vulnerabilità. Se il daemon viene sfruttato, viene eseguito il codice della shell per ottenere l'esecuzione. Il demone non ha più il controllo del codice che sta girando; il buffer di input dannoso ora ha il controllo. E poiché il daemon ha elaborato i dati di input, il buffer di input dannoso è in esecuzione nel contesto del processo daemon.

Perché un binario dannoso potrebbe sfruttare un servizio? In genere sarebbe di ottenere privilegi di livello superiore. Il binario dannoso potrebbe essere in grado di essere eseguito con privilegi di basso livello e quindi attraverso il servizio ottenere privilegi amministrativi. Questo può essere usato per assicurare che persista attraverso i riavvii o tentativi di eludere i programmi di sicurezza personale.

    
risposta data 07.03.2016 - 19:06
fonte

Leggi altre domande sui tag