
Script para criar modelos para usar com VirtualBox para dificultar a detecção de VM
Um script para ajudar a criar templates, que podem ser usados com VirtualBox para dificultar a deteção de VM.
A minha primeira publicação sobre o assunto foi em 2012 e, desde então, foi atualizada esporadicamente. O formato de blogue pode não ter sido a melhor forma de publicar a informação e algumas pessoas criaram scripts interessantes e "fáceis de aplicar" com base no conteúdo.
Para facilitar a adição de novos conteúdos, decidi fazer exatamente o mesmo.
O objetivo deste script é utilizar as definições disponíveis sem modificar a base do VirtualBox. Há quem faça coisas realmente interessantes ao modificar o VirtualBox, mas isso está fora do âmbito deste script. Acredito que esta abordagem tem os seus méritos, pois (espero) não quebra a cada nova versão do VirtualBox. Ao longo do tempo, também incluí "coisas" que não estão diretamente relacionadas com VM, mas sim com o que o malware utiliza para identificar instalações. Espero que não se importem..
O script principal criará os seguintes ficheiros:
sudo apt install python3-pip libcdio-utils acpica-tools mesa-utils smartmontoolssudo pip3 install -r requirements.txtwget https://download.sysinternals.com/files/VolumeId.zip https://www.nirsoft.net/utils/devmanview-x64.zip (versão x64).hostname > computer.lst, whoami > user.lst. Modifique se pretender usar nomes de máquina e utilizadores diferentes para as VMs (recomenda-se preencher os ficheiros com uma longa lista de nomes de utilizador e computador).sudo python3 antivmdetect.pysudo chmod a+x xxxxx.sh/bin/bash xxxxx.sh my-virtual-machine-nameMova o script batch (xxxx.ps1) para o convidado recém-instalado.
Execute o script batch no interior do convidado. Lembre-se de que a maioria das definições modificadas são revertidas após cada reinicialização. Portanto, faça-o executar no arranque, se necessário.
A partir da versão 0.1.4, algumas definições aplicadas exigem uma reinicialização. Execute o script batch uma vez; o convidado será reiniciado. Em seguida, execute o script novamente para finalizar a configuração.
Antes de aplicar o script batch no interior do convidado, desative o UAC (necessita reinicialização), caso contrário não conseguirá modificar o registo com o script.
Para utilizadores do Windows 10: execute o script PS como administrador (clique direito em cmd.exe -> executar como administrador, navegue até ao script PS e execute).
Se aplicado corretamente, uma execução do Pafish resultará nisto (não é necessário modificar o Virtualbox).
Note que este script faz outras coisas não cobertas pelo Pafish (por exemplo, artefactos do W10)

