Posso executar um Diff entre uma VM e seu backup?

2

Eu tenho um programa que venho usando há mais de um ano e que recentemente descobri que contém um vírus. Eu não quero reformatar todo o computador principalmente porque mesmo se eu fiz backup dos dados, eu não seria capaz de dizer se eu estou portando os arquivos infectados por vírus comigo.

Então, se eu fosse criar uma nova máquina virtual, então execute o programa infeccioso, existe alguma maneira de identificar quais arquivos ele infectou? (I.E. executando um diff no sistema e vendo o que mudou?)

2ª pergunta:

VMs são total e completamente isoladas do sistema externo, correto?

Não há como esse vírus ser executado na VM e infectar o sistema principal? No meu caso, o sistema externo já está infectado, então não é grande coisa, mas eu estava me perguntando se era teoricamente possível escrever um vírus que infectaria os sistemas host enquanto estava sendo executado em uma VM?

    
por user8122 15.06.2009 / 13:56

4 respostas

2

Você teve duas perguntas, então vou mostrar as respostas:

Então, se eu fosse criar uma nova máquina virtual, então rodasse o programa infeccioso, existe alguma maneira de identificar quais arquivos ele infectou?

Se você fez coisas como atualizações do Windows ou instalou um novo software (pense em navegadores da Web ou atualizações de versão também), essa tarefa pode ficar bastante difícil devido ao número de arquivos modificados. No entanto, mesmo se você fez isso, copiou todos os arquivos que você não acha que estavam infectados e, em seguida, construiu um novo sistema, basta um arquivo infectado e você está ferrado.

As VMs estão total e completamente isoladas do sistema externo, correto?

Apenas se eles não estiverem em uma rede ou compartilhando arquivos de alguma forma. Por exemplo, com o VMware Fusion, você pode configurar o compartilhamento de arquivos automaticamente entre o host e o convidado, permitindo que o convidado grave em seu diretório de perfis. Torna o compartilhamento de documentos muito mais fácil, mas também aumenta a probabilidade de transferência de vírus.

Além disso, você já enviou um arquivo por e-mail do convidado da VM para o host? Boom, você está ferrado se o vírus estava nesse arquivo.

    
por 15.06.2009 / 14:07
2

Eu apóio totalmente esta metodologia se você estiver fazendo isso para fins forenses, e aprender mais sobre o vírus, e talvez como um exercício para determinar maneiras de examinar deltas em máquinas virtuais.

Se você estiver fazendo isso de um ponto de vista "Eu quero recuperar meu servidor deste vírus sem reinstalar", então você deve reexaminar sua meta.

Eu não conheço uma maneira melhor, então eu faria isso da maneira mais difícil, onde você consegue o sistema ao ponto desejado antes que o vírus seja introduzido. Então você inicializa com um cd do Linux e faz uma imagem do sistema de arquivos usando 'dd'.

Em seguida, inicie o backup da máquina, introduza o vírus, desligue-o novamente, reinicialize com o CD, grave novamente em outra imagem, monte as imagens com somente leitura com a opção noexec mount e, em seguida, escreva encontre o comando que executaria o diff entre os sistemas de arquivos, um arquivo por vez, e os arquivos de saída diferentes.

Agora, algumas ressalvas. Primeiro, porque esse método é tão ruim e tão lento, tem que haver um melhor, mas não sei o que é. Em segundo lugar, haverá alguns falsos positivos. O Windows grava no registro todo o tempo, então os arquivos de registro serão diferentes. Assim, qualquer arquivo de configuração que tenha sido alterado, qualquer atualização que tenha iniciado o download por conta própria, etc. etc.

Pode ser que você possa usar find -mtime para obter os mesmos dados e, em seguida, executar o diff nos arquivos que foram alterados. Já que você está no Linux, o clamav também pode economizar algum tempo.

    
por 15.06.2009 / 14:59
1

Só queria adicionar um aviso: é tecnicamente possível que um vírus escape da VM! (Especialmente se o vírus tiver sido gravado para infectar máquinas virtuais e seus hosts.) É possível que qualquer aplicativo detecte se está sendo executado em uma máquina virtual e, portanto, o código pode ser adicionado para que ele saia da caixa. Seria raro, no entanto, descobrir um vírus que infectasse os hosts da VM dessa maneira.

Por outro lado, é provável que uma VM compartilhe sua conexão de rede com seu host. Isso cria uma segunda maneira de se infectar. Se você tiver várias VMs em execução no mesmo host, poderá infectar essas outras VMs pela conexão de rede!

Claro, também pode acontecer de o seu anfitrião estar infectado e ter enviado o vírus para a sua VM.

Portanto, mantenha-o em segurança: instale um antivírus nas suas VMs e certifique-se de manter o antivírus e o próprio SO atualizados.

    
por 15.06.2009 / 15:36
1

Não sei qual é a sua plataforma de VM, mas o VMware oferece um utilitário chamado mountvm.exe que permite montar um arquivo VMDK em seu sistema de arquivos e visualizar o conteúdo do disco virtual. Você poderia então usar o windiff (ou algo similar) para comparar arquivos dentro da VM montada. Tenho certeza de que outros hipervisores oferecem ferramentas semelhantes

Com relação à sua segunda pergunta, embora eu não saiba se houve exploits que atacaram através do hipervisor, acho que há algumas PoCs por aí mostrando que isso pode ser possível (claro, algumas contestam isso). Procure por "Blue Pill" e veja o que você encontra. Como outros já mencionaram, copiar arquivos entre host e guest e permitir conectividade de rede direta entre host e guest aumentaria definitivamente a chance de infectar um do outro.

    
por 15.06.2009 / 15:47