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.img
em um editor hexadecimal e pesquisado AUTORUN
.
O que a Vacina USB faz
A entrada para AUTORUN.INF
começ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
, H
e R
sã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.INF
está oculto, pois H
está definido como 1
.
Os bits X
e Y
são reservados e devem ser ambos 0
. No entanto, a Vacina USB define Y
como 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.INF
entrada 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 Y
internamente 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.INF
nã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 Y
para 0
(alterar o byte 42
para 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 X
como 1
não parece ter nenhum efeito.
3 Verifiquei isso alterando os bytes correspondentes de C:\vaccinated.img
com 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 X
intacto se estiver definido 1
, pois não faz mal. A configuração do Y
bit 1
pode 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.