Защита флешки от записи новых файлов
Продолжаю развивать тему о защите флешек от вирусов (ранее мною публиковались материалы AUTOSTOP — скрипт для защиты флешки от autorun-вирусов и Panda USB and AutoRun Vaccine — лекарство от autorun-вирусов на флешке — там главным образом речь шла о защите флешки от записи на нее вредоносного файла autorun.inf). Тема интересна тем, что зачистка вирусов на компьютере — это борьба со следствием, а предохранение флешки от вирусов — это меры, направленные на устранение причины.
Защита флешки от записи новых файлов осуществляется путем определения свободного пространства на ней, с последующим полным его заполнением, используя утилиту fsutil. Такой метод отлично подходит, например, для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF.
Далее следует описание метода, его анализ, и способ полной автоматизации.
Метод придуман не мной, он подсказан пользователем cook, а позднее найден в нескольких специализированных источниках. Мною же разработан удобный автоматизированный способ его применения, а также (на основании анализа как сильных его сторон, так и уязвимостей) дано более верное название, а именно «защита от записи новых файлов» (в отличии от менее точного названия в других источниках «защита от записи», не полностью отражающего суть метода).
Способ
В оригинале для создания такого файла используется команда:
fsutil file createnew
Fsutil является служебной программой командной строки. Для использования программы fsutil необходимо войти в систему с помощью учетной записи администратор или члена группы администраторов.
- FAT32 имеет ограничение на размер файла (2^32 байт, т.е. 4 гигабайта). Соответственно, мало заполненную информацией флешку размером 8 гигабайт (такие флешки сегодня не так уж редки) и больше таким образом уже не защитить
- Создание больших файлов занимает несколько минут времени. А если понадобилось удалить защитный файл, дописать что-то на флешку, а потом снова выставить защиту? Снова теряется время на создание большого файла
В моем же автоматизированном варианте используется следующий код (его нужно оформить в виде bat-файла, переписать на флешку и запустить оттуда), свободный от перечисленных недостатков:
@echo off
setlocal enabledelayedexpansion
set /a sizofile=1024 * 1024 * 1024
for /l %%K in (1,1,256) do (
for /f «tokens=3» %%J in (‘dir %~d0 /-C’) do (set freespace=%%J)
if !freespace! EQU 0 goto ready
if !freespace! GTR !sizofile! (
call :getime
fsutil file createnew «%~d0\[ 1024 Mb ] !randtime!» !sizofile!
) else (
for /l %%K in (1,1,5) do (
for /f «tokens=3» %%J in (‘dir %~d0 /-C’) do (set freespace=%%J)
set /a sizofilemb=!sizofile! / 1024 /1024 / 2
set /a sizofile=!sizofile! / 2
if !freespace! GEQ 67108864 (
if !freespace! GEQ !sizofile! (
call :getime
fsutil file createnew «%~d0\[ !sizofilemb! Mb ] !randtime!» !sizofile!
)
) else (
if !freespace! EQU 0 goto ready
call :getime
fsutil file createnew «%~d0\[ 1-63 Mb ] !randtime!» !freespace!
goto :EOF
)
)
)
)
:getime
set randtime=!time:~-10!
set randtime=!randtime::=!
set randtime=!randtime:,=!
exit /b
- определяется количество свободного пространства на флешке
- если свободного пространства больше 1Gb — создаем файлы размером 1Gb до тех пор, пока это условие выполняется
- Когда свободного пространства меньше 1 гигабайта — последовательно пытаемся создать файлы размером 512Mb, 256Mb, 128Mb, 64Mb и последний файл размером от 1 до 63Mb
В итоге на флешке создается примерно следующая структура файлов, заполняющая все свободное место (7-значный уникальный код в конце названия каждого файла необходим для избежания ошибки создания файлов с одинаковыми именами):
[ 1-63 Mb ] 7344296
[ 64 Mb ] 7343581
[ 256 Mb ] 6050959
[ 512 Mb ] 6043075
[ 1024 Mb ] 2341570
[ 1024 Mb ] 2353157
После установки на флешку такой защиты, нельзя ничего с нее удалять (включая и упомянутый bat-файл), иначе защита перестанет действовать. Для снятия защиты от записи новых файлов (например, при необходимости записать что-то на флешку), необходимо удалить один или несколько созданных таким образом файлов минимально необходимого размера, и записать свои данные. Восстановление защиты после этого займет минимальное время.
Анализ
Строго говоря, такой метод нельзя считать полным аналогом аппаратного переключателя «read-only», имеющегося на некоторых видах флешек. Даже если флешка защищена от записи новых файлов описанным методом, вирус имеет возможность создать файл autorun.inf на флешке — но вот записать что-либо в этот файл уже не сможет.
Следует также заметить, что вирус имеет возможность поразить потенциально уязвимые файлы, уже содержащиеся на флешке, ввиду остатка свободного места (обусловленного кластерностью) выделенного для хранения файла. Но тенденции развития функционала вирусов позволяют говорить о том, что сегодня вирусы все меньше поражают отдельные файлы, а все больше используют уязвимости операционной системы Windows.
Таким образом, считать такой способ защитой от записи можно только в контексте невозможности создания на флешке непустых новых файлов. Что однако, как показывает практика, является серьезной мерой защиты от autorun-вирусов. Как говорилось выше, этот метод отлично подходит для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF, а также для флешек с личным набором необходимого программного обеспечения, подключаемого к чужим компьютерам.
Хочется сказать еще несколько слов о пресловутой надежности защиты, обеспечиваемой аппаратным переключателем «Read-only». Имел место такой случай.
В фотоаппарате жены (Canon А610) нет возможности показа индикатора заряда батареи. Я нашел альтернативную прошивку, имеющую такую функцию. Записал ее на карту памяти. В инструкции к прошивке говорися, что для того, чтобы она грузилась автоматом (а не руками запускалась после включения фотоаппарата), необходимо переключатель на карте памяти перевести в положение «Заблокировано». Я несколько раз перечитал этот пункт — уж не ошибся ли. Нет — все верно. Ставлю переключатель в положение «Lock», заряжаю карту в фотоаппарат, предчувствуя что сейчас он выругается о невозможности записи, и… И ничего такого не происходит — все снятые кадры прекрасно сохраняются на карту памяти, а неудачные кадры без проблем можно удалить. Выводы делайте самостоятельно.
Конкретная реализация
Код для самостоятельного создания bat-файла приведен выше. Но наиболее удобно использовать новую версию 2.4 моего скрипта AUTOSTOP
Она умеет после завершения создания каждого файла выдавать короткий звуковой сигнал через системный динамик, избавляя от необходимости самому каждые несколько секунд поглядывать, не создался ли еще файл (ведь, как известно, «чайник, на который смотришь, никогда не закипит»), а по завершении установки защиты выдает длинный звуковой сигнал.
PS — напомню что защиту флешки методом прав NTFS никто не отменял, но бывают случаи, когда ее применение по каким-то причинам нежелательно.
PPS — спасибо Elroir за помощь в написании кода.
Установка и снятие защиты на флешке от записи

