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%