0.1.9:
Compatível com Python3
Primeira tentativa de extrair o disco correto, que tem sido fonte de dores de cabeça para muitos. (Issue #35 (e algumas outras issues antigas), obrigado @oaustin)
Melhorias no tratamento de strings no script shell (Issue #35 e #36 e PR #44, obrigado @oaustin, @dashjuvi e @corownik)
Adicionado um link para um recurso DSDT online (Issue #37, obrigado @MasterCATZ)
Atualizado o README para tornar as instruções de instalação mais claras, obrigado @jorants (issue #38)
Verificar se o dump DSDT foi realmente criado, obrigado @nov3mb3r (Issue: #42)
Adicionado um aviso de licença, obrigado @obilodeau (issue #43)
Limpeza de código: removido suporte a discos RAID por falta de acesso a hardware de servidor... e muitas outras pequenas melhorias
0.1.8:
Melhorado suporte para Windows 10
Correção de markup fundida de @bryant1410 (PR #14)
Resolvido um problema para utilizadores de macOS + VBox/VMWare Fusion ao criar os templates.
Criar o template a partir de uma máquina virtual não é a melhor forma, independentemente... (issue #12 e possivelmente #15)
0.1.7:
Windows 10 agora suportado (feedback bem-vindo)
Vários novos artefactos "corrigidos" para instalações W10
Nova dependência: mesa-utils
Correção de bug fundida de @Fullmetal5 (#10)
Várias correções de código diversas
READme atualizado
0.1.6:
Adicionado um pop-up após a segunda execução, para tornar mais claro que está pronto
Adicionada uma função que cria algumas instâncias do notepad. Esta funcionalidade será alargada em versões futuras
Refeita a função RandomDate, obrigado a @Antelox por me alertar para o problema com a antiga (#8)
O Acpidump fornecido com versões antigas do Ubuntu não suporta a opção "-s". Isto é agora tratado com uma mensagem de erro. Obrigado a @Antelox por esta issue (#7)
Devmanview.exe não era removido após a segunda execução, corrigido
0.1.5:
Adicionado suporte para associar e desassociar (desativado por predefinição) extensões de ficheiro. Referência: https://www.proofpoint.com/us/threat-insight/post/massive-adgholas-malvertising-campaigns-use-steganography-and-file-whitelisting-to-hide-in-plain-sight
Adicionado suporte para buffer de clipboard fornecido pelo utilizador. Se não estiver presente, será gerada uma string aleatória. Preencha o ficheiro com Honeytokens à sua escolha
Removido suporte a XP
Convertidas as secções do script batch para Powershell. Mais lógica movida para o script convidado; em suma, há menos razão para criar/regenerar o template frequentemente, pois mais itens são aleatorizados no convidado.
Adicionada uma função que aleatoriza a imagem de fundo do ambiente de trabalho
Adicionada uma função que cria documentos de "todo o tipo" no convidado
Adicionada uma função que cria documentos de "todo o tipo" no convidado e os move para o lixo
Aleatorização do DigitalProductId em mais duas localizações:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\DigitalProductId.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\DigitalProductId.
Usar Paravirtualization Interface: None (verificado com VBox 5.1.4) – Verificação atualizada para refletir esta alteração. Presumo que esta alteração no VBox tenha surgido graças a TiTi87, obrigado!
/Mikael
Feedback é sempre bem-vindo! =)
0.1.4:
Corrigido um bug para utilizadores de python-dmidecode 3.10.13-3, este foi todo meu...
Adicionada uma função que aleatoriza o VolumeID (novo pré-requisito: VolumeID.exe). Esta informação é, por exemplo, recolhida pelo Rovnix
Adicionada uma função que aleatoriza o nome de utilizador e nome de computador/anfitrião (novos pré-requisitos: listas de nomes de utilizador e computador)
Primeira tentativa de adicionar informação ao buffer da clipboard, ideia (comando) veio de um tweet de @shanselman. Será melhorado na próxima versão
READme atualizado: novas dependências e novas funcionalidades que requerem reinicialização
0.1.3:
Copiar e definir a string da marca da CPU.
Verificar se um dispositivo de áudio está associado ao convidado. Referência: http://www.joesecurity.org/reports/report-61f847bcb69d0fe86ad7a4ba3f057be5.html
Verificar arquitetura do SO vs binário DevManView.
Aleatorização do ProductId em mais duas localizações:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration\ProductId.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey\ProductId.
Limpar a chave de produto do Windows do registo (para evitar que alguém a roube...).
Editar o DigitalProductId (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId) para corresponder ao novo ProductId.
0.1.2:
Verificar se a interface de paravirtualização Legacy está a ser utilizada (o uso da interface Legacy mitigará a deteção "cpuid feature").
0.1.1:
Verificar contagem de CPUs (Menos de 2 == alerta).
Verificar tamanho de memória (Menos de 2GB == alerta).
Verificar se o IP/intervalo IP predefinido está a ser utilizado para vboxnet0 (pode ignorar a notificação se não o utilizar).
Aleatorização do ProductId.
Merge do PR #3 de r-sierra (Obrigado pela ajuda!).
Corrigido um bug no AcpiCreatorId (Obrigado @Nadacsc por me reportar isso!).
Corrigido um bug na interpretação do DmiBIOSReleaseDate.
Corrigido um bug no DmiBIOSReleaseDate, para lidar tanto com a variante "predefinida" mal escrita como com a correta (Obrigado @WanpengQian por me reportar isso!).
A inclusão do DevManView não funcionou como esperado; deve estar corrigida nesta versão.
Suporte para controlador SATA também (anteriormente apenas as definições IDE eram modificadas)
READme atualizado
0.1.0:
Resolvida a deteção WMI tornada famosa pela HT. Adicionado
DevManView.exe (à sua escolha de arquitetura) aos pré-requisitos.
< 0.1.0 Nenhum histórico de versão mantido antes disto, é preciso começar por algum lado, suponho.