Метод випробування
Панда, схоже, не розкриває точний механізм своєї "вакцини", що зрозуміло, оскільки це в основному безпека через неясність . Якщо ви знаєте, як це працює, ви можете змінити наслідки, і "вакцина" стане марною.
Я завантажив і встановив USB-вакцину Panda і "вакцинував" свою флешку, скинув розділ флешки з 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-вакцина
Запис для 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-вакцина налаштована Y
на 1
.
Що говорить специфікація
Два верхніх біта байта атрибута зарезервовані і завжди повинні бути встановлені на 0, коли файл створюється і ніколи не змінюється і не переглядається після цього.
Крім того, він рекомендує перевірити вміст каталогу:
Ці вказівки надаються таким чином, що утиліти з обслуговування дисків можуть перевіряти окремі записи каталогів на «правильність», зберігаючи сумісність із майбутніми вдосконаленнями структури каталогів.
НЕ дивіться на вміст полів для введення каталогу, позначених зарезервованими і припускайте, що якщо вони є будь-яким значенням, крім нуля, вони "погані".
НЕ скидайте вміст полів введення каталогів, позначених зарезервованими до нуля, коли вони містять ненульові значення (за умови, що вони "погані"). Поля введення каталогів позначені зарезервованими , а не повинні бути нульовими . Вони повинні ігноруватися вашою заявою. Ці поля призначені для подальшого розширення файлової системи. Ігноруючи їх, утиліта може продовжувати працювати на майбутніх версіях операційної системи.
Що насправді відбувається
CHKDSK, безумовно, слідує технічним умовам і ігнорує AUTORUN.INF
запис, який драйвер FAT32 не розуміє, але сама Windows, здається, не відповідає вимогам специфікації щодо ніколи не дивитися на зарезервовані біти : Будь-який тип доступу (крім переліку файлу та його атрибути) заперечується.
Наприклад, команда
DIR /A /Q
зазначає, що власником AUTORUN.INF
є ...
. Оскільки FAT32 не підтримує право власності на файл, слід вказати його \All
.
Причина такої несподіваної поведінки полягає в тому, що відповідно до запису FAT32 - Wikipedia # Directory , Windows використовує біт Y
внутрішньо для передачі імені символьного пристрою (CON, PRN, AUX, CLOCK $, NUL, LPT1, COM1 тощо) та він не повинен бути присутнім на пристроях зберігання даних. 2
Говорячи так, USB-вакцина підманює Windows припустити, що AUTORUN.INF
це не власне файл, а пристрій, з якого він не може читати чи записувати.
Як видалити файл
Якщо у вас є прямий доступ до файлової системи, досить , щоб встановити , Y
щоб 0
(змінити байти 42
в 02
) , щоб зробити файл нестираним знову. Ви також можете встановити перший байт записи каталогу E5
, безпосередньо позначивши файл як видалений. 3
Іншим варіантом буде використання іншого драйвера. Ubuntu 12.04, наприклад, може видалити файл без проблем. Насправді він автоматично «фіксує» запис каталогу під час його читання. 4
1 Цей атрибут використовується, наприклад, для мітки томів або папки Інформація про обсяг системи .
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
може легко зловживати зловмисним додатком, наприклад, створюючи невідмінний файл, який займає весь вільний провід.