Метод испытания
Панда, похоже, не раскрывает точного механизма своей «вакцины», что понятно, поскольку в основном это безопасность через мрак . Если вы знаете, как это работает, вы можете обратить вспять эффект, и «вакцина» станет бесполезной.
Я скачал и установил 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
в шестнадцатеричном редакторе и найденный 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
может быть легко использована злонамеренным приложением, например, путем создания файла, который может быть удален и который занимает все свободное место на диске.