Блокировка Flash-накопителей


Продолжим серию статей о полезных и коварных программах.

Сегодня мы рассмотрим следующее мое творение. Даже не знаю, как назвать эту программу, пусть будет «Блокиратор Flash-накопителей».

Из названия видно, чем занимается сия программа. Полезность это программы переоценить сложно, особенно в сфере бизнеса, так как утечка информации от сотрудников самой фирмы, эдакие Павлики Морозовы, которые пилят сук, на котором сидят.

Ну да не будем говорить о мотивациях, которые их побуждают для совершения таких действий, ибо их очень много и в рамки этой статьи это не входит. Продолжим, по разным данным, кража конфиденциальной информации, будь то коммерческая, служебная и иные виды защищаемой информации (разумеется, с целью последующего извлечения выгоды), составляет от 70 до 90%, что согласитесь не мало, и каким безупречным бы не был сотрудник доверять на 100% нельзя никому(но и слишком подозрительным быть не стоит, поверьте, ваша информация о том как выбрать телевизор мало кому интересна).

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

Как я уже писал, программа эта блокирует Flash-накопители (говоря тут о Flash-накопителя речь идет о USB-накопителях), точнее не столько блокирует, сколько подключаемый Flash-накопитель просто не определяется в операционной системе.

Стоит заметить, что продукт сыроват, ну оно и не удивительно, ибо за пол дня полноценный продукт не напишешь, но о его недостатках и тому подобное ниже.

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

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

Если вкратце то при подключении Flash-накопителя к компьютеру происходит следующее: первым делом компьютер выполняет свои действия, нам не столь интересные, а вот после того как компьютер понял, что это Flash-накопитель начинается самое интересное.

Сперва, операционная система смотрит, а подключался ли ранее этот Flash-накопитель, к данному компьютеру, точнее к данной операционной системе.

Если ранее Flash-накопитель подключался, то, грубо говоря, операционная система больше ничего не делает (такие мелочи как считывание параметров из реестра об этом устройстве мы не рассматриванием), а просто подключает его, чтобы с ним можно было работать, тут стоить уделить внимание одному моменту: операционная система смотрит, что надо делать с такими Flash-накопителями, просматривая для этого одни ключ реестра.

А если этот Flash-накопитель ранее не подключался, то операционная система (не забываем, что операционная система знает что это Flash-накопитель) запрашивает инструкции, как устанавливать эти самый Flash-накопители, обращаясь для этого к 2-м файлам (каким именно описано ниже).

Проанализировав действия операционной системы, самым простым способом мне показалось просто изменять значение ключа реестра («SYSTEMCurrentControlSetServicesUSBSTORStart»), в котором записано, что делать с подключаемыми Flash-накопителями.

Как ни странно, по умолчанию стоит циферка «3», что означает автоматическое подключение Flash-накопителя.

Для того чтобы «сказать» операционной системе, что не надо подключать Flash-накопители, достаточно изменить значение ключа на «4». И вроде все хорошо, но коварная операционная система не дает расслабиться.

Если подключить к компьютеру Flash-накопитель, который ранее не подключался, то операционная система, как и рассчитывалось, устанавливает его, тем самым, фиксируя факт попытки подключения, и неожиданно снова включает автоматическое подключение Flash-накопителей, что крайне не приятно.

Из всего этого следует, что нам следует учитывать оба варианта подключений, а для этого необходимо найти файлы, в которых описаны инструкции регистрации Flash-накопителей в реестре. Найти эти файлы особого труда не составило, как оказалось за это отвечают следующие 2 файла:

1. “%SystemRoot%Infusbstor.inf”. Для тех, кто не знает «%SystemRoot%» это путь до папки операционной системы, в подавляющем большинстве случаев это «C:Windows». Узнать это можно очень легко, открываем командную строку (Пуск –> Выполнить –> «cmd» -> OK) и там пишем «cd %SystemRoot%», в результате текущей папкой станет эта самая папка. В результате отобразится полный путь этой папки, у меня это «С:Windows>» (символ «>» не относится к пути, он исполняет роль разделителя между путем к папке и выполняемой командой).

2. “%SystemRoot%Infusbstor.PNF”

Удаление этих файлов показало, что Flash-накопители ранее не подключаемые к данному компьютеру, устанавливать отказываются и операционная система предлагает самому попытаться установит.

При этом Flash-накопители ранее использующиеся подключаются и работают абсолютно нормально.

Для того чтобы написать эту самую программу, осталось выяснить, в каких разделах записывается информация о Flash-накопителях. Не много поискав в реестре, оказалось, что если удалить информацию о Flash-накопителе из следующих разделов, то операционная система считает, что Flash-накопитель ранее не подключался:
HKLMSYSTEMControlSet001ControlDeviceClasses{53f56307-b6bf-11d0-94f2-00a0c91efb8b};
HKLMSYSTEMControlSet001ControlDeviceClasses{a5dcbf10-6530-11d2-901f-00c04fb951ed};
HKLMSYSTEMControlSet001EnumUSB;
HKLMSYSTEMControlSet001EnumUSBSTOR;
HKLMSYSTEMControlSet003ControlDeviceClasses{53f56307-b6bf-11d0-94f2-00a0c91efb8b};
HKLMSYSTEMControlSet003ControlDeviceClasses{a5dcbf10-6530-11d2-901f-00c04fb951ed};
HKLMSYSTEMControlSet003EnumUSB;
HKLMSYSTEMControlSet003EnumUSBSTOR;
HKLMSYSTEMCurrentControlSetControlDeviceClasses{53f56307-b6bf-11d0-94f2-00a0c91efb8b};
HKLMSYSTEMCurrentControlSetControlDeviceClasses{a5dcbf10-6530-11d2-901f-00c04fb951ed};
HKLMSYSTEMCurrentControlSetEnumUSB;
HKLMSYSTEMCurrentControlSetEnumUSBSTOR.

