
Kit de Sandbox de Hardware

Kit de Sandbox de Hardware
Malware frequentemente emprega técnicas anti-VM, que podem variar em dificuldade de detecção e contra-ataque. Embora integrar medidas anti-detecção em nossos laboratórios seja uma opção frequentemente usada, também devemos considerar o uso de uma sandbox de hardware real, mesmo que isso pareça estranho. Aproveitando o incrível projeto PCILeech e o acesso DMA a hardware, XenoboxX fornece um conjunto de ferramentas para tarefas de análise, como despejar memória alocada dinamicamente e procurar IoCs. Essas ferramentas nos permitem injetar código em nível de kernel através de DMA, tornando a detecção significativamente mais desafiadora e dando uma nova perspectiva para a análise.
XenoboxX atualmente é focado no Windows 64 bits, mas no futuro poderá ser estendido para outras plataformas também.
A ferramenta foi apresentada no DEFCON 32 Demo Labs: aqui
Obviamente estamos falando de ambientes físicos, então:
instale a Placa DMA no PC alvo. Conecte a placa ao seu PC host
instale o PCILeech no seu PC host: se você não for desenvolver ou fazer modificações, pode apenas instalar os binários (acho que esta é a opção mais comum) disponíveis na página de releases
instale o XenoboxX no seu PC host: como no ponto anterior, você pode querer apenas os binários pré-compilados (na pasta pcileech)
injete o módulo PCILeech:
./pcileech kmdload -kmd WIN10_X64_3
isso retornará um endereço de memória que você usará para executar os shellcodes (ex 0x7ffff000)
execute os shellcodes XenoboxX:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
Atualmente XenoboxX tem 3 shellcodes wx64:
wx64_dumpalloc: anexa a um PID específico e despeja todas as alocações de memória feitas pelo processo. Se as flags de proteção de uma memória existente forem alteradas, a região é despejada novamente (às vezes malware troca proteções para evitar inspeções)wx64_memgrep: procura por strings definidas pelo usuário na memória alocada por um PID. Pode ser anexado por um tempo específico ao processo.wx64_strings: procura por todas as strings na memória alocada por um PID. Pode ser anexado por um tempo específico ao processo.Nota: como uma abordagem experimental, Xenobox atualmente evita hooks completamente, e todas as detecções são feitas através de polling. Obviamente isso tem algumas desvantagens, mas esta é uma escolha de design no momento, a fim de ser o mais furtivo possível.
Exemplo:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
-0 PID ao qual anexar em formato hexadecimal (obrigatório)-1 tempo de monitoramento do processo. Padrão definido como 0x20-s pasta de saída, onde os despejos de memória e o log serão salvosExemplo:
./pcileech wx64_memgrep -0 0x564 -1 0x80 -s "Hello, 123" -2 1 -kmd 0x7ffff000
-0 PID ao qual anexar em formato hexadecimal (obrigatório)-1 tempo de monitoramento do processo. Padrão definido como 0x20-2 pesquisar por string ASCII (0x0) ou WIDE (0x1). Padrão definido como 0x0-3 pesquisa sensível a maiúsculas (0x1) ou insensível (0x0). Pesquisa sensível é mais rápida. Padrão definido como 0x0-4 pesquisar apenas páginas de memória graváveis (0x0) ou todas (0x01). Padrão definido como 0x0-s string de pesquisa (entre aspas duplas)Exemplo:
./pcileech wx64_strings -0 0x19e0 -1 0x100 -3 0x15 -kmd 0x7ffff000
-0 PID ao qual anexar em formato hexadecimal (obrigatório)-1 tempo de monitoramento do processo. Padrão definido como 0x20-2 pesquisar por string ASCII (0x0) ou WIDE (0x1). Padrão definido como 0x0-3 comprimento mínimo da string. Padrão definido como 0xA-4 pesquisar apenas páginas de memória graváveis (0x0) ou todas (0x01). Padrão definido como 0x0Se você quiser modificar ou reconstruir os scripts XenoboxX, lembre-se de que precisa de alguns arquivos do repositório PCILeech, e em particular:
wx64_common.hwx64_common.cshellcode64.exeNos comentários de cada arquivo .c, você encontrará instruções de compilação. Como exemplo:
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_common.c
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_dumpalloc.c
ml64.exe wx64_common_a.asm /Fewx64_dumpalloc.exe /link /NODEFAULTLIB /RELEASE /MACHINE:X64 /entry:main wx64_dumpalloc.obj wx64_common.obj
shellcode64.exe -o wx64_dumpalloc.exe "DUMP ALLOCATED MEMORY \n===============================================================\nREQUIRED OPTIONS: \n -0 : Process PID to open. Example '-0 0x0fe0'. \nOPTIONAL OPTIONS: \n -1 : Process monitoring timeout Default: 0x20. Example: '-1 0x100'. \n -s : Specify output folder/file for dumps. Example: \"\\??\C:\temp\test\"\n===== RESULT OF DUMPALLOC OPERATION ======================%s\nNTSTATUS : 0x%08X \n===============================================================\n"
XenoboxX não é a ferramenta de análise definitiva: esta é uma abordagem muito específica que acho útil para análises muito específicas. Não acredito que esta ferramenta vá substituir seu fluxo de trabalho atual, mas talvez você a ache útil para aquele malware específico desagradável.
Contribuições e sugestões são mais que bem-vindas. Por favor, abra uma issue se tiver dúvidas ou um pull request se quiser contribuir. Obrigado!