Método de prueba
Panda no parece revelar el mecanismo exacto de su "vacuna", lo cual es comprensible, ya que es básicamente seguridad a través de la oscuridad . Si sabe cómo funciona, puede revertir los efectos y la "vacuna" se vuelve inútil.
Descargué e instalé Panda USB Vaccine y "vacuné" mi unidad flash, descargué la partición de la unidad flash con dd para Windows usando los comandos
dd --list
dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img
donde xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
está el GUID proporcionado por el primer comando, abierto c:\vaccinated.img
en un editor hexadecimal y buscado AUTORUN
.
¿Qué hace la vacuna USB?
La entrada para AUTORUN.INF
comienza con los siguientes doce bytes:
41 55 54 4F 52 55 4E 20 49 4E 46 42
Los primeros once bytes son solo el nombre de archivo 8.3 con espacio :AUTORUN INF
El último byte especifica los atributos del archivo y su representación binaria es:
01000010
De acuerdo con la especificación del sistema de archivos EFI FAT32 de Microsoft , este último byte es un campo de bits que toma la siguiente forma:
XYADVSHR
donde los bits A
, D
, V
, S
, H
y R
son 1
si y sólo si el archivo está archivado, un directorio, el identificador de volumen 1 , un archivo de sistema, oculto o de sólo lectura. AUTORUN.INF
está oculto, ya que H
está establecido en 1
.
Los bits X
y Y
están reservados y ambos deberían estarlo 0
. Sin embargo, USB Vaccine se establece Y
en 1
.
Lo que dice la especificación
Los dos bits superiores del byte de atributo están reservados y siempre deben establecerse en 0 cuando se crea un archivo y nunca se modifican o se miran después de eso.
Además, recomienda para la validación del contenido del directorio:
Estas pautas se proporcionan para que las utilidades de mantenimiento de disco puedan verificar las entradas de directorio individuales para "corrección" mientras mantienen la compatibilidad con futuras mejoras a la estructura de directorios.
NO mire el contenido de los campos de entrada de directorio marcados como reservados y suponga que, si tienen un valor distinto de cero, son "incorrectos".
NO restablezca el contenido de los campos de entrada de directorio marcados reservados a cero cuando contienen valores distintos de cero (bajo el supuesto de que son "incorrectos"). Los campos de entrada del directorio se designan reservados , en lugar de ser cero . Deben ser ignorados por su aplicación. Estos campos están destinados a futuras extensiones del sistema de archivos. Al ignorarlos, una utilidad puede continuar ejecutándose en futuras versiones del sistema operativo.
Lo que realmente pasa
CHKDSK ciertamente sigue la especificación e ignora la AUTORUN.INF
entrada que el controlador FAT32 no entiende, pero el propio Windows no parece cumplir con el requisito de la especificación de no volver a mirar nunca los bits reservados : Cualquier tipo de acceso (que no sea enumerar el archivo y sus atributos) es denegado.
Por ejemplo, el comando
DIR /A /Q
afirma que el dueño de AUTORUN.INF
es ...
. Como FAT32 no admite la propiedad de archivos, debería indicarlo \All
.
La razón de este comportamiento inesperado es que, de acuerdo con FAT32 - Wikipedia # Entrada de directorio , Windows usa el bit Y
internamente para señalar un nombre de dispositivo de caracteres (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1, etc.), y No debería estar presente en los dispositivos de almacenamiento. 2
En una forma de hablar, USB Vaccine engaña a Windows para que asuma que AUTORUN.INF
no es un archivo real, sino un dispositivo, del cual no puede leer ni escribir.
Cómo borrar el archivo
Si usted tiene acceso directo al sistema de archivos, basta conjunto Y
a 0
(cambiar el byte 42
a 02
) para hacer que el archivo de nuevo eliminable. También puede establecer el primer byte de la entrada del directorio en E5
, marcando directamente el archivo como eliminado. 3
Otra opción sería usar un controlador diferente. Ubuntu 12.04, por ejemplo, puede eliminar el archivo sin problemas. En realidad, automáticamente "arregla" la entrada del directorio cuando la lee. 4 4
1 Este atributo se utiliza, por ejemplo, para la etiqueta de volumen o la carpeta Información del volumen del sistema .
2 Ciertamente lo suficiente, el establecimiento X
a 1
no parece tener ningún efecto.
3 Verifiqué esto cambiando los bytes correspondientes de C:\vaccinated.img
con un editor hexadecimal y escribiendo la imagen modificada en la unidad flash usando el siguiente comando:
dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
4 Si bien es una desviación evidente de la especificación, parece estar pensada. Ubuntu deja X
intacto si está configurado en 1
, ya que no hace daño. Configurar el Y
bit 1
fácilmente podría ser maltratado por una aplicación maliciosa, por ejemplo, creando un archivo indeleble que ocupe todo el espacio libre de la unidad.