转载

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

前言

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协议寻找可能的打印机。

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

带参数的运行:usage:pret.py [-h] [-s] [-q] [-d] [-i file] [-o file] target {ps,pjl,pcl}

Target参数可以为本地

打印机名或者网络打印机的ip,此处以打印机ip为例:

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

可选参数:

–safe 检查IPP,HTTP,SNMP,{PS、PCL、PJL}的可用性,方便进行除9100端口的其他渗透,如对打印机进行web渗透(大多数的打印机web管理端都是无口令和弱口令的,所以可以轻松的进行读取打印作业或者进行远程管理)。也可以确定是否选择了合适的打印机语言。

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

–debug 打开debug模式,可以很方便的看到原始的打印机语言,有助于对打印机语言和渗透原理的理解。如图可以方便的看出打印机语言之间的交互。

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

–quit 禁止打印机型号确定,介绍信息和一些无作用的交互。

–load filename 从文本文件中读取并执行pret命令,实现脚本自动化。

–log filename 将打印机的原始数据流写入目标文件。

PRET命令

Help:不同的语言pret会提供不同的命令可用。所以在刚开始使用pret时,可以先使用help查看可用命令。除此之外也可以使用help+命令来显示某命令的详细用法。

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

Put:可以将文件上传到打印机上,由此回想到向linux打印机上传bot来进行控制,然而利用打印机语言无法有效的运行文件。

Mirror: 直接将打印机中的所有文件拷贝的本地,方便进一步的分析,寻找如打印记录的文件。

Destroy: 十分危险的功能,尝试的时候应当慎用,对打印机的NVRAM(一种RAM)造成物理性损坏。

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

附上源码供大家研究:

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

Print:可以远程打印文件。

Fuzz: pret自动使用脚本进行fuzz测试,包括常见敏感目录和文件。

Lock: 设置系统密码。

Unlock:自动解密。

Reset: 重置ps语言设置。

此处仅介绍了部分重要命令,还有很多命令可以使用help自行查看。

打印机安全测试清单

利用pret可以对打印机进行拒绝服务、提权、打印作业越权访问、信息泄露、远程代码执行等测试,具体清单和用法可以参照官方的wiki:

维基百科

https://github.com/RUB-NDS/PRET

*本文作者:qianye,转载请注明来自FreeBuf.COM

原文  http://www.freebuf.com/news/168168.html
正文到此结束
Loading...