如何阻止USB以阻止笔式驱动器和外部硬盘驱动器

问题描述 投票:1回答:2

我想制作一个阻止USB的程序,这样任何人都无法访问USB端口来传输媒体。

我不想阻止BIOS的USB端口因为我使用USB键盘和鼠标。

注意:我想为所有系统授予管理员权限,但只想阻止USB。在我的办公室,人们需要管理员权限才能访问其他注册表和Windows服务,因为这些是程序员。很少像Norton这样的防病毒软件具有阻止USB的选项,无论系统是在管理员还是用户模式下运行。在此系统中,每个系统都运行Client Antivirus,Server Antivirus在Server中运行。我们在服务器中进行设置,在所有客户端中USB被阻止。现在请不要说有Norton Antivirus :)我想知道必须有像这样的Fundu程序员在Norton Antivirus中做的任何方式。

现在我到目前为止做了什么。

我创建了两个Windows服务。一项服务是使用定时器将USBSTOR的Start值连续变为4,以便始终禁用USB。第一项服务是连续检查第二项服务是否正在运行。如果没有,那么他们正在向我发送通知邮件,其中有人试图停止该服务。

第二项服务是持续检查第一项服务是否正在运行。如果没有,那么他们就会向我发送通知邮件。

我做了这个,以便人们不应该停止服务解锁USB。

现在问题是人们可以禁用我的服务,服务将无法正常工作。在此阶段,服务的状态正在运行但实际上已禁用。所以我只能从我的服务的注册表项(开始)检查STATE(禁用/启用/自动),该服务位于该位置

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/MyServiceName

如果Start的值是2(自动),3(手动),4(禁用),我们可以每隔2秒通过我们的服务检查(例如)Start值是否变为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);

这段代码工作正常。 (我将此代码保留在计时器功能中,每次都使Start值= 4,如果任何第三方工具尝试通过注册表修复启用USB,则每次都阻止USB)

但问题是,我想在有人禁用服务时收到通知。我无法访问

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/MyServiceName

注册表由于Windows创建的安全性。

但是通过Windows应用程序我们可以访问

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/MyServiceName

注册表中。所以我创建了一个应用程序,它将在每次启动时运行,并检查是否有人禁用了阻止USB的服务。

但这里也有问题是用户可以去

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

并删除我的密钥以防止我的应用程序运行。

现在我的一个长篇故事后的实际问题是

  1. 如何阻止USB以便任何人无法访问它[我们可以通过在硬件级别阻止它或通过在其驱动程序中进行一些更改来阻止它。如果是,那么如何?]
  2. 我们可以制作一个无法禁用的Windows服务[如果是,那么如何?我们可以使它CanPauseAndContinue = False,CanShutDown = False,CanStop = False。但有没有办法避免禁用它?]
  3. 我们可以阻止访问注册表(特定密钥)[防病毒软件可以做到这一点,然后他们如何做到这一点?有没有人有这样的想法或知识?我想如果有人试图编辑USBSTOR值那么它必须说Access被拒绝]

请邀请每个极客,程序员,黑客回答这个问题。通过回答这个问题,各种新手也会想到制作安全软件。请尝试解决我的问题。

提前致谢。

  • 拉胡尔
c# security windows-services registry code-access-security
2个回答
0
投票

您可以检测并删除大容量存储设备的任何USB驱动程序。如果重新安装驱动程序,您可以自动删除它,甚至可以监视插入的新硬件。如果它是基于USB的,则通过API调用禁用它。


0
投票

你可能只是用垃圾覆盖USBSTOR.SYS,或者完全删除它(确保也是核武SFP的副本)。

© www.soinside.com 2019 - 2024. All rights reserved.