¿Cómo hacer que un archivo no se pueda eliminar en una unidad USB?

15

Alguien usó mi unidad USB y, cuando me la devolvió, encontré una autorun.infque no se puede recuperar. Intenté cambiar su atributo de archivo que es solo H (ni siquiera configurado como un archivo de sistema) pero sigue diciendo Acceso denegado.

El USB está configurado en FAT32, al preguntarle a mi amigo, él me dijo que usa la Vacuna Panda USB

¿Cómo lo hacen? Estoy tratando de usar un editor de sector de disco, pero no tengo idea de qué archivo hexadecimal cambian para hacer este tipo de archivo y volver a eliminarlo. Formatear el disco lo elimina, pero tengo curiosidad sobre cómo poder establecer ese tipo de atributo de archivo.

MegaNairda
fuente
Encontré otra herramienta que hace el mismo enlace Inmunizador USB BitDefender
MegaNairda
¿Inspeccionó los permisos en el archivo?
Moab
@Moab El sistema de archivos en el USB es FAT32.
MegaNairda
En Windows 7 o posterior, el autorun.inf creado por Panda USB Vaccine se mostrará con los atributos de archivo "HX", mientras que "H" significa oculto y "X" significa el FILE_ATTRIBUTE_DEVICE reservado.
Explorer09

Respuestas:

16

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-xxxxxxxxxxxxestá el GUID proporcionado por el primer comando, abierto c:\vaccinated.imgen un editor hexadecimal y buscado AUTORUN.

¿Qué hace la vacuna USB?

La entrada para AUTORUN.INFcomienza 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, Hy Rson 1si 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.INFestá oculto, ya que Hestá establecido en 1.

Los bits Xy Yestán reservados y ambos deberían estarlo 0. Sin embargo, USB Vaccine se establece Yen 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.

  1. 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".

  2. 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.INFentrada 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.INFes .... 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 Yinternamente 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.INFno 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 Ya 0(cambiar el byte 42a 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 Xa 1no parece tener ningún efecto.

3 Verifiqué esto cambiando los bytes correspondientes de C:\vaccinated.imgcon 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 Xintacto si está configurado en 1, ya que no hace daño. Configurar el Ybit 1fá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.

Dennis
fuente
6

Este es un truco inteligente del sistema de archivos que explota un nombre reservado en el espacio de nombres Win32. Los detalles de cómo Panda USB Vaccine hace esto se describen aquí .

Esencialmente, el software crea una carpeta llamada autorun.inf(que evita que se cree un archivo con el mismo nombre allí), y luego en esa carpeta, LTP1se crea un archivo llamado . En DOS, se LPT1refiere al puerto de la impresora, y Windows lo admite para la compatibilidad con versiones anteriores. Entonces, cuando solicita un archivo con el nombre LPT1, Windows intenta abrir el puerto de la impresora, y de alguna manera esto evita que la carpeta se elimine normalmente.

En cuanto a cómo eliminar la carpeta / archivo sin formatear la unidad, este artículo de Microsoft Knowledgebase ofrece algunos consejos:

Causa 5: el nombre del archivo incluye un nombre reservado en el espacio de nombres Win32

Si el nombre del archivo incluye un nombre reservado (por ejemplo, "lpt1") en el espacio de nombre Win32, es posible que no pueda eliminar el archivo. Para resolver este problema, use un programa que no sea Win32 para cambiar el nombre del archivo. Puede usar una herramienta POSIX o cualquier otra herramienta que use la sintaxis interna adecuada para usar el archivo.

Además, es posible que pueda usar algunos comandos integrados para omitir las comprobaciones de nombres reservados típicos de Win32 si usa una sintaxis particular para especificar la ruta del archivo. Por ejemplo, si usa el Del comando en Windows XP, puede eliminar un archivo llamado "lpt1" si especifica la ruta completa del archivo mediante la siguiente sintaxis especial:

del \\?\c:\path_to_file\lpt1

Para obtener más información sobre cómo eliminar archivos con nombres reservados en Windows NT y Windows 2000, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

120716 Cómo eliminar archivos con nombres reservados en Windows

Para obtener más información sobre cómo eliminar archivos con nombres reservados en Windows XP, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

315226 Cómo eliminar archivos con nombres reservados en Windows XP

Si abre un identificador a un archivo utilizando el CreateFile mecanismo típico de Win32 , ciertos nombres de archivo están reservados para dispositivos DOS de estilo antiguo. Por compatibilidad con versiones anteriores, estos nombres de archivo no están permitidos y no pueden crearse utilizando las llamadas típicas de archivos Win32. Sin embargo, este problema no es una limitación de NTFS.

Es posible que pueda utilizar un programa Win32 para omitir las comprobaciones de nombre típicas que se realizan cuando se crea (o elimina) un archivo utilizando la misma técnica que utiliza para recorrer carpetas que son más profundas MAX_PATH. Además, algunas herramientas POSIX no están sujetas a estas verificaciones de nombres.

Lèse majesté
fuente
2
Esa es la forma antigua de la vacuna Panda USB de proteger la unidad USB de autorun.inf malicioso. Intente descargar y usar el enlace que proporcioné y verá que no crea ninguna carpeta. Solo un archivo llamado autorun.inf
MegaNairda
@MegaNairda: Extraño ... Instalé la Vacuna USB, pero cada vez que trato de vacunar mi memoria USB FAT32, el programa crea una AUTORUN.INF(con la misma cadena "caacaa ..." mencionada en el artículo) en la unidad y luego rápidamente se congela No tengo ningún problema para eliminar el archivo de ejecución automática en absoluto ...
Lèse majesté
Pruebe el enlace del inmunizador USB BitDefender Panda USB Vaccine también a veces se congela en mi sistema cuando inserto unidades USB.
MegaNairda
@MegaNairda: Parecía haber un problema con esa memoria USB. Ninguno de los programas pudo vacunarlo. Sin embargo, esta coincidencia fue útil porque mostró que el inmunizador de BitDefender al menos usa una técnica similar. El registro de errores mostró que intentó crear una serie de carpetas / archivos anidados en I:\autorun.inf\bdsanitize#\bdsanitize#...donde #está "1" o "2". El archivo de registro también agregó el archivo / nombre de directorio de cada nivel con .diro .filepero eso solo puede mostrarse para fines de registro / depuración.
Lèse majesté
1
Parece que de hecho hay un problema con su USB. El inmunizador de BitDefender crea una carpeta autorun.infpero después de eso, sería reemplazado por un autorun.inf archivo . La diferencia con autorun.infPanda USB Vaccine es que el archivo está vacío y no contiene cacacael que creó Panda.
MegaNairda