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