通过打印机的USB接口攻击打印机
一、攻击方式
- BadUSB:
BadUSB是一种计算机安全攻击,使用编程的USB设备进行恶意软件攻击。例如:USB闪存驱动器可以包含一个可编程的Intel 8051微控制器,该微控制器可以被重新编程,将USB闪存驱动器变成一个恶意设备。这种攻击通过编程假USB闪存驱动器来模拟键盘,一旦插入计算机,就会自动被识别并允许与计算机交互,然后可以启动一系列按键操作,打开命令窗口并发出命令下载恶意软件。
- RubberDucky攻击:
这是一种伪装成通过可移动磁盘的击键注入工具。计算机会将其识别为常规的键盘,并自动接受其预先编程的击键Payload。
- Cactus WHID:
这是一种硬件通过添加无线接入点,将攻击能力提升到了一个新的水平,可以远程控制硬件和击键。
- Teensy攻击:
攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令 ,从而完全控制主机。
打印机应该针对USB接口做了防护,即除了U盘和PC以外的设备皆不支持,所以无法更改设备描述符来模拟键盘或鼠标。
既然只有U盘和PC能被允许接入打印机,那么通过U盘和PC分别都能对打印机做什么?
很明显,它们都只能对打印机进行打印操作。那么恶意文件如何让打印机获取到并执行?
打印机在打印文件时必定要向U盘或PC获取打印文件,那么在获取文件时是否存在恶意文件绕过?
二、思路分析
值得注意的是,当PC连接到带存储功能的打印机时,PC是可以访问打印机的内部存储器的。那么是否可以将U盘伪装成PC来获取打印机内部存储器的数据?
首先介绍一下U盘的内部结构:
USB设备通常有一个独立的主控芯片,以及一个大容量的可重写存储芯片用于存储实际数据。控制芯片是一种嵌入式芯片,它通过从片内Flash存储区加载基本的引导程序来启动,类似于笔记本电脑的硬盘驱动器包含一个隐藏的主引导记录(MasterBoot Record)。存储芯片用于存储部分配置信息和数据信息。
当USB设备插入时,主机接收设备会获取设备描述符,USB设备将自身的设备描述符返回给主机。主机通过这种方式来识别插入的USB设备身份。
既然这样,我们就可以更改U盘的设备描述符信息,将其伪装成PC。将更改好的程序烧录进U盘的微控制器中就可以达到欺骗打印机的效果。
微控制器MCU同样具备处理器、RAM、ROM、内置晶振。可以理解为不带任何外设的、性能很低的PC主机。
因此,当U盘成功伪装成PC后,可以和PC一样执行一些自动化脚本,如:将打印机存储器内的数据复制到自身内部的闪存中。
三、利用
1. 数据远程发送
可以给U盘内部加装一个小型的Wifi模块,将获取到的数据主动发送至指定的目标中供查看。
2. 驻留
市面上相当一部分打印机都采用Linux操作系统,通过恶意软件(也称为rootkit)通常需要长期驻留于目标操作系统以达到获利目的。
传统的rootkit就是指这类恶意软件,对于Linux rootkit来说,最有效的方法就是把自己作为kernel module加载,因为大多数Linux目标都是允许动态加载kernel module的。
在kernel space里运行恶意代码的好处显而易见,由于大部分审计工具都在user space运行,管理员通常很难发现恶意软件的存在,这就带来了上面的方法所不能达到的隐蔽性。
可以参考:https://www.freebuf.com/articles/system/188211.html
四、其他参考链接
https://www.secrss.com/articles/24416
https://zhuanlan.zhihu.com/p/58377372
https://en.wikipedia.org/wiki/BadUSB