Защита от записи на USB-накопители информации

    USB Block image

    Многие задавались вопросом как подключать съемные носители информации в режиме защиты от записи (readonly). Это может потребоваться:
    • для предотвращения утечки информации из компании через флешки или USB-диски
    • для проведения исследования флешки или жесткого диска при подключении их через USB-интерфейс, когда нежелательно модификация данных, в том числе изменение времени последнего достапа к файлам (у NTFS)

    Когда существуют аппаратные переключатели — нет проблем, в Unix-овых системах тоже все просто, добавляешь параметр -o ro или -r и диски монтируются в нужном режиме (readonly). В системах семейства Windows подключение разделов происходит в режиме записи и автоматически, при этом система несанкционировано пользователем начинает писать на раздел служебную информацию, тем самым нарушаю целостность данных (что критично при производстве технических экспертиз носителей информации).

    В Windows за режим монтирования съемных носителей информации отвечает параметр WriteProtect [dword] в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies:
    • 1 — режим защиты от записи (readonly)
    • 0 — режим записи

    А за идентификацию и автоматическое подключение USB-дисков параметр Start [dword] в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR:
    • 4 — блокировка USB-утсройств хранения информации
    • 3 — стандартные режим (без блокировок)

    Компании сами выбирают какие политики безопасности устанавливать: некоторые борятся чтобы не приносили сторонние программы (игрухи и т.п.) некоторые — чтобы ничего не уносили (особенно охраняемую информацию). Иногда бездумно просто запрещают все USB-устройства а пользователям для обмена необходимой служебной информацией (когда отсутствует общая ЛВС) приходится изрядно поизощрятся действуя в рамках политик (записывать данный на CD и перенос через комп администратора сети у которого возможно чтение флешек и т.п.). На мой взгляд если главная цель чтобы данные не утекли -установить (определенным группам) режим работы с флешками readonly.

    Существует несколько продуктов позволяющих устанавливать режимы работы с USB накопителями:

    все они отлично справляются со своими функциями, умеют работать централизовано с AD. Основной минус — дороговато. Как слабая альтернатива может сгодится и скрипт в групповой политике:

    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
    image
    В дальнейшем планирую нарастить функционал программы, но будет это не скоро.
    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 таки успел нам данные модифицировать )))
    Поделиться публикацией

    Похожие публикации

    Комментарии 29

      +2
      забыли упомянуть, что приложение требует Net.Framework. Теперь качаю 50 Мб, для того чтобы установить приложение в 50 Kб. Забавно однако.
        +6
        да, писал в Visual Studio 2008 (С++) — FrameWork обязательно. Думал он уже давно у всех стоит.
          0
          стоит… 1.1, поэтому версию посвежее просит.
            –1
            Вы, наверное, будете удивлены, но нет! :)

            Может быть есть смысл выложить исходники? А умельцы найдутся, чтобы портировать под что-нибудь, не требующее .NETа. :)
              0
              не вопрос! если нужно — выложу, только чуть попозже (под рукой нет)
              +4
              если бы вы писали на нативном С++ то никакой фреймворк не был бы нужен ;)
                0
                да знаю. Обычно пишу на C#. Хотел сделать что бы без фреймворка работала а оказалось что C++ в Visual Studio все равно его требует — такая незадача.
                  0
                  Это как это так? Зачем у вас C++ требует дотнет-фреймворк? Поищите получше «win32 приложение» :)
                    0
                    на самом деле требуется библиотеки Microsoft Visual C++ 2005 Redistibutable Package (которые, как я понял есть и в FrameWork)
                      +1
                      А, да, понял о чём речь. Ну, на самом деле, от этого можно избавиться — этот очевидный вывод сразу приходит в голову, ведь логично, что такого быть не должно, просто сделано зачем-то так большим братом :) Просто прилинкуйте нужные либы статически. Скорее всего это MFC и/или ATL. Ну, и генерация кода, как я помню в этих версиях VS по умолчанию стоит DLL, ставьте для релиза просто «Multi-Threaded без DLL». Может, какие-то ещё тонкости есть, поищите в интернетах, если интересно.
                        0
                        Статическую компановку я поставил. Поменял параметр Runtime Library с «Multi Threaded DLL (/MD)» на «Multi Threaded (/MT)». Линковщик стал ругаться на параметр /clr:pure, отключил его. После этого начала другая ошибка вылазить. После этого надоело разбираться с параметрами линковщика — и с компилировал программу как есть, с динамическими runtime library. Как доразбираюсь с ошибками — выложу новы пересобранный вариант.
            0
            что-то не работает система то… свободно записываются и сохраняются данные на флешке.
              0
              нужно сначала включить режим «только для чтения» — а затем подключать флешку. Если флешка уже в системе и включить режим «только для чтения» — запись на нее все равно будет возможна — нужно будет сначало флешку отключить, а затем подключить.
                0
                так и сделал… может дело в том, что эта флешка уже «зарегистрирована» в системе?
                  0
                  попробуй просто параметры раздела поменять.
                    0
                    обшибся. Попробуй изменить параметры реестра как написано выше. Может у тебя реестр заблокирован. Проверял на XP и 7 — все работает.
                      0
                      сорри, работает… сам тупанул: пытался сделать из-под ограниченной учетки.
                        0
                        а проверку на доступ к реестру не могли забабахать? :)
                          0
                          забабахаем! расмотрю все предложения и замечания
                0
                Уже доступен
                  0
                  Простите, не туда :(
                  0
                  извините, но мне одному в голову полезли нецензурные слова, когда я вижу программу по изменению реестра, которая написана на Visual Studio 2008 ???? — куда мы катимся??
                    +2
                    на assamblere было бы канечно гораздо круче — но на 2008 быстрее, да и привык как-то к нему.
                      +1
                      Плохо понимаю, как можно программировать «на Visual Studio 2008»?
                      +1
                      А можно сделать все проще через груп полиси…

                      CC->Security Settings->File System -> Создаем 2 пути и запрещаем чтение для группы USERS

                      %SystemRoot%\inf\usbstor.inf
                      %SystemRoot%\inf\usbstor.PNF

                      З.Ы. перегрузить комп 2 раза )
                        0
                        про этот метод забыл. Спасибо. Дабавлю в пост.
                        0
                        Мы как-то экспериментировали с USBSTOR — usb-гарнитуры перестали работать :-)
                          0
                          А зачем изобретать велосипед? Вот кто-то уже делает подобную программу noautorun.sourceforge.net/ (при желании можно еще найти)
                          Можно связаться с автором и вместе улучшать программу. Одна голова — хорошо, а две — лучше, еще и новое знакомство заведете.
                            0
                            через gpedit.msc вроде бы всегда делалось:
                            computer config — administrative templates — system — removable storage access.
                            Там же можно задать права доступа для различных классов устройств: флоппи, cd/dvd, съемные диски и т.д.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое