
wsb-detect permite que você detecte se está executando no Windows Sandbox ("WSB")
wsb-detect permite que você detecte se está executando no Windows Sandbox ("WSB"). A sandbox é usada pelo Windows Defender para análise dinâmica, e comumente manualmente por analistas de segurança e afins. No final de 2019, a Microsoft introduziu um novo recurso chamado Windows Sandbox (WSB para abreviar). As técnicas usadas para identificar WSB estão descritas abaixo, na seção de técnicas. Sinta-se à vontade para enviar um pull request se tiver ideias de identificação 🎉. Tenho brincado com isso de vez em quando, em breve terei mais sobre o Windows Sandbox.
O Windows Sandbox permite que você crie rapidamente, em menos de 15 segundos, uma Máquina Virtual descartável baseada em Hyper-V com todas as qualidades que uma VM familiar teria, como compartilhamento de área de transferência, mapeamento de diretórios, etc. A sandbox também é a base do Microsoft Defender Application Guard (WDAG), para análise dinâmica em hosts habilitados para Hyper-V e pode ser ativada em qualquer máquina Windows 10 Pro ou Enterprise. Não é particularmente interessante, mas pode ser útil no desenvolvimento de implantes. Agradecimentos ao meu amigo Jonas L pela orientação quando eu estava explorando os detalhes internos da sandbox (mais novidades em breve).
O cabeçalho detect.h exporta todas as funções que podem ser combinadas para detectar 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_procVerifica se CExecSvc.exe está presente, que é o serviço de execução de contêiner, lidando com grande parte do trabalho pesado internamente.
wsb_detect_timeA imagem da sandbox parece ter sido criada em Saturday, December 7, 2019, 9:14:52 AM - isso é por volta da época em que o Windows Sandbox foi lançado ao público. Esta verificação cruza referências do timestamp de criação no driver mountmgr.
wsb_detect_usernameEste método verifica se o nome de usuário atual é WDAGUtilityUserAccount, a conta usada por padrão na sandbox.
wsb_detect_suffixEste método usa GetAdaptersAddresses, percorre a lista de adaptadores e compara o sufixo DNS com mshome.net - que é usado por padrão na sandbox.
wsb_detect_devVerifica se o dispositivo bruto \\.\GLOBALROOT\device\vmsmb pode ser aberto, que é usado para comunicação com o host via SMB.
wsb_detect_cmdNa inicialização, procura sob a chave RunOnce em HKEY_LOCAL_MACHINE por um comando que define a senha para nunca expirar.
wsb_detect_genuineUm método mais genérico quando se trata de detecção de sandbox, no entanto, pelos testes, o Windows não parece ser verificado como legítimo nas VMs.
Se quiser entrar em contato comigo mais rapidamente, sinta-se à vontade para me contatar pelo Twitter ou e-mail. Além disso, é possível no host detectar se a sandbox está em execução, verificando se você pode criar um mutex chamado WindowsSandboxMutex. Isso limita a sandbox a uma máquina virtual por host, no entanto, você pode liberar esse mutex simplesmente duplicando o handle e chamando ReleaseMutex - viola, você pode ter várias instâncias.
