Ci sono due approcci, il quantitativo e il qualitativo.
Il quantitativo consiste nel confondere l'input con il driver sandboxing. Utilizza un framework fuzzing come Peach, Sulley o altro per eseguire il fuzz in input e cerca crash o operazioni sui file fuori dalla sandbox.
L'approccio qualitativo implica il reverse engineering e la comprensione del meccanismo di sandboxing. Quindi prova a combinare questa comprensione con le diverse funzionalità fornite da Windows e diversi livelli di privilegi che potrebbero avere altri componenti. La sandbox potrebbe limitare le operazioni di file e rete ma limiterà l'iniezione in un processo diverso?
Idee dello scenario:
- Manipolazione di altri processi e del sistema per scrivere all'esterno della sandbox
- Uso delle routine di sistema native
NtWriteFile e ZwWriteFile
- Caricamento driver e scrittura su dispositivi come
\Device\Harddisk4\Partition2\mydir\myfile.txt , \DosDevices\c:\path_to_file.txt , \Device\Tcp
- Caricamento di DLL con
rundll32.exe
- Meccanismi di aggancio sgancianti o confusi
- Uso di collegamenti simbolici per confondere la sandbox
- Uso di flussi di dati alternativi
fileinsandbox.txt:fileoutsidesandbox.txt
- Esecuzione di directory traversali
path\in\sandbox\..\..\..\outside.txt
- Utilizzo di variabili di ambiente come
%SystemRoot% , %WinDir% , %TEMP%