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

本文关键字:驱动器 外部 硬盘驱动器 何阻止 USB | 更新日期: 2023-09-27 18:02:58

我想做一个程序来阻止USB,这样就没有人可以访问USB端口来传输媒体。

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

注意:我想给所有系统的管理员权限,但想阻止只是USB。在我的办公室里,人们需要管理员权限才能访问其他注册表和windows服务,因为他们是程序员。像诺顿这样的防病毒软件很少有阻止USB的选项,无论系统是在管理员模式还是用户模式下运行。在这种情况下,每个系统都运行客户端防病毒和服务器防病毒。我们在服务器和所有客户端进行设置,USB被阻塞。现在请不要说有诺顿杀毒软件:)我想知道一定有任何方法像这些Fundu程序员在诺顿杀毒软件中所做的。

到目前为止,我做了什么来实现这个目标。

我创建了两个windows服务。一个服务是不断改变USBSTOR的启动值为4使用定时器,使USB始终禁用。第一服务也在不断地检查第二服务是否在运行。如果没有,那么他们会发送通知邮件给我,告诉我有人试图停止服务。

第二个服务正在连续检查第一个服务是否在运行。如果没有,他们会给我发通知邮件。

我这样做是为了让人们不能停止服务来解锁USB。

现在的问题是,人们可以禁用我的服务,服务将无法工作。在这个阶段,服务的状态是Running,但实际上是Disabled。所以我只能从我的服务的注册表项(开始)中检查状态(禁用/启用/自动),该服务将位于

位置
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

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

但是这里的问题是用户可以进入

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

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

说了这么久,我的问题是

  1. 如何阻止USB,使任何人都无法访问它我们可以通过在硬件层面上阻止它或者通过在它的驱动程序中做一些改变来阻止它吗?如果是,那么怎么做?)

  2. 我们可以创建一个不能被禁用的windows服务吗如果是,那么怎么做?我们可以让它CanPauseAndContinue = False, CanShutDown = False, CanStop = False。但是有什么办法可以避免禁用它吗?)

  3. 我们可以阻止访问注册表(特定密钥)吗?杀毒软件可以做到这一点,那么它们是怎么做到的呢?有人有这样的想法或知识吗?我想如果有人试图编辑USBSTOR值,那么它必须显示访问被拒绝]

请各位极客、程序员、黑客来回答这个问题。通过回答这些问题,新手也获得了制作安全软件的想法。请设法解决我的问题。

Thanks in Advance.

  • 拉胡尔

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

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

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