Опасаетесь, что вашу информацию могут похитить с рабочего компьютера и унести на флешке? Или наоборот, боитесь потерять данные, хранящиеся на флешке из-за того, что они легко удаляются? Как обезопасить файлы от копирования на сменный носитель, не запрещая его использования в системе? А как защитить скопированное от удаления?
Защита флешки от записи может быть реализована несколькими способами, в зависимости от преследуемых целей. Одни из них запрещают запись на съемный диск средствами самой системы, что не дает возможности записывать файлы на любую флешку на вашем компьютере, другие же позволяют запретить запись на конкретный носитель, независимо от того, к какому компьютеру он будет подключен. Рассмотрим их подробнее:
Запрет записи на сменные носители путем редактирования реестра.
Небольшие изменения, внесенные в реестр, позволят добиться запрета записи на любые съемные диски. Для того, чтобы внести необходимые настройки, откройте окно “Выполнить” при помощи комбинации клавиш Win/R и запустите редактор реестра (для этого нужно ввести команду “regedit” в окне и нажать кнопку Ok или Enter):

В редакторе нас интересует раздел HKEY_LOCAL_MACHINE,

в котором последовательно откроем /SYSTEM/CurrentControlSet/Control/

В подразделе Control нам необходимо найти папку StorageDevicePolicies (а если ее нет – создать новую) и в параметре WriteProtect заменить значение нуль на единицу:

