12 KiB
通过 htARTE (HackTricks AWS Red Team Expert)从零开始学习AWS黑客攻击!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF版本,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 探索PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
恶意固件更新的危险众所周知,并且已经由[1]和[2]早期讨论过。与其他网络设备不同的是,打印机通常将固件更新部署为普通打印作业。这为攻击者打开了一扇宽广的大门,因为通常很容易获得打印功能的访问权限。人们只能推测这种不安全设计决策的动机,但似乎历史原因起了作用:打印机过去是通过并行或USB电缆连接的。在没有网络连接的情况下,安全性不那么重要,而且在没有密码保护的Web服务器或类似功能的情况下,打印通道是向设备发送数据的唯一方式。
针对网络打印机的固件修改攻击已经由[3]针对HP设备、[4]针对Canon PIXMA系列和[5]以及[6]针对各种Xerox型号展示过。作为对策,打印机制造商开始对他们的固件进行数字签名[7]。
供应商
为了概述固件部署程序,已经下载并系统分类了1400个固件文件,针对前10大打印机制造商[8]。结果如下。
HP
固件可以从support.hp.com下载,或者通过FTP直接从ftp.hp.com下载。可以检索到419个HP传统远程固件更新(.rfu
)格式和206个更新的‘HP FutureSmart’二进制文件(.bdl
)。.rfu
文件包含专有的PJL命令,如@PJL UPGRADE SIZE=…
,表明固件更新被部署为正常的打印作业。这已经由[3]展示过,并导致HP自2012年3月起对所有打印机固件进行数字签名[7]。
Canon
固件可以在www.canon.com/support下载。然而,Canon要求提供有效的设备序列号才能下载任何固件。根据[4],他们能够修改Canon PIXMA系列的固件,‘没有签名(正确的做法),但它确实有非常弱的加密’。根据与Canon技术支持代表的电子邮件通信,‘固件必须由Canon数字签名,打印机才能接受它’。
Epson
固件可以从epson.com下载,也可以通过FTP从download.epson-europe.com下载。文件以WinZip自解压.exe
文件形式提供,可以使用unp[9]解压。使用Binwalk[10]分析包含的.efu
文件,它提取实际的固件。可以获得49个未知格式的.rcx
文件(‘SEIKO EPSON EpsonNet Form’)和9个包含PJL命令的.prn
文件(@PJL ENTER LANGUAGE=DOWNLOAD
)。Epson尚未发布任何保护机制信息。2016年之前发布的固件没有应用代码签名,可以像[11]所示进行操作。他们‘相信自1999年以来生产的大量设备[...]可能是脆弱的’。
Dell
固件可以从downloads.dell.com和ftp.us.dell.com/printer获取。文件可以使用unp解压,包含的.zip
文件可以使用unzip的变体提取。Dell并不生产任何打印设备,而是重新标记其他供应商的产品。因此,发现了各种固件文件,包括18个包含@PJL FIRMWARE=…
的.hd
文件,25个包含@PJL ENTER LANGUAGE=DOWNLOAD
的.prn
文件和30个.fls
/.fly
文件包含@PJL LPROGRAMRIP
。关于保护机制,Dell尚未发布任何公开可用的信息。
Brother
固件不能轻易下载。相反,需要运行一个Windows二进制文件,该文件检查可用的打印机并从Web服务请求最新固件的下载链接。通过猜测正确的参数,可以获取98个文件的链接。固件文件不需要解压,因为它们已经以原始格式提供。79个文件扩展名为.djf
,包含@PJL EXECUTE BRDOWNLOAD
,而9个.blf
文件包含@PJL ENTER LANGUAGE=PCL
。Brother尚未发布任何公开可用的保护机制信息。
Lexmark
固件可以从support.lexmark.com下载,并可以使用unp解压。可以获得63个包含PJL头@PJL LPROGRAMRIP
的fls
文件以安装固件。Lexmark的安全白皮书声称‘包必须使用对称加密算法进行加密,通过一个只有Lexmark知道并安全嵌入在所有设备中的密钥。然而,最强的安全措施来自于要求所有固件包必须包含来自Lexmark的多个2048位RSA数字签名。如果这些签名无效[...]固件将被丢弃’[12]。
Samsung
固件可以从www.samsung.com/us/support/download下载。检索到的文件要么以zip存档形式提供,要么以Windows可执行文件形式提供,可以在wine中运行并使用unp进一步解压。这样,可以获得33个以@PJL FIRMWARE
开头的.hd
文件和相关的包含@PJL DEFAULT SWUPGRADE=ON
的.prn
文件。Samsung尚未发布任何公开可用的保护机制信息。
Xerox
固件可以在www.support.xerox.com公开获取。下载的文件以zip格式提供,可以使用unzip解压。固件文件有不同的格式:16个包含@PJL FIRMWARE=…
的.hd
文件,36个用于旧设备的PostScript文件和35个.dlm
文件,这是Xerox目前使用的格式,包括数字签名。然而,[5]和[6]发现了部署过程中的一个缺陷,导致远程代码执行——私钥和用于代码签名的工具包含在固件本身中。
Ricoh
在support.ricoh.com的‘固件下载中心’不对公众开放。幸运的是,互联网包含直接链接到一些驱动程序/固件下载页面,因此可以使用简单的Google搜索(site:support.ricoh.com firmware
)获取31个固件文件。文件可以使用unp解压。14个.bin
文件包含@PJL RSYSTEMUPDATE SIZE=…
,而15个.brn
文件与settings.ini
相关联,包括@PJL FWDOWNLOAD
和USERID=sysadm, PASSWORD=sysadm
。Ricoh没有提供任何最新的保护机制信息。在一份可追溯到2007年的白皮书中,Ricoh声称‘只有服务技术人员有密码和专用账户进行固件更新’[13]。
Kyocera
Kyocera不向最终用户发布固件。然而,在一个公开可用的Kyocera经销商论坛中,链接了各种型号的固件下载:ftp.kdaconnect.com。文件可以使用unp解压,并包含可挂载的cramfs[14]和squashfs[15]镜像以及专有的二进制格式。固件作为打印作业部署,前面加上!R! UPGR'SYS';EXIT;
——PRESCRIBE页面描述语言的升级命令[16]。Kyocera尚未发布任何公开可用的保护机制信息。
Konica
虽然没有积极推广,但可以从download6.konicaminolta.eu下载Konica Minolta打印机的固件。较新的联网设备有能力自行进行固件更新。压缩文件有不同的格式,可以使用unp、unzip和tar解压,结果是38个专有的.bin
文件,20个用于旧设备的基于PostScript的‘softload打印机模块’和14个包含PJL命令的不同扩展名的文件,如@PJL ENTER LANGUAGE=FIRMUPDATE
。Konica Minolta的安全白皮书声称固件使用‘哈希值’进行验证[17]。可以怀疑这样的方案在密码学上是否安全。
结果
在分析的十个制造商中,九个使用PJL命令进行所有或至少一些固件更新程序,这是一个强烈的指标,表明更新被部署为普通打印作业。剩下的制造商——Kyocera——应用PRESCRIBE页面描述语言。因此,可以说在打印行业中,通过打印通道本身安装新固件是常见的,并且几乎在任何打印设备中都存在一个主要设计缺陷:数据和代码通过同一通道。然而,利用这个问题是困难的,因为对于大多数制造商来说,不能对保护机制做出合理的声明。因此,对固件修改攻击的深入分析应该是未来研究的一部分。下面给出了所有获得的固件文件的文件头或类型的摘要:
供应商 | 扩展名 | 数量 | 文件头或类型 |
---|---|---|---|
HP | rfu | 419 | @PJL UPGRADE SIZE=… |
bdl | 206 | FutureSmart二进制格式 | |
Epson | rcx | 49 | SEIKO EPSON EpsonNet Form |
prn | 9 | @PJL ENTER LANGUAGE=DOWNLOAD | |
brn | 7 | 未知二进制,包含配置文件 | |
Dell | fls, fly | 30 | @PJL LPROGRAMRIP |
prn | 25 | @PJL ENTER LANGUAGE=DOWNLOAD | |
hd | 18 | @PJL FIRMWARE=… | |
brn | 3 | 未知二进制,包含配置文件 | |
ps | 2 | PostScript 标题:固件更新 |
|
pjl | 1 | @PJL ENTER LANGUAGE=FLASH | |
Brother | djf | 79 | @PJL EXECUTE BRDOWNLOAD |
blf | 9 | @PJL ENTER LANGUAGE=PCL | |
Lexmark | fls | 63 | @PJL LPROGRAMRIP |
bin, fls | 6 | 未知二进制格式 | |
Samsung | hd | 33 | @PJL FIRMWARE=… |
fls, hd0 | 4 | @PJL DEFAULT P1284VALUE=… | |
Xerox | ps | 36 | PostScript 标题:固件更新 |
dlm | 35 | Xerox动态可加载模块 | |
prn, bin | 20 | @PJL ENTER LANGUAGE=DOWNLOAD | |
hd | 16 | @PJL FIRMWARE=… | |
brn | 10 | 未知二进制,包含配置文件 | |
bin | 10 | @PJL SET JOBATTR="@SWDL" | |
fls, hd, hde | 8 | @PJL DEFAULT P1284VALUE=… | |
fls, xfc | 4 | @PJL ENTER LANGUAGE=XFLASH |