mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 21:24:06 +00:00
98 lines
12 KiB
Markdown
98 lines
12 KiB
Markdown
<details>
|
||
|
||
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击!</strong></summary>
|
||
|
||
支持HackTricks的其他方式:
|
||
|
||
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
|
||
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
|
||
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
|
||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
|
||
|
||
</details>
|
||
|
||
|
||
恶意固件更新的危险众所周知,并且已经由[\[1\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-1)和[\[2\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-2)早期讨论过。与其他网络设备不同的是,**打印机通常将固件更新部署为普通打印作业**。这为攻击者打开了一扇宽广的大门,因为通常很容易获得打印功能的访问权限。人们只能推测这种不安全设计决策的动机,但似乎历史原因起了作用:打印机过去是通过并行或USB电缆连接的。在没有网络连接的情况下,安全性不那么重要,而且在没有密码保护的Web服务器或类似功能的情况下,打印通道是向设备发送数据的唯一方式。
|
||
|
||
针对网络打印机的固件修改攻击已经由[\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3)针对HP设备、[\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-jordon2014wrestling-4)针对Canon PIXMA系列和[\[5\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-heiland2011patched-5)以及[\[6\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-weidenbach2016pwn-6)针对各种Xerox型号展示过。作为对策,打印机制造商开始对他们的固件进行数字签名[\[7\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-hp2012rfu-7)。
|
||
|
||
## 供应商
|
||
|
||
为了概述固件部署程序,已经下载并系统分类了1400个固件文件,针对前10大打印机制造商[\[8\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-8)。结果如下。
|
||
|
||
### HP
|
||
|
||
固件可以从[support.hp.com](http://support.hp.com/)下载,或者通过FTP直接从[ftp.hp.com](ftp://ftp.hp.com/pub/networking/software/pfirmware/)下载。可以检索到419个HP传统远程固件更新\(`.rfu`\)格式和206个更新的‘HP FutureSmart’二进制文件\(`.bdl`\)。`.rfu`文件包含专有的PJL命令,如`@PJL UPGRADE SIZE=…`,表明固件更新被部署为正常的打印作业。这已经由[\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3)展示过,并导致HP自2012年3月起对所有打印机固件进行数字签名[\[7\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-hp2012rfu-7)。
|
||
|
||
### Canon
|
||
|
||
固件可以在[www.canon.com/support](http://www.canon.com/support/)下载。然而,Canon要求提供有效的设备序列号才能下载任何固件。根据[\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-jordon2014wrestling-4),他们能够修改Canon PIXMA系列的固件,‘没有签名(正确的做法),但它确实有非常弱的加密’。根据与Canon技术支持代表的电子邮件通信,‘固件必须由Canon数字签名,打印机才能接受它’。
|
||
|
||
### Epson
|
||
|
||
固件可以从[epson.com](http://epson.com/)下载,也可以通过FTP从[download.epson-europe.com](ftp://download.epson-europe.com/)下载。文件以WinZip自解压`.exe`文件形式提供,可以使用unp[\[9\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-9)解压。使用Binwalk[\[10\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-10)分析包含的`.efu`文件,它提取实际的固件。可以获得49个未知格式的`.rcx`文件(‘SEIKO EPSON EpsonNet Form’)和9个包含PJL命令的`.prn`文件(`@PJL ENTER LANGUAGE=DOWNLOAD`)。Epson尚未发布任何保护机制信息。2016年之前发布的固件没有应用代码签名,可以像[\[11\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-11)所示进行操作。他们‘相信自1999年以来生产的大量设备\[...\]可能是脆弱的’。
|
||
|
||
### Dell
|
||
|
||
固件可以从[downloads.dell.com](http://downloads.dell.com/)和[ftp.us.dell.com/printer](ftp://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](http://support.lexmark.com/)下载,并可以使用unp解压。可以获得63个包含PJL头`@PJL LPROGRAMRIP`的`fls`文件以安装固件。Lexmark的安全白皮书声称‘包必须使用对称加密算法进行加密,通过一个只有Lexmark知道并安全嵌入在所有设备中的密钥。然而,最强的安全措施来自于要求所有固件包必须包含来自Lexmark的多个2048位RSA数字签名。如果这些签名无效\[...\]固件将被丢弃’[\[12\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-12)。
|
||
|
||
### Samsung
|
||
|
||
固件可以从[www.samsung.com/us/support/download](http://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](http://www.support.xerox.com/)公开获取。下载的文件以zip格式提供,可以使用unzip解压。固件文件有不同的格式:16个包含`@PJL FIRMWARE=…`的`.hd`文件,36个用于旧设备的PostScript文件和35个`.dlm`文件,这是Xerox目前使用的格式,包括数字签名。然而,[\[5\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-heiland2011patched-5)和[\[6\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-weidenbach2016pwn-6)发现了部署过程中的一个缺陷,导致远程代码执行——私钥和用于代码签名的工具包含在固件本身中。
|
||
|
||
### Ricoh
|
||
|
||
在[support.ricoh.com](https://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\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-13)。
|
||
|
||
### Kyocera
|
||
|
||
Kyocera不向最终用户发布固件。然而,在一个公开可用的Kyocera经销商论坛中,链接了各种型号的固件下载:[ftp.kdaconnect.com](ftp://ftp.kdaconnect.com/)。文件可以使用unp解压,并包含可挂载的cramfs[\[14\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-14)和squashfs[\[15\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-15)镜像以及专有的二进制格式。固件作为打印作业部署,前面加上`!R! UPGR'SYS';EXIT;`——PRESCRIBE页面描述语言的升级命令[\[16\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-16)。Kyocera尚未发布任何公开可用的保护机制信息。
|
||
|
||
### Konica
|
||
|
||
虽然没有积极推广,但可以从[download6.konicaminolta.eu](http://download6.konicaminolta.eu/)下载Konica Minolta打印机的固件。较新的联网设备有能力自行进行固件更新。压缩文件有不同的格式,可以使用unp、unzip和tar解压,结果是38个专有的`.bin`文件,20个用于旧设备的基于PostScript的‘softload打印机模块’和14个包含PJL命令的不同扩展名的文件,如`@PJL ENTER LANGUAGE=FIRMUPDATE`。Konica Minolta的安全白皮书声称固件使用‘哈希值’进行验证[\[17\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-17)。可以怀疑这样的方案在密码学上是否安全。
|
||
|
||
## 结果
|
||
|
||
在分析的十个制造商中,九个使用[PJL](http://hacking-printers.net/wiki/index.php/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 |
|