Для этого двойным щелчком откроем параметр и отредактируем его значение:

В том случае, если мы самостоятельно создавали StorageDevicePolicies, нам нужно в ней создать и параметр WriteProtect, для чего необходимо правой кнопкой мыши открыть контекстное меню, выбрать “Параметр DWORD 32 бита” и присвоить новому параметру имя WriteProtect, после чего изменить его значение на единицу, указанным выше способом.
После закрытия редактора реестра, перезагрузите компьютер для применения внесенных изменений. Запись на съемные диски более не доступна, на флешку невозможно ничего скопировать, а существующие на ней файлы нельзя удалить и переименовать:

Чтобы отключить запрет на запись, необходимо вернуть параметру WriteProtect нулевое значение.
Запрет записи на флеш носители при помощи изменения групповой политики
Другой способ, позволяющий добиться аналогичных результатов, состоит во внесении изменений в локальную групповую политику. Откройте редактор, используя знакомые нам клавиши Win/R со вводом команды gpedit.msc в окне “Выполнить”:

Последовательно перейдем по пути Конфигурация компьютера / Административные шаблоны / Система / Доступ к съемным запоминающим устройствам:

Здесь нас интересует параметр “Съемные диски: запретить запись”, который необходимо установить во включенное состояние:

Данный способ хорош тем, что не требует перезагрузки системы для применения настроек – после нажатия кнопки “Применить”, запрет записи на диски включается сразу.

Также сразу запрет записи и выключается, достаточно установить параметру “Съемные диски: запретить запись” значение “Не задано”, или “Отключить”.
Оба метода хороши для запрета записи на вашем компьютере, но защитить важные данные на флешке, при ее использовании для переноса файлов на другой компьютер, они не способны. Для этого нужен совершенно другой подход:
Защита флешки от записи путем установки прав доступа
Для применения этого способа необходимо отформатировать вашу флешку стандартными средствами Windows в файловую систему NTFS:

Все данные при этом будут уничтожены, поэтому если у вас на ней имеются важные документы, скопируйте их предварительно на жесткий диск, а после форматирования – верните на флешку.
Далее нам нужно установить права доступа, для этого щелкните правой кнопкой мыши на изображении съемного диска в “Проводнике” и выберите пункт “Свойства”:

В “Свойствах” нас интересует вкладка “Безопасность”, на которой мы можем внести изменения в права доступа файловой системы:

Установите для группы “Все” запрет на запись, примените изменения:

Теперь, независимо от компьютера, к которому будет подключена ваша флешка, прав на запись (а соответственно и на удаление файлов) ни у одного пользователя не будет. Причем восстановить права можно лишь на том компьютере, где вносились первоначальные изменения, вернув галочку для пункта “Запись” в положение “Разрешить”.
При желании, вы можете поэкспериментировать с различными группами пользователей, например, разрешив запись только группе с административными правами. Однако учтите, что эти настройки будут действительны только для администраторов на том компьютере, где вносятся изменения и ни на каком другом.
Каким образом снять такую защиту от записи, если доступа к исходному компьютеру нет, или если на этом компьютере переустановили операционную систему? В этом случае вам поможет только форматирование флешки заново. Не пугайтесь, если на ней вы храните важные документы – скопируйте их в папку на жестком диске компьютера, а потом смело форматируйте свой носитель информации. После форматирования файловая система вернется в исходное состояние, для уверенности можно выбрать систему FAT в качестве новой файловой системы.
Защита сменного носителя от записи при помощи встроенного переключателя
Не стоит забывать и о том, что некоторыми производителями предусмотрен переключатель, позволяющий блокировать запись на флешке. Это касается, в основном, карт памяти и адаптеров для них, однако и USB-носители тоже могут быть им оборудованы:

