禁用usb hid键盘驱动是防范badusb的核心措施:通过禁用usbhub服务、kbdhid驱动,或启用设备白名单、hidguardian拦截、bios关闭usb键盘支持,可阻断其模拟敲击,且不影响鼠标和存储功能。

防止USB恶意攻击设备(BadUSB)插入后自动模拟敲代码,核心是阻断其作为HID键盘的识别与执行路径,而非仅依赖杀毒软件或格式化U盘——因为固件层代码根本不会被扫描到,拔掉再插一次就可能触发预设脚本。
禁用系统级HID键盘自动加载能力
Windows默认允许任意USB HID设备即插即用,BadUSB正是利用这一点伪装成键盘瞬间注入命令。必须从驱动加载源头掐断:
第一步:以管理员身份运行cmd,执行:
sc stop usbhub && sc config usbhub start= disabled
第二步:打开注册表编辑器(regedit),定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid
将Start值改为4(禁用)
第三步:重启电脑生效。此时任何新接入的USB键盘类设备(包括BadUSB)将无法被系统识别为输入设备,【键盘功能彻底失效,但鼠标、U盘存储功能仍可正常使用】。注意:此操作不影响已连接的物理键盘,只阻止后续新设备的HID驱动加载。
启用USB设备安装白名单策略
适用于企业终端或高安全办公环境,只允许已知可信设备接入,其他一概拦截:
打开组策略编辑器(gpedit.msc)→ 计算机配置 → 管理模板 → 系统 → 设备安装 → 设备安装限制
启用“禁止安装未由其他策略设置描述的设备”
再启用“仅允许安装这些设备ID中定义的设备”,点击“显示”按钮→ 添加你单位采购的U盘、键盘、鼠标等设备的Hardware ID(可在设备管理器→设备属性→详细信息→硬件ID中复制)
这一步做完后,BadUSB因不在白名单内,插入时会弹出“此设备被系统策略阻止”的提示,【不会静默执行,也不会生成任何日志或回显】。
用开源工具实时拦截HID指令流
适合无法修改组策略的个人用户或教育场景,靠轻量级程序在内核层过滤非法击键:
方法一:部署USBGuard(Linux)
安装后运行usbguard generate-policy | sudo tee /etc/usbguard/rules.conf,再sudo systemctl enable --now usbguard
方法二:使用Windows版HIDGuardian(需配合Whitelister GUI)
下载HIDGuardian驱动并安装→ 启动Whitelister → 勾选你信任的物理键盘和鼠标 → 点击“Apply Rules”
该工具会在HID数据到达操作系统前做一次筛选,所有未授权设备的Keyboard.press()、Keyboard.println()等指令直接丢弃,BadUSB插入后键盘灯可能亮,但完全无法输出任何字符。
BIOS/UEFI层永久关闭USB键盘支持
最彻底的方式,适用于ATM、自助终端、工控机等固定用途设备:
开机按Del/F2/F12进入BIOS设置 → 找到“Advanced”或“Integrated Peripherals”选项 → 将“USB Keyboard Support”设为Disabled
保存退出后,系统启动阶段就不会初始化USB键盘控制器,BadUSB连引导阶段都无法触发——【此设置不可逆,除非重新进BIOS改回】。











