Як зробити файл, який не можна видалити, на USB-накопичувачі?


15

Хтось користувався моїм USB-накопичувачем, і повернувши його мені, я виявив, autorun.infщо це неможливо. Я спробував змінити його атрибут файлу, який є лише H (навіть не встановлений як системний файл), але він продовжує говорити про заборону доступу.

USB встановлений на FAT32, на запит мого друга він сказав мені, що він використовує вакцину Panda USB

Як вони це роблять? Я намагаюсь скористатися деяким редактором дискового сектору, але не маю уявлення, який шістнадцятковий файл вони змінюють, щоб зробити такий файл і зробити його знову видальним. Форматування диска видаляє його, але мені цікаво, як можна встановити такий тип атрибутів файлів.


Я знайшов ще один інструмент, який робить те саме посилання BitDefender USB Immunizer
MegaNairda

Ви перевірили дозволи на файл?
Моав

@Moab Файлова система на USB - FAT32.
MegaNairda

У Windows 7 або новіших версіях створений Panda USB Vaccine autorun.inf відображатиметься з атрибутами файлів "HX", тоді як "H" означає прихований, а "X" означає зарезервований FILE_ATTRIBUTE_DEVICE.
Explorer09

Відповіді:


16

Метод випробування

Панда, схоже, не розкриває точний механізм своєї "вакцини", що зрозуміло, оскільки це в основному безпека через неясність . Якщо ви знаєте, як це працює, ви можете змінити наслідки, і "вакцина" стане марною.

Я завантажив і встановив USB-вакцину Panda і "вакцинував" свою флешку, скинув розділ флешки з 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-вакцина

Запис для 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, коли файл створюється і ніколи не змінюється і не переглядається після цього.

Крім того, він рекомендує перевірити вміст каталогу:

Ці вказівки надаються таким чином, що утиліти з обслуговування дисків можуть перевіряти окремі записи каталогів на «правильність», зберігаючи сумісність із майбутніми вдосконаленнями структури каталогів.

  1. НЕ дивіться на вміст полів для введення каталогу, позначених зарезервованими і припускайте, що якщо вони є будь-яким значенням, крім нуля, вони "погані".

  2. НЕ скидайте вміст полів введення каталогів, позначених зарезервованими до нуля, коли вони містять ненульові значення (за умови, що вони "погані"). Поля введення каталогів позначені зарезервованими , а не повинні бути нульовими . Вони повинні ігноруватися вашою заявою. Ці поля призначені для подальшого розширення файлової системи. Ігноруючи їх, утиліта може продовжувати працювати на майбутніх версіях операційної системи.

Що насправді відбувається

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може легко зловживати зловмисним додатком, наприклад, створюючи невідмінний файл, який займає весь вільний провід.


6

Це хитрий трюк файлової системи, який використовує зарезервоване ім’я в просторі імен Win32. Деталі того, як Panda USB вакцина робить це, описані тут .

По суті, програмне забезпечення створює папку з назвою autorun.inf(що запобігає створенню файлу з таким самим іменем), а потім у цій папці створюється названий файл LTP1. У DOS LPT1посилається на порт принтера, а Windows підтримує це для зворотної сумісності. Отож, коли ви запитуєте файл з назвою LPT1, Windows намагається відкрити порт принтера, і це якось запобігає нормальному видаленню папки.

Щодо того, як видалити папку / файл без форматування накопичувача, ця стаття Microsoft Knowledgebase дає кілька порад:

Причина 5: Ім'я файлу містить зарезервоване ім’я в просторі імен Win32

Якщо ім'я файлу містить зарезервоване ім’я (наприклад, "lpt1") у просторі імен Win32, ви, можливо, не зможете видалити файл. Щоб вирішити цю проблему, перейменуйте файл за допомогою програми, яка не є Win32. Ви можете використовувати інструмент POSIX або будь-який інший інструмент, який використовує відповідний внутрішній синтаксис для використання файлу.

Крім того, ви можете використовувати деякі вбудовані команди для обходу типових перевірених імен Win32, якщо ви використовуєте певний синтаксис для визначення шляху файлу. Наприклад, якщо ви використовуєте Del команду в Windows XP, ви можете видалити файл під назвою "lpt1", якщо вказати повний шлях до файлу, використовуючи такий спеціальний синтаксис:

del \\?\c:\path_to_file\lpt1

Щоб отримати додаткові відомості про видалення файлів із зарезервованими іменами під Windows NT та Windows 2000, натисніть такий номер статті, щоб переглянути статтю в базі знань Microsoft:

120716 Як видалити файли із зарезервованими іменами в Windows

Щоб отримати додаткові відомості про видалення файлів із зарезервованими іменами під Windows XP, натисніть такий номер статті, щоб переглянути статтю в базі знань Microsoft:

315226 Як видалити файли із зарезервованими іменами в Windows XP

Якщо ви відкриєте ручку до файлу за допомогою типового CreateFile механізму Win32 , певні імена файлів зарезервовані для пристроїв DOS старого стилю. Для зворотної сумісності ці імена файлів заборонені, і їх неможливо створити за допомогою типових викликів файлів Win32. Однак це питання не є обмеженням NTFS.

Ви можете використовувати програму Win32 для обходу типових перевірок імен, які виконуються, коли файл створюється (або видаляється), використовуючи ту саму техніку, яку ви використовуєте для переміщення папок, глибших ніж MAX_PATH. Крім того, деякі інструменти POSIX не підлягають цим перевіркам імен.


2
Це старий спосіб вакцини Panda USB - захист USB-накопичувача від зловмисного autorun.inf. Спробуйте завантажити та скористатися наданим мною посиланням, і ви побачите, що воно не створює папок. Лише один файл під назвою autorun.inf
MegaNairda

@MegaNairda: Дивно ... Я встановив USB-вакцину, але щоразу, коли намагаюся вакцинувати мій FAT32 thumbdrive, програма створює AUTORUN.INF(з тим же рядком "caacaa ...", що згадується в статті) на диску, а потім негайно. замерзає. У мене взагалі не виникає проблем із видаленням автозапуску ...
Lèse majesté

Спробуйте посилання BitDefender USB Immunizer Panda USB вакцина також іноді зависає в моїй системі, коли я вставляю USB-накопичувачі.
MegaNairda

@MegaNairda: З цим поштовхом, мабуть, виникла проблема. Жодна програма не змогла його вакцинувати. Однак цей збіг був корисним у ньому. Він показав, що імунізатор BitDefender принаймні використовує подібну методику. Журнал помилок показав, що він намагався створити ряд вкладених папок / файлів, I:\autorun.inf\bdsanitize#\bdsanitize#...де #"1" або "2". Файл журналу також додає файл / ім’я кожного рівня з .dirабо, .fileале це може бути просто показано для цілей реєстрації / налагодження.
Lèse majesté

1
Здається, що справді є проблема з вашим USB. Іммунізатор BitDefender створює папку, autorun.infале після цього її буде замінено autorun.inf файлом . Відмінність від autorun.infUSB-вакцини Panda полягає в тому, що файл порожній і не містить такого, cacacaяк створений Panda.
MegaNairda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.