利用PRET控制远程打印机测试

发表于:2018-04-23 10:25:32 来源:  FreeBuf.COM 阅读数(0人)

前言


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

相关新闻

大家都在学

课程详情

信息安全意识教育

课程详情

小白入门之旅

课程详情

信息安全基础