
wsb-detect ti permette di rilevare se stai eseguendo in Windows Sandbox ("WSB")
wsb-detect ti permette di rilevare se sei in esecuzione in Windows Sandbox ("WSB"). La sandbox viene utilizzata da Windows Defender per l'analisi dinamica, e comunemente manualmente dagli analisti di sicurezza e simili. Alla fine del 2019, Microsoft ha introdotto una nuova funzionalità chiamata Windows Sandbox (WSB in breve). Le tecniche utilizzate per identificare WSB sono descritte di seguito, nella sezione tecniche. Sentiti libero di inviare una pull request se hai idee per l'identificazione 🎉. Ci ho giocato ogni tanto, e presto avrò altro su Windows Sandbox.
Windows Sandbox ti permette di creare rapidamente, entro 15 secondi, una macchina virtuale usa e getta basata su Hyper-V con tutte le qualità di una VM familiare come la condivisione degli appunti, la mappatura delle directory, ecc. La sandbox è anche la base per Microsoft Defender Application Guard (WDAG), per l'analisi dinamica su host abilitati a Hyper-V e può essere attivata su qualsiasi macchina Windows 10 Pro o Enterprise. Non è particolarmente interessante, ma potrebbe comunque rivelarsi utile nello sviluppo di implant. Ringrazio il mio amico Jonas L per la guida mentre esploravo gli internals della sandbox (presto altri dettagli su questo).
Il header detect.h esporta tutte le funzioni che possono essere combinate per rilevare se
#include <stdio.h>
#include "detect.h"
int main(int argc, char** argv)
{
// example vmsmb & username check
if (wsb_detect_dev() || wsb_detect_username())
{
puts("We're in Windows Sandbox!");
return 0;
}
return 1;
}
wsb_detect_procControlla la presenza di CExecSvc.exe, che è il servizio di esecuzione del contenitore, gestendo gran parte del lavoro pesante internamente.
wsb_detect_timeL'immagine per la sandbox sembra essere stata creata il Saturday, December 7, 2019, 9:14:52 AM - questo è più o meno il momento in cui Windows Sandbox è stato rilasciato al pubblico. Questo controllo incrocia il timestamp di creazione sul driver mountmgr.
wsb_detect_usernameQuesto metodo controlla se il nome utente corrente è WDAGUtilityUserAccount, l'account utilizzato per impostazione predefinita nella sandbox.
wsb_detect_suffixQuesto metodo utilizza GetAdaptersAddresses, esamina l'elenco degli adattatori e confronta il suffisso DNS con mshome.net - che è utilizzato per impostazione predefinita nella sandbox.
wsb_detect_devControlla se il dispositivo raw \\.\GLOBALROOT\device\vmsmb può essere aperto, utilizzato per la comunicazione con l'host tramite SMB.
wsb_detect_cmdAll'avvio, cerca sotto la chiave RunOnce in HKEY_LOCAL_MACHINE un comando che imposta la password per non scadere mai.
wsb_detect_genuineUn metodo più generico per quanto riguarda il rilevamento della sandbox, tuttavia dai test sembra che Windows non sia verificato come legittimo nelle VM.
Se desideri contattarmi più velocemente, sentiti libero di contattarmi su Twitter o e-mail. Inoltre, è possibile sull'host rilevare se la sandbox è in esecuzione, controllando se si può creare un mutex chiamato WindowsSandboxMutex. Questo limita la sandbox a una macchina virtuale per host, tuttavia è possibile rilasciare questo mutex semplicemente duplicando l'handle e chiamando ReleaseMutex - viola, puoi avere più istanze.