В том случае, если ваш носитель имеет такой переключатель, просто переключите его – и до тех пор, пока вы не вернете его в обратное положение, записать что либо, или случайно удалить файлы, будет невозможно. Главное – сами не забудьте, что вы включили блокировку от записи на флешку, иначе вам гарантированы неприятные эмоции, когда вы не сможете представить отчет начальнику из-за того, что не получится скопировать файлы на флешку, теперь уже защищенную.
Как защитить флешку от вирусов и стирания информации
Те, кто активно используют флешки в процессе своей работы, наверняка не единожды задумывались над вопросом, как защитить устройство и хранящуюся на нём информацию. Защитить от вирусов, которые могут проникнуть на накопитель, если его приходится подключать к чужим компьютерам. Защитить, возможно, от намеренных действий коллег на работе, жаждущих уничтожить хранимую информацию. Защитить от детей. Уберечься как минимум от вирусов и детских шалостей можно с помощью механического переключателя для защиты от записи, если флешка таковой предусматривает. Если такого переключателя нет, можно прибегнуть к программным аналогам такого механизма. А при необходимости ещё и усилить безопасность хранимой информации. Об этом, собственно, и будем говорить далее.
↑ Как защитить флешку от вирусов и стирания информации
↑ Программа Ratool
Защищать съёмные накопители – флешки, SD-карты, оптические диски — от записи ненужной информации и удаления, наоборот, нужной информации умеет небольшая портативная программка Ratool. Её совершенно бесплатно можно скачать на сайте разработчиков:
https://www.sordum.org/8104/ratool-v1-3-removable-access-tool
Две основные возможности программки:
• Запрет записи данных на носитель и блокировка удаления существующих данных;
• Полное блокирование носителя.
Запускаем Ratool. Чтобы запретить запись на флешку и удаление с неё данных, в окне программки выбираем пункт «Разрешить только чтение». Жмём кнопку «Применить изменения».

Увидим уведомление, в котором говорится, что для применения внесённых изменений флешку нужно переподключить. Жмём «Ок».

Вынимаем флешку из USB-порта и снова вставляем. Теперь при попытке копирования файлов на флешку в проводнике Windows этот процесс подвиснет на 0% и никак не будет продвигаться дальше.

А при удалении с флешки файлов операция будет попросту игнорироваться. А вот Total Commander желающему несанкционированно поработать с нашей флешкой расскажет о том, что происходит. При копировании файлов внутри файлового менеджера увидим сообщение, что, мол, нет доступа.

А при попытке удаления данных Total Commander запросит снятие защиты от записи.

Ratool при необходимости может заблокировать флешку полностью – сделать так, что компьютер вовсе не будет её определять. Для этого в окне программы нужно выбрать последний пункт «Заблокировать USB накопитель» и применить изменения.

И, как и в предыдущем случае, переподключить флешку.
Чтобы вернуть всё назад — сделать флешку определяемой компьютером или разрешить запись данных — в окне Ratool выбираем первый пункт «Разрешить чтение и запись…», применяем изменения и переподключаем носитель.

От сообразительных сторонних лиц, которые могут раскрыть секрет защиты флешки от записи, в арсенале Ratool есть возможность доступа к программе при условии ввода пароля.

Простой и удобный механизм работы Ratool, увы, не лишён недостатков. Осуществляемая средствами этой программки блокировка носителей касается только текущего компьютерного устройства. На другом ПК, на другом ноутбуке флешка не будет защищена от записи. На любом новом устройстве придётся запускать Ratool и проводить операцию по запрету записи данных касательно именно этого устройства. Благо, весит программка совсем мало, так что её можно поместить на флешку и всегда носить с собой. Ratool является программой для Windows, запускается с EXE-файла, следовательно, она не поможет в случаях подключения флешки к компьютерам на базе других операционных систем.
↑ Редактор локальной групповой политики Windows
Ratool, по сути, являет собой упрощённый механизм блокировки съёмных носителей информации, который на своём личном или рабочем компьютере можно осуществить средствами самой Windows – с помощью редактора групповой политики. Последний нельзя использовать в редакции Windows Home, зато в редакции Pro с его помощью можно заблокировать флешки, SD-карты, оптические диски и прочие накопители как для всех, так и для отдельных учётных записей компьютера. Как работать с редактором в принципе и в части создания ограничений только для отдельных пользователей в деталях рассматривается в этой статье. В её п. 3 описан способ отключения записи данных на съёмные носители.
Даже первый способ, не говоря уже о втором, хорош, когда флешка используется в ограниченном круге Windows-компьютеров. Если круг компьютеров широк, более уместными будут иные действия. Можно, например, отдельным способом обезопасить флешку от возможности проникновения вредоносного ПО. Ну а вопрос с блокировкой возможности удаления данных сторонними лицами желательно заменить на вопрос ограничения доступа к данным накопителя в принципе.
↑ Защита флешки от вирусов
Защитить флешку от вирусов поможет механизм записи на неё специальных скрытых файлов с нулевым размером. Они имеют названия и расширения файлов автозапуска, под которые обычно маскируется вредоносное ПО, не удаляются, не перезаписываются. Они просто хранятся на флешке, не занимая места. Если вирус попытается перезаписать их, ему это не удастся сделать. Создавать такие файлы-обманки умеет, например, бесплатная портативная утилита Flash Defender, скачать можно на нашем облачном хранилище по ссылке:
https://cloud.mail.ru/public/GpFu/PxPLjziXf
Запускаем утилиту. В левой части окошка галочкой отмечаем флешку. Справа кликаем кнопку «Выбрать все», затем «Удалить».

