The Perfect Mousetrap - Un sistema sandbox può essere progettato in modo tale che sia identico a un computer reale? [duplicare]

17

Nel testare i file sospetti per malware, il metodo tipico è la ricerca di codice dannoso noto. Questo è il motivo per cui gli attacchi malware zero-day possono essere così pericolosi - il loro codice malevolo è precedentemente sconosciuto al software antivirus. La soluzione ideale è testare ogni file e programma in una sandbox prima che venga utilizzato, e questo è stato provato, ma per quanto ne so, appaiono in genere processi insoliti che possono essere rilevati da un mouse abbastanza intelligente. Il malware rileva che è in modalità sandbox e trattiene il comportamento malevolo per non essere scoperto.

La domanda è, può essere possibile e, cosa più importante, pratica costruire una sandbox identica a un vero computer, e quindi implementare nei sistemi operativi odierni (Windows, OS X, Linux, iOS, Android) un software che che lo usa per testare tutto prima che venga eseguito, o ancora meglio, lo usa come ambiente operativo per quel file?

    
posta TheEnvironmentalist 22.04.2015 - 09:19
fonte

5 risposte

17

Sì, può essere fatto in quanto (teoricamente) ogni "dispositivo informatico" è computazionalmente equivalente a tutti gli altri dispositivi informatici. Se sei interessato, consulta la tesi di Church-Turing .

Tuttavia la tua domanda è radicata nella pratica e in questo caso la risposta è "sì, ma costerebbe troppo". Lo sforzo nella virtualizzazione oggi mira ad accelerare il più possibile l'ambiente virtuale fino al punto in cui è abbastanza banale per rileva se stai eseguendo in una macchina virtuale. Ciò significa che qualsiasi tentativo di replica di un sistema che esegue il 100% di "nativi" è limitato dal numero di persone con lo stesso interesse.

In altre parole, c'è pochissimo interesse commerciale nel fare ciò che si sta mirando e il ROI sarebbe limitato solo ai pochi hobbisti e aziende che hanno un interesse controllato in materia. Quanto pagheresti per tale sistema? Quanto tempo puoi dedicare? Quante persone conosci che sono disposti a trascorrere anni in questo progetto?

Mentre ci sono sforzi per ricerca questo non ho ancora visto un sistema pienamente funzionante che non sia terribilmente lento . Ad esempio, Skype utilizza tecniche anti-debug che rilevano i rallentamenti (vedere diapositiva 30 di questa presentazione ). Sospetto che qualsiasi malware possa fare trucchi simili per misurare l'esecuzione su un server a tempo fisso e rilevare quando è in esecuzione in un emulatore (necessariamente lento).

Penso che un approccio diverso sarebbe più economico dal punto di vista economico: esegui il campione di malware su una macchina reale e osserva cosa succede. Quindi "ghost" il suo disco e la sua memoria e osserva le differenze con un campione identico, "pulito". In generale, potrebbe essere necessario meno tempo per lo sviluppo di un simulatore come quello che hai in mente.

    
risposta data 22.04.2015 - 11:33
fonte
7

In realtà la risposta di Lorenzo non è del tutto giusta. La tesi di Church-Turing ci fornisce solo un modello di calcolo, non può dirci nulla sulla virtualizzazione perché non si occupa di altri aspetti di una macchina.

Ma c'è un'analisi teorica per la capacità di una macchina di essere virtualizzata da Popek et al: link

Detto questo, le architetture attuali e, soprattutto, x86-64 NON soddisfano questi requisiti. Quindi la conclusione sarebbe, è purtroppo impossibile per le architetture di cpu attualmente in uso. Ma si potrebbe sempre pensare a nuove architetture di cpu ...

    
risposta data 22.04.2015 - 14:33
fonte
3

Metti un computer reale in un ambiente sandbox fisico. Il computer in sé non è una sandbox e non virtualizza nulla.

Hai bisogno di una directory attiva? Metti la directory attiva nell'ambiente sandbox.

Fai i test, verifica cosa è cambiato, controlla i log del computer e della rete.

Questo è più pratico della creazione di un sistema operativo sandbox che limita le normali funzioni hardware.

    
risposta data 22.04.2015 - 17:32
fonte
1

...practical, to build a sandbox that's identical to an actual computer... test every file and program in a sandbox before it is used...

Penso che questa sia la domanda sbagliata da porre. La vera sfida non è quella di costruire una sandbox che si comporta come un vero computer, ma che si comporta come un vero computer usato dall'utente mirato .

I malware attualmente utilizzano tecniche per rilevare la presenza di un utente, a volte anche di un utente specifico (attacchi mirati). Alcune possibili tecniche per i download drive-by basati sul web sono

  • Verifica se determinate posizioni su una pagina vengono cliccate o attendi qualche input visualizzando una sorta di captcha.
  • Verifica se alcune risorse sono memorizzate nella cache e altre no e quindi verifica la presenza di un browser effettivamente utilizzato da un essere umano per un po 'di tempo.
  • Verifica se l'utente ha effettuato l'accesso a Facebook, ha accesso ad alcuni siti Web interni specifici, risorse ecc.
risposta data 22.04.2015 - 20:20
fonte
0

Diamo un'altra occhiata a questa domanda: rilevare il malware esclusivamente sul comportamento è molto difficile --- non solo il malware può provare a rilevare se è in esecuzione in un ambiente virtualizzato, ma può (ad esempio) attendere un po 'di tempo prima di attivare il malware Comportamenti (un esempio di tipo correlato: qualche tempo fa un'estensione di Chrome che ha atteso 7 giorni prima di attivare attività dannose ha superato lo screening di Google processo per le estensioni chrome ).

La maggior parte degli antivirus ha già rilevato alcuni malware di comportamento, supponiamo che un programma malware attenda 5 minuti prima di provare a cancellare / partizione. L'antivirus che esegue l'analisi del comportamento può:

  • Esegui questo programma in sandbox per un paio di secondi e poi decidi che è OK.
  • Esegui questo programma è sandbox super veloce in cui il tempo passa molto velocemente (più veloce del tempo reale) --- ma questa sandbox sarebbe facile da rilevare contattando il server dell'ora.
  • Esegui questo (e ogni altro!) programma in sandbox per 5 minuti prima di eseguirlo su PC reale --- il che rende il computer inutilizzabile.
risposta data 22.04.2015 - 23:16
fonte