- A+
前言
Pret是用来对打印机安全进行测试的工具。它通过网络或者USB连接到设备,并利用给定打印机的语言进行渗透。目前绝大多数的打印机都是使用PostScript,pjl和pcl。这使得该工具可以通过这些打印机语言进行捕获或者操作打印作业,访问打印机文件系统和内存甚至造成物理层面上的破坏。
安装
Linux:
建议在linux中安装Pret
# pipinstall colorama pysnmp (kali中无需运行此命令)
# apt-get install imagemagick ghostscript
Windows:
# pip install colorama pysnmp
# pip install win_unicode_console (windows需要额外安装,否则容易Unicode字符显示不正确)
用法
当没有参数直接运行./pret.py时,pret会自动通过SNMP协议寻找可能的打印机。
带参数的运行:usage:pret.py [-h] [-s] [-q] [-d] [-i file] [-o file] target {ps,pjl,pcl}
Target参数可以为本地
打印机名或者网络打印机的ip,此处以打印机ip为例:
可选参数:
–safe 检查IPP,HTTP,SNMP,{PS、PCL、PJL}的可用性,方便进行除9100端口的其他渗透,如对打印机进行web渗透(大多数的打印机web管理端都是无口令和弱口令的,所以可以轻松的进行读取打印作业或者进行远程管理)。也可以确定是否选择了合适的打印机语言。
–debug 打开debug模式,可以很方便的看到原始的打印机语言,有助于对打印机语言和渗透原理的理解。如图可以方便的看出打印机语言之间的交互。
–quit 禁止打印机型号确定,介绍信息和一些无作用的交互。
–load filename 从文本文件中读取并执行pret命令,实现脚本自动化。
–log filename 将打印机的原始数据流写入目标文件。
PRET命令
Help:不同的语言pret会提供不同的命令可用。所以在刚开始使用pret时,可以先使用help查看可用命令。除此之外也可以使用help+命令来显示某命令的详细用法。
Put:可以将文件上传到打印机上,由此回想到向linux打印机上传bot来进行控制,然而利用打印机语言无法有效的运行文件。
Mirror: 直接将打印机中的所有文件拷贝的本地,方便进一步的分析,寻找如打印记录的文件。
Destroy: 十分危险的功能,尝试的时候应当慎用,对打印机的NVRAM(一种RAM)造成物理性损坏。
附上源码供大家研究:
Print:可以远程打印文件。
Fuzz: pret自动使用脚本进行fuzz测试,包括常见敏感目录和文件。
Lock: 设置系统密码。
Unlock:自动解密。
Reset: 重置ps语言设置。
此处仅介绍了部分重要命令,还有很多命令可以使用help自行查看。
打印机安全测试清单
利用pret可以对打印机进行拒绝服务、提权、打印作业越权访问、信息泄露、远程代码执行等测试,具体清单和用法可以参照官方的wiki:
维基百科
https://github.com/RUB-NDS/PRET