Метод испытания
Панда, похоже, не раскрывает точного механизма своей "вакцины", что понятно, поскольку в основном это безопасность через мрак. Если вы знаете, как это работает, вы можете обратить вспять эффект, и "вакцина" станет бесполезной.
Я скачал и установил Panda USB Vaccine и "привил" мою флешку, сбросил раздел флешки с dd для windows с помощью команд
dd --list
dd if=\\.\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} of=C:\vaccinated.img
где xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - это GUID, предоставленный первой командой, открывший c:\vaccinated.img immunidated.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 может быть легко использована злонамеренным приложением, например, путем создания файла, который невозможно восстановить, который занимает все свободное место на диске.