Driver manovrabile da sandbox

Salve a tutti.
Ho avuto modo di provare la sandbox e devo dire che è ottima, tranne per un paio di cose:
• virtkiosk.exe può essere terminato dalle applicazioni nella sandbox, e si possono verificare conseguenze piuttosto strane, come la scomparsa della barra in basso (con conseguente impossibilità nel ritorno in Windows), oppure il ritorno immediato all’ambiente Windows;
• è possibile creare servizi (in particolare mi riferisco ai driver) nella sandbox, il che non influisce sull’ambiente reale perché nell’eseguirli viene restituito Accesso negato, così come nell’arrestarli. Tuttavia processi come Cheat Engine e Process Explorer sono in grado di aprire handle per comunicare con i loro driver che, lavorando a livello kernel, non sono più sotto il controllo di Defense+ e possono fare di tutto, compresi hook di funzioni come NtOpenProcess e ZwOpenProcess (possono arrivare a creare forme di autodifesa). Tuttavia ciò non costituisce un problema fino a che un virus creato appositamente non sfrutti handle verso driver come PROCEXP152 o CEDRIVER60, driver che non dovrebbero essere maligni, fingengosi ad esempio Process Explorer o Cheat Engine. Se i driver non fanno controlli sul processo richiedente, la situazione rischia di degenerare.
Cheat Engine è, in particolare, in grado di modificare e leggere la memoria di processi utilizzando un driver, mentre Process Explorer fa lo stesso ma per chiudere handle di altri processi e visualizzare, nelle versioni più recenti, anche lo stack a livello kernel. Se un virus eseguito tranquillamente nella sandbox sfrutta vulnerabilità in questi driver, che devono tuttavia essere avviati altrimenti gli risulterà impossibile, sarebbe in grado di avere accessi privilegiati alla memoria dei processi esterni ed interni alla sandbox e di chiudere handle di qualunque processo eccetto System (perché il driver di Process Explorer non riesce ancora a chiudere quelli di System). Ciò è in grado di bypassare persino l’autodifesa di Avira e di Comodo, riuscendo così a creare bug chiudendo tutti gli handle che riesce a individuare in processi quali quelli di Comodo e di Avira, che in poco tempo entrerebbero in crash lasciando temporaneamente il sistema non protetto.

Meno grave è il primo bug, che invece rischia di rendere inutilizzabile la sandbox con programmi che sono creati per verificare se sono o no nella sandbox, e se lo sono terminano entrambi i processi virtkiosk.exe passando all’ambiente Windows o facendo accadere strane cose…

Si può fare la prova, se si vuole, per quanto riguarda il secondo punto, ad esempio scaricando Process Explorer e avviandolo prima in esecuzione normale e poi in sandbox, premendo CTRL+H sarà possibile visualizzare una lista degli handle per il processo selezionato di sopra e anche chiuderli, fuori o dentro la sandbox. Il primo punto si può fare terminando, sempre con Process Explorer in sandbox, i processi virtkiosk.exe.

P.S.: quando dico “passando all’ambiente Windows” intendo dire che è come se si cambiasse utente, cioè si passa alle finestre dei programmi aperti normalmente, ma i programmi aperti nella sandbox risultano invisibili e sempre con privilegi limitati.
Secondo P.S.: le considerazioni riguardo alla “sandbox” sono valide per “Virtual Kiosk” nel primo punto, mentre le considerazioni del secondo dovrebbero essere valide per programmi eseguiti in sandbox con o senza Virtual Kiosk.

Aggiungo un file RAR contenente 9 screenshot in Virtual Kiosk come allegato.
Le descrizioni delle immagini:

