Как заблокировать USB, чтобы заблокировать Pen Drive и внешние жесткие диски - PullRequest
1 голос
/ 19 июля 2011

Я хочу создать программу для блокировки USB, чтобы никто не мог получить доступ к USB-порту для передачи мультимедиа.

Я не хочу блокировать USB-порт в BIOS, потому что я использую USB-клавиатуру и мышь.

Примечание. Я хочу предоставить права администратора всем системам, но хочу заблокировать только USB.В моем офисе люди должны иметь права администратора для доступа к другим реестрам и службам Windows, потому что это программисты.Немногие антивирусы, такие как Norton, имеют опции блокировки USB, независимо от того, работает система в режиме администратора или в режиме пользователя.В этом случае каждая система запускает клиентский антивирус, а серверный антивирус запускается на сервере.Мы делаем настройки на сервере и во всех клиентах USB блокируется.Теперь, пожалуйста, не говорите, что у вас есть Norton Antivirus :) Я хочу знать, что должен быть любой способ, которым эти программисты Fundu делали в Norton Antivirus.

Теперь, что я сделал для достижения этой цели.

Я создал две службы Windows.Одна служба постоянно изменяет начальное значение USBSTOR на 4 с помощью таймера, чтобы отключить USB всегда.Также первая служба постоянно проверяет, запущена ли вторая служба или нет.Если нет, то они отправляют мне по электронной почте уведомление о том, что кто-то пытался остановить службу.

Вторая служба постоянно проверяет, работает ли Первая служба или нет.Если нет, то они отправляют мне уведомление по электронной почте.

Я сделал это так, чтобы люди не могли остановить службу, чтобы разблокировать USB.

Теперь проблема в том, что люди могут отключить мою службуи сервис не будет работать.На этом этапе статус службы запущен, но фактически отключен.Поэтому я могу проверять только СОСТОЯНИЕ (Отключено / Включено / Автоматически) из раздела реестра (Пуск) моей службы, который будет находиться по адресу

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/MyServiceName

Если значение Пуск равно 2 (Автоматически), 3 (Вручную), 4 (отключено) мы можем проверять через нашу службу каждые 2 секунды (например), было ли изменено начальное значение на 4, если да, то мы можем сбросить его до 2.

Но здесь проблема заключается в том, что сслужба Я могу получить доступ к значениям USBSTOR, но не к любым регистрам служб (из-за проблем с безопасностью)

Я использовал этот код для доступа к реестру USBSTOR с разрешениями на запись

Microsoft.Win32.RegistryKey key;
string user = Environment.UserDomainName + "\\" + Environment.UserName;
RegistrySecurity rs = new RegistrySecurity();
rs.AddAccessRule(new RegistryAccessRule(user, RegistryRights.WriteKey, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Allow));
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\services\\USBSTOR", true);
key.SetAccessControl(rs);
key.SetValue("Start", "4",RegistryValueKind.DWord);

Этот код работаетхорошо.(Я сохранил этот код в функции таймера, чтобы каждый раз устанавливать начальное значение = 4, чтобы каждый раз блокировать USB, если какой-либо сторонний инструмент пытается включить USB путем исправления реестра)

Но проблема в том, что я хочуполучать уведомления, когда кто-либо отключает Сервис.Я не могу получить доступ к реестру

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/MyServiceName

через систему безопасности, созданную Windows.

Но через приложение Windows мы можем получить доступ к реестру

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/MyServiceName

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

Но здесь также проблема в том, что пользователь может перейти на

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

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

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

  1. Как заблокировать USB, чтобы любой не смогполучить доступ к нему [Можем ли мы заблокировать его, заблокировав его на аппаратном уровне или внеся некоторые изменения в его драйвер.Если да, то как?]

  2. Можем ли мы создать службу Windows, которую нельзя отключить [Если да, то как ?.Мы можем сделать это CanPauseAndContinue = False, CanShutDown = False, CanStop = False.Но есть ли способ избежать Отключить его?]

  3. Можем ли мы запретить доступ к реестрам (определенным ключам) [Антивирусное программное обеспечение может это делать, тогда как они это делают?У кого-нибудь есть идеи или знания в такой степени?Я хочу, если кто-то пытается изменить значение USBSTOR, то он должен сказать, что доступ запрещен]

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

Заранее спасибо.

  • Рахул

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Вы можете просто перезаписать USBSTOR.SYS мусором или полностью удалить его (не забудьте также уничтожить копию SFP).

0 голосов
/ 24 января 2012

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

...