Метод испытания
Панда, похоже, не раскрывает точного механизма своей «вакцины», что понятно, поскольку в основном это безопасность через мрак . Если вы знаете, как это работает, вы можете обратить вспять эффект, и «вакцина» станет бесполезной.
Я скачал и установил Panda USB Vaccine и «привил» мою флешку, сбросил раздел флешки с dd для windows с помощью команд
dd --list
dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img
где xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxGUID, предоставленный первой командой, открытый c:\vaccinated.imgв шестнадцатеричном редакторе и найденный AUTORUN.
Что делает USB Vaccine
Запись для AUTORUN.INFначинается со следующих двенадцати байтов:
41 55 54 4F 52 55 4E 20 49 4E 46 42
Первые одиннадцать байтов - это просто 8.3 имя файла :AUTORUN INF
Последний байт определяет атрибуты файла, а его двоичное представление:
01000010
В соответствии со спецификацией файловой системы Microsoft EFI FAT32 этот последний байт является битовым полем, которое принимает следующую форму:
XYADVSHR
где биты A, D, V, S, Hи Rявляются , 1если и только если файл находится в архиве, каталог, идентификатор тома 1 , системный файл, скрытый или только для чтения. AUTORUN.INFскрыт, поскольку Hустановлен в 1.
Биты Xи Yзарезервированы, и оба должны быть 0. Тем не менее, USB Vaccine устанавливает Yв 1.
Что говорится в спецификации
Два старших бита байта атрибута зарезервированы и всегда должны быть установлены в 0, когда файл создается и никогда не изменяется и не просматривается после этого.
Кроме того, он рекомендует для проверки содержимого каталога:
Эти рекомендации предназначены для того, чтобы утилиты обслуживания дисков могли проверять правильность отдельных записей каталога, одновременно поддерживая совместимость с будущими усовершенствованиями структуры каталогов.
НЕ просматривайте содержимое полей записи каталога, помеченных как зарезервированные, и предполагайте, что, если они имеют любое значение, отличное от нуля, они являются «плохими».
НЕ сбрасывайте содержимое полей записи каталога, помеченных как зарезервированные, в ноль, если они содержат ненулевые значения (при условии, что они «плохие»). Поля записи в каталоге обозначены как зарезервированные , а не обязательные для заполнения . Они должны игнорироваться вашим приложением. Эти поля предназначены для будущих расширений файловой системы. Игнорируя их, утилита может продолжать работать в будущих версиях операционной системы.
Что на самом деле происходит
CHKDSK определенно следует спецификации и игнорирует AUTORUN.INFзапись, которую драйвер FAT32 не понимает, но сама Windows, похоже, не соответствует требованию спецификации никогда больше не смотреть на зарезервированные биты : любой вид доступа (кроме перечисления файла и его атрибуты) отрицается.
Например, команда
DIR /A /Q
утверждает, что владельцем AUTORUN.INFявляется .... Поскольку FAT32 не поддерживает владение файлами, оно должно указывать \All.
Причиной такого неожиданного поведения является то, что, согласно FAT32 - записи в каталоге Wikipedia # , Windows использует бит Yвнутри для обозначения имени символьного устройства (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1 и т. Д.) И это не должно присутствовать на устройствах хранения. 2
В некотором смысле, USB Vaccine обманывает Windows, полагая, что AUTORUN.INFэто не фактический файл, а устройство, которое он не может читать или записывать.
Как удалить файл
Если у вас есть прямой доступ к файловой системе, достаточно , чтобы установить , Yчтобы 0(изменить байты 42в 02) , чтобы сделать файл нестираемым снова. Вы также можете установить первый байт записи каталога E5, отметив файл как удаленный. 3
Другой вариант - использовать другой драйвер. Ubuntu 12.04, например, может удалить файл без проблем. На самом деле, он автоматически «исправляет» запись каталога при ее чтении. 4
1 Этот атрибут используется, например, для метки тома или папки System Volume Information .
2 Конечно, установка Xна 1, кажется, не имеет никакого эффекта.
3 Я проверил это, изменив соответствующие байты C:\vaccinated.imgс помощью шестнадцатеричного редактора и записав измененное изображение на флэш-накопитель, используя следующую команду:
dd if=C:\vaccinated.img of=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
4 Хотя это явное отклонение от спецификации, оно кажется продуманным. Ubuntu оставляет Xнетронутым, если он установлен 1, так как он не причиняет вреда. Установка Yбита 1может быть легко использована злонамеренным приложением, например, путем создания файла, который может быть удален и который занимает все свободное место на диске.