• attachment-1.png: l’handle selezionato è quello incriminato, cioè quello utilizzato da Process Explorer per comunicare con il suo driver nonostante si trovi in sandbox.
• attachment-2.png: gli handle rossi sono stati appena chiusi da Process Explorer sfruttando il suo driver e comunicando con l’handle selezionato in attachment-1.png. Gli handle chiusi appartenevano ad avguard.exe, servizio del programma Avira Free Antivirus (autodifesa di Avira abilitata, abilitata anche quella avanzata; HIPS abilitato in modalità Sicuro).
• attachment-3.png: gli handle rossi sono stati appena chiusi da Process Explorer sfruttando il suo driver e comunicando sempre con l’handle selezionato in attachment-1.png, però questa volta gli handle appartenevano a cmdagent.exe (HIPS abilitato con protezione processo avanzata di Comodo abilitata).
• attachment-4.png: screenshot di una serie di comandi per creare, tentare di avviare ed eliminare nella sandbox un driver di tipo kernel (binPath fa riferimento ad un file inesistente). Viene utilizzata l’utility di sistema sc.exe. Il driver creato in sandbox, comunque, non dovrebbe esistere nell’ambiente reale, quindi in questo caso la sandbox si è rivelata efficace.
• attachment-5.png: impostazioni di Cheat Engine per sfruttare il suo driver per modificare la memoria degli altri processi, come Process Explorer fa con gli handle.
• attachment-6.png: esempio di ciò che Cheat Engine è stato in grado di fare in sandbox, la finestra a destra di Cheat Engine dimostra che si è agganciato a cmdagent.exe. La memoria su cui ho scritto in sandbox su un processo esterno (fra l’altro di sicurezza e protetto con l’autodifesa) è stata allocata, poiché l’autodifesa di cmdagent.exe è stata in grado di impedirmi di scrivere sulla sua memoria non allocata in modo tale da poter essere scritta (non Writable). La preoccupazione più grande è se un programma usi il driver di Cheat Engine per fare l’hook di funzioni kernel, come NtOpenProcess e ZwOpenProcess, compromettendo il funzionamento dell’intero sistema.
• attachment-7.png: all’indirizzo 83C5AB93 ho inserito un’istruzione ret (qui bisogna conoscere l’assembly), che in poche parole rappresenta un esempio banale di hook. Ho trasformato (dalla sandbox con il driver di Cheat Engine) l’istruzione “mov edi,edi” originale in “ret” seguito da “nop”. L’istruzione “ret” consiste nella fine della routine, perciò la routine viene interrotta senza fare alcunché.
• attachment-8.png: tentativo di terminare igfxtray.exe fallito con errore “Handle non valido.”, perché NtOpenProcess non ha restituito un handle valido, poiché la funzione è diventata praticamente inutile dopo l’hook (fatto da sandbox!).
• attachment-9.png: ripristinando il codice originale, questo è l’errore che si verifica (e che si verificava anche prima dell’hook) tentando di terminare lo stesso processo: “Accesso negato.”. Questo poiché il processo nell’immagine 8 e quello nella 9 coincidono e sono esterni alla sandbox, quindi protetti. Un esperto dell’assembly potrebbe rimuovere i limiti imposti dalla sandbox e persino l’autodifesa delle applicazioni Avira e Comodo. Da allora il virus può fare tutto quello che vuole senza servirsi del driver.

[b]EDIT: Informazioni richieste per postare correttamente un messaggio sul forum:

Ho installato Avira Free Antivirus con i seguenti dettagli ottenibili nella scheda “Informazioni sulla versione” della finestra “Informazioni su Avira Free Antivirus”, raggiungibile con il clic destro nell’icona di Avira e scegliendo “Informazioni su Avira Free Antivirus” dal menu contestuale.

Programma | Versione | Data
Versione del prodotto 13.0.0.3640 18/04/2013
Motore di ricerca 8.02.12.66 19/06/2013
File di definizione dei virus 7.11.85.170 20/06/2013
Control Center 13.06.00.1194 19/06/2013
Config Center 13.06.00.1246 19/06/2013
Luke Filewalker 13.06.00.1262 19/06/2013
Real-Time Protection 13.06.00.778 19/06/2013
Filtro 13.05.01.10 19/06/2013
Web Protection 13.06.07.1236 19/06/2013
Pianificatore 13.06.00.778 19/06/2013
Updater 13.06.14.1262 19/06/2013
Rootkits Protection 13.05.01.05 19/06/2013
Local Decider 13.06.02.1262 19/06/2013

Ho installato la versione di Comodo Firewall 6.2.282872.2847.
Le seguenti impostazioni di autoprotezione (o autodifesa) di Avira sono attivate:
• Proteggi i processi da una chiusura indesiderata;
• Protezione del processo avanzata;
• Proteggi i file e le voci di registrazione dalla manipolazione.
Inoltre anche l’opzione “Proteggi il file host di Windows da modifiche” di Avira è abilitata.
L’HIPS di Comodo è abilitato in modalità Sicuro, con l’opzione “Abilita la modalità di protezione avanzata (richiede un riavvio del sistema)” attiva.[/b]

Aspetto una risposta.

Riccardo

[attachment deleted by admin]