Método de teste
O Panda parece não revelar o mecanismo exato de sua "vacina", o que é compreensível, já que é basicamente segurança através da obscuridade . Se você souber como funciona, poderá reverter os efeitos e a "vacina" se tornará inútil.
Baixei e instalei o Panda USB Vaccine e "vacinei" minha unidade flash, despejei a partição da unidade flash com o dd for windows usando os comandos
dd --list
dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img
onde xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxé o GUID fornecido pelo primeiro comando, aberto c:\vaccinated.imgem um editor hexadecimal e pesquisado AUTORUN.
O que a Vacina USB faz
A entrada para AUTORUN.INFcomeça com os seguintes doze bytes:
41 55 54 4F 52 55 4E 20 49 4E 46 42
Os onze primeiros bytes são apenas o nome do arquivo 8.3 preenchido com espaço :AUTORUN INF
O último byte especifica os atributos do arquivo e sua representação binária é:
01000010
De acordo com a Especificação do sistema de arquivos EFI FAT32 da Microsoft , esse último byte é um campo de bit que assume o seguinte formato:
XYADVSHR
onde os bits A, D, V, S, He Rsão 1, se e somente se o arquivo é arquivado, um diretório, o ID do volume 1 , um arquivo de sistema, oculto ou somente leitura. AUTORUN.INFestá oculto, pois Hestá definido como 1.
Os bits Xe Ysão reservados e devem ser ambos 0. No entanto, a Vacina USB define Ycomo 1.
O que a especificação diz
Os dois bits superiores do byte de atributo são reservados e sempre devem ser definidos como 0 quando um arquivo é criado e nunca modificado ou analisado depois disso.
Além disso, recomenda a validação do conteúdo do diretório:
Essas diretrizes são fornecidas para que os utilitários de manutenção de disco possam verificar as entradas individuais do diretório quanto à 'correção', mantendo a compatibilidade com aprimoramentos futuros da estrutura de diretórios.
NÃO examine o conteúdo dos campos de entrada do diretório marcados como reservados e assuma que, se houver algum valor diferente de zero, eles serão "ruins".
NÃO redefina o conteúdo dos campos de entrada do diretório marcados como reservados para zero quando eles contêm valores diferentes de zero (supondo que sejam "inválidos"). Os campos de entrada do diretório são designados reservados , em vez de devem ser zero . Eles devem ser ignorados pelo seu aplicativo. Esses campos são destinados a futuras extensões do sistema de arquivos. Ao ignorá-los, um utilitário pode continuar em execução em versões futuras do sistema operacional.
O que realmente acontece
O CHKDSK certamente segue a especificação e ignora a AUTORUN.INFentrada que o driver FAT32 não entende, mas o próprio Windows parece não cumprir o requisito da especificação de nunca olhar novamente para os bits reservados : Qualquer tipo de acesso (exceto a listagem do arquivo e seus atributos) é negado.
Por exemplo, o comando
DIR /A /Q
afirma que o proprietário de AUTORUN.INFé .... Como o FAT32 não suporta a propriedade de arquivos, ele deve indicar \All.
A razão desse comportamento inesperado é que, de acordo com a entrada do diretório FAT32 - Wikipedia # , o Windows usa o bit Yinternamente para sinalizar o nome de um dispositivo de caractere (CON, PRN, AUX, $ RELÓGIO, NUL, LPT1, COM1 etc.) e não deve estar presente em dispositivos de armazenamento. 2
De certa maneira, a USB Vaccine engana o Windows, assumindo que AUTORUN.INFnão é um arquivo real, mas um dispositivo, do qual não pode ler ou gravar.
Como excluir o arquivo
Se você tiver acesso direto ao sistema de arquivos, basta definir Ypara 0(alterar o byte 42para 02) para tornar o arquivo excluído novamente. Você também pode definir o primeiro byte da entrada do diretório E5, marcando diretamente o arquivo como excluído. 3
Outra opção seria usar um driver diferente. O Ubuntu 12.04, por exemplo, pode excluir o arquivo sem problemas. Na verdade, ele "corrige" automaticamente a entrada do diretório ao lê-la. 4
1 Este atributo é usado para, por exemplo, o rótulo do volume ou a pasta Informações do volume do sistema .
2 Certamente, definir Xcomo 1não parece ter nenhum efeito.
3 Verifiquei isso alterando os bytes correspondentes de C:\vaccinated.imgcom um editor hexadecimal e gravando a imagem modificada na unidade flash usando o seguinte comando:
dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
4 Embora seja um desvio flagrante da especificação, parece ser um pensamento. O Ubuntu deixa Xintacto se estiver definido 1, pois não faz mal. A configuração do Ybit 1pode ser facilmente abusada por um aplicativo mal-intencionado, criando, por exemplo, um arquivo não excluído que ocupa todo o espaço livre da unidade.