И тут встает интересный вопрос, а определить где о каком именно Flash-накопителе записи.

Операционная система для этого использует «SID», не будем засорять голову всякими не понятными сокращениями, и будет называть это уникальным идентификатором Flash-накопителя, который не повторяется ни у одного Flash-накопителя, тем самым, позволяя точно сказать, что это именно этот Flash-накопитель.

Если сильно захотеть, то можно изменить уникальный идентификатор Flash-накопителя, но это бывает при большом желании, а значит при спросе, то появляется и предложение, по изменению этого самого уникального идентификатора. Конечно, найти такого кудесника, который сможет это сделать сложно, но главное возможность такая имеется.

Так вот, мы то не операционная система, а уникальный идентификатор своего Flash-накопителя узнать хочется, хотя бы, для того чтобы вести учет этих Flash-накопителей, что, кстати, тоже нужно делать при работе с конфиденциальной информацией.

Для того чтобы узнать уникальный идентификатор своего Flash-накопителя необходимо выполнить ряд не хитрых действий.

Для начала подключаем Flash-накопитель, чтобы операционная система знала о его присутствии. Теперь открываем диспетчер устройств, сделать это можно несколькими способами:

1. Управление компьютером (как попасть в «Управление компьютером» написано здесь) и в списке выбираем «Служебные программы», среди которых есть нужный нам «диспетчер устройств»

2. Правой кнопкой мыши нажать на ярлыке «мой компьютер», из списка выбрать «Свойства», затем перейти во вкладку «Оборудование» и там нажать кнопочку «Диспетчер устройств»

3. Пуск -> Выполнить -> «devmgmt.msc» -> OK

В диспетчере устройств из списка выбираем пункт «Дисковые устройства», в которых располагаются все подключенные накопители, в том числе и Flash-накопители.

В появившемся списке дисковых устройств надо найти ваш Flash-накопитель, самый простой способ это запомнить какие устройства в списке, затем извлечь Flash-накопитель, при этом список обновится и на одну запись в нем будет меньше.

Снова подключаем Flash-накопитель, список опять обновляется и мы, с уверенность, знаем каким именно дисковым накопителем является наш Flash-накопитель.

После того как мы определили наш Flash-накопитель, просматриваем его свойства. Для этого правой кнопкой мыши нажимаем на строке с названием нашего Flash-накопителя и среди списка выбираем «Свойства».

Переходим во вкладку «Сведения», и в выпадающем списке выбираем пункт «Код экземпляра устройства», который и так выбран по умолчанию. В списке мы видим одну строку, примерно следующего содержания: «USBSTORDISK&VEN_KINGSTON&PROD_DATATRAVELER_2.0&REV_PMAP5B8213003402&0», у каждого она уникальная, но все похожи.

Из всего этого набора символов нас интересует только «5B8213003402», который собственно и является уникальным идентификатором.

Собственно это вся теоретическая база, для этой программы. Я уже описывал алгоритм работы, но все-таки думаю целесообразно повториться. И так алгоритм следующий:

1. Получение списка разрешенных Flash-накопителей, он же состоит из Flash-накопителей, которые ранее использовались на компьютере (по мнению операционной системы). В программе предусмотрена возможность удаление Flash-накопителей из этого списка, соответственно операционная система забудет про них.

2. Удаляем файлы, которые необходимы для регистрации нового Flash-накопителя, точнее не удаляем, а перемещаем в укромное место. При этом начинаем следить, чтобы умные люди не скопировали их туда обратно, в случае чего удаляем снова.

3. При попытки подключения Flash-накопителя операционная система, не сможет автоматически зарегистрировать Flash-накопитель, в результате чего предложит это сделать пользователю, в виде нового диалогового окна. Дабы не раздражать пользователя, мы закрываем это окошко.

После завершения работы программы, через диспетчер задач или же человеческим способом, файлы «удаленные» программой восстанавливаются на свое место, и значит все Flash-накопители снова работают без каких ли то ни было проблем.

Во время работы программы, можно сделать, чтобы иконка программы была в «System Tray» и без него, т.е. как обычный фоновый процесс – без окон и дверей.

Конечно, функционала здесь явно маловато так что, пишите пожелания, что стоит добавить к функционалу этой программы.

Чуть не забыл – выкладывать ее не буду, по причине ее отсутствия, не смог я найти рабочий вариант в куче своего хлама. Да собственно алгоритм работы понятен и так, можно все ручками сдлеать, конечно за исключением удаления Flash-накопителя из "знаний" операционной системы, проверив сие действо я убедился, что это крайне не благодарное занятие.

Материал взят с http://all-ib.ru

Обновлено: 11.03.2015