Если на флешке до этого существовали скрытые файлы с именами из перечня Flash Defender, они должны быть удалены, чтобы утилита могла создать свои такие файлы. Далее в правой части окошка снова жмём кнопку «Выбрать все» и жмём «Создать».

Всё – теперь можно не бояться подключать флешку к компьютеру каждого встречного-поперечного. Как минимум от классических сценариев распространения вредоносного ПО такая защита сработает.
↑ Шифрование флешки
У Windows есть свой штатный механизм шифрования дисков и съёмных носителей BitLocker, но поскольку нам нужен универсальный способ доступа к данным флешки, его рассматривать в этом контексте никак нельзя. BitLocker не доступен в редакции Windows Home, засилье которых можем наблюдать на многих OEM-устройствах обывателей. Универсальный способ защиты может предложить кроссплатформенная программа TrueCrypt. Она шифрует носитель, запароливает доступ к нему. С ней можно работать в системах Windows (в том числе с портативной версией), Mac и Linux. Подробно работу этой программы мы рассматривали в статьях о «TrueCrypt инструкция» и EncFS.
Защита от записи на USB-накопители информации

SET WSHShell = CreateObject(«WScript.Shell»)
WSHShell.RegWrite «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies\WriteProtect», «00000001», «REG_DWORD»
или
SET WSHShell = CreateObject(«WScript.Shell»)
WSHShell.RegWrite «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start», «00000004», «REG_DWORD»
UPD. Также, для отключение USB можно воспользоваться следующим методом: (за метод спасибо damnet) (данный метод работает если USB-устройство хранения данных еще не установлено в компьютер.)
1. Назначте пользователю или группе запрещающие права на следующие файлы:
%SystemRoot%\Inf\Usbstor.pnf
%SystemRoot%\Inf\Usbstor.inf
Для этого во вкладке Безопасность файла ставим галочка напротив Полный доступ — Запретить, жмем применить.
2. Назначте для этих файлов запрещающие права учетной записи SYSTEM.

Для удобства в переключении режимов доступа к USB storage device сворганил небольшую програмку USBWriteProtect. Кому нужно можете использовать в свое удовольствие. Скачать тут place.ifolder.ru/15535906
В дальнейшем планирую нарастить функционал программы, но будет это не скоро.
UPD. Для программы требуется Microsoft Visual C++ 2005 Redistibutable Package.
Для уверенности что Windows ничего все-таки не ухитряется записать на USB-диск — программу протестировал:
1. Считаем контрольную сумму USB-диска с NTFS-разделом
md5sum /dev/sdb
215820fe569e57201c9b02b1fb37a272
2. Подключаем к компьютеру Windows XP с режимом работы с флешками readonly
3. Просматриваем файлы и катологи на флешке, работаем с другими приложениями.
4. Отключаем диск и проверяем контрольную сумму
md5sum /dev/sdb
215820fe569e57201c9b02b1fb37a272
5. Ура! Радуемся, readonly режим работает.
6. Подключаем к компьютеру Windows XP со стандартным режимом работы с флешками (write read)
7. Практически сразу отключаем диск и проверяем контрольную сумму
md5sum /dev/sdb
db9c636c35b352dbf024a73cd195c84f
8. А Windows таки успел нам данные модифицировать )))