Umap2是一款由NCC Group和Cisco SAS小组开发的、基于python的USB host安全评估工具。
它拥有第一版所支持的所有功能:
umap2emulate:USB设备枚举
umap2scan:用于设备支持的USBhost扫描
umap2detect:USBhost操作系统检测(尚未实现)
umap2fuzz:USB host fuzzing
另外,该版本中添加了额外的功能:
USBhost fuzzing使用kitty作为fuzzing引擎
Umap2中不仅包含可执行的脚本,而且作为程序包进行安装,也可用于库
注意:Umap2目前仍然是一款处于alpha阶段的工具。API、可执行文件名都有可能会更改。
安装
Umap2是一个比较早期的版本,因此还不能通过pypi安装。目前是使用pip进行安装:
$ pipinstall git+https://github.com/nccgroup/umap2.git#egg=umap2
附属功能
Umap2的附属功能列在setup.py文件中,并且会与Umap2一起安装。但是对于某些设备需要添加支持:
大容量存储
需要在运行目录中添加名为stick.img的磁盘镜像。
MTP
1、需要在当前目录中添加名为mtp_fs的文件/文件夹
2、需要python程序包pymtpdevice,下载地址:https://github.com/BinyaminSharet/Mtp
用例
设备枚举
Umap2的基本功能是枚举。用户可以枚举任何一个存在的USB设备(使用umap2list命令查看可用设备):
$ umap2emulate -P fd:/dev/ttyUSB0 -C mass_storage
或枚举自己的设备:
$ umap2emulate -P fd:/dev/ttyUSB0 -C ~/my_mass_storage.py
将来会有一个详细的添加设备的指南,同时,用户可以在umap2/dev/目录下查看umap2设备。
设备支持扫描
Umap2会检测主机支持的USB设备类型。它通过在短周期内模拟不同的设备并发送设备特有的消息来完成扫描:
$ umap2scan -P fd:/dev/ttyUSB0
Fuzzing
Umap2的Fuzzing过程有三个步骤组成,这三步未来可能会写到一个独立的脚本中:
1、用户需要确定目标主机的消息序列和模拟的USB设备:
$ umap2stages -P fd:/dev/ttyUSB0 -C keyboard -s keyboard.stages
2、在独立的shell中启动kitty fuzzer,并提供第一阶段生成的stages:
$ umap2kitty -s keyboard.stages
3、开启fuzz模式的umap2键盘仿真
$ umap2fuzz -P fd:/dev/ttyUSB0 -C keyboard
步骤三执行后,fuzzing会话就开始了。
*原文地址:github