如何实现USB外设安全检查和防护

USB,Universal Serial Bus(通用串行总线),是一种计算机与外围设备进行数据交互的通信协议

USB协议

USB2.0 或 USB3.2, 指的是传输标准; 而USB Type-C 或 USB Type-A, 指的是物理接口

USB协议支持带宽补充说明时间
USB2.0高速(480Mbps)2000年
USB3.2 Gen 1 (USB3.0)超速(5Gbps)单通道模式2013年
USB3.2 Gen 2超速(10Gbps)单通道模式2013年
USB3.2 Gen 1x2超速(10Gbps)USB3.2 Gen 1双通道模式2017年
USB3.2 Gen 2x2超速(20Gbps)USB3.2 Gen 2双通道模式2017年
USB4 Gen 2x2超速(20Gbps)2019年
USB4 Gen 3x2超速(40Gbps)

USB(HID)描述符

USB的硬件端口是统一的,但是USB设备却是多种多样的,USB主机根据USB设备的描述符来区分不同的USB设备。

每一个USB设备都有自己的描述符,当插入USB设备之后,主机会向从机发送命令,从机收到命令之后,会返回特定的描述符信息。主机通过解析收到的描述符,来识别从机设备的相关信息,这个过程,就是设备枚举(enumeration)过程。

USB有5种标准设备描述符,分别是:设备描述符、配置描述符、字符串描述符、接口描述符、端点描述符。

技术路线

通过分析USB.HID恶意行为的特点及利用的漏洞,构建相应的恶意行为检测特征模型,实现对基于USB.HID恶意行为协议的外设检测与防护能力,保证多种场景下USB外设使用安全。

1、核心流程
  • 检查软件所在系统上连接的USB设备有哪些

  • 通过软件能够控制系统上连接的USB设备连接、断开的管控能力

  • USB和系统间通信数据流的监测和防护

  • 通过黑白名单的方式设置USB访问

  • USB恶意行为协议风险等级划分、风险预警

2、关键技术
  • USB设备插拔监控与控制

通过对USB设备插拔进行监控与控制,筑起针对恶意USB工具的第一道防线。

利用WMI监控“InstanceCreationEvent”事件以及“InstanceDeletionEvent”事件,实现对USB设备插拔的实时监控。

基于对“USB HID恶意行为对抗模型的研究,定义一系列ACL(Access Control List,访问控制列表)规则,结合ACL.匹配机制并利用WDK(Windows Driver Kit)中的Windows API实现对USB设备的动态管控。

  • USB.HID恶意行为按键注入识别

利用Windows钩子机制,在操作系统和应用程序之间设置键盘消息钩子,钩取键盘消息,在
键盘消息钩子函数的内部,对键盘消息进行查看、修改、拦截,从而最终完全控制键盘注入内容。

结合组合键检测算法及序列键检测算法,对按键注入内容中存在的单键、组合键及序列键进行识
别,从击键键值特征方面,实现USBHID恶意行为按键注入识别的目标。

基于击键动力学对人类打字习惯的研究,采集大量人类合法用户以及USBHID恶意行为按键注入的击键数据,并将预处理后的击键数据,例如DUT(down-up time)、DDT(down-down time)、VT(typing speed)、ER(error
rate)等作为数据集,训练基于击键时间戳特征的USBHID恶意行为按键注入的检测模型,从击键时间戳特征方面,实现USBHID恶意行为按键注入识别的目标。

  • USB数据包捕获与分析

对USB数据包进行捕获与分析,还原与审计USB异常行为。

通过创建子进程调用USBPcap命令行工具,并将USB数据包从stdout输出重定向,USB异常行为检测系统实现了USB数据包的捕获,随后根据USB数据的格式解析规范,对不同传输类型的USB数据包进行格式解析,通过数据
监视窗口实时显示解析后的USB数据报文,并将其存储,定义USB数据保存时间及存储空间阈值,灵活存储USB数据,将USB异常行为与其对应的USB.数据相关联,实现USBHID恶音行为的还原与审计。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
通过USB和上位机通讯,实现通讯外设参数设置、启停和数据收发,通常涉及以下几个步骤: 1. 确定通信协议:首先需要确定通信协议,例如使用串口通信协议(如UART)、USB HID协议、USB CDC协议等。通信协议规定了数据的传输格式、命令和响应的定义等。 2. 开发上位机软件:开发上位机软件,用于与通讯外设进行通信。上位机软件可以使用编程语言(如C/C++、Python)或者使用现有的串口调试工具等。该软件负责与通讯外设建立连接、发送命令、接收响应等。 3. 实现通讯外设固件:通讯外设的固件需要根据通信协议进行开发。固件负责接收上位机发送的命令、解析命令并执行相应的操作(参数设置、启停等),然后将执行结果发送回上位机。 4. 建立USB连接:在上位机中,通过USB接口与通讯外设建立连接。可以使用操作系统提供的USB库(如libusb)或者使用相关开发工具(如PyUSB)来实现USB连接。 5. 实现命令和数据交互:上位机通过USB接口向通讯外设发送命令,通讯外设接收到命令后进行解析和执行相应的操作。通讯外设可以将执行结果通过USB接口返回给上位机。 总的来说,通过USB和上位机通讯实现通讯外设参数设置、启停和数据收发,需要开发上位机软件和通讯外设固件,并建立USB连接。上位机软件负责发送命令和接收响应,通讯外设固件负责解析命令并执行相应操作,并将结果返回给上位机。具体的实现方式和流程会根据通信协议和设备特性而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老朱2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值