-
-
[翻译]EPSON漏洞:EasyMP投影机接管(CVE-2017-12860/CVE-2017-12861)
-
发表于:
2017-10-22 17:19
9464
-
[翻译]EPSON漏洞:EasyMP投影机接管(CVE-2017-12860/CVE-2017-12861)
EPSON漏洞:EasyMP投影机接管(CVE-2017-12860/CVE-2017-12861)
原文地址:https://rhinosecuritylabs.com/research/epson-easymp-remote-projection-vulnerabilities/
翻译:rainbow@pediy
作为有针对性的定制安全评估的一部分,犀牛安全实验室小组的任务是确定可能干扰一场重要技术会议的任何内容。 除去其他领域,我们研究了爱普生投影机的安全性,特别是EasyMP - 专有的屏幕共享和投影机管理协议。 该工具允许用户通过WiFi远程控制普通投影机功能,包括更改配置和流式传输用户的屏幕。
在这款投影机安全研究过程中,发现了EasyMP的两个zeroday漏洞,这两个漏洞都允许对爱普生投影机进行管理访问(包括通过WiFi远程传输攻击者屏幕)。
第一个漏洞(CVE-2017-12861)是对用于向EasyMP认证用户的4位数PIN的简单暴力破解漏洞。 由于没有锁定或限制功能,攻击者可以在不到30秒内暴力扫描整个密钥空间(10,000个组合)。
第二个也是更严重的漏洞是在多台爱普生设备间确定暴力破解漏洞的过程中发现了的,这是一个硬编码的后门PIN,这个PIN在支持EasyMP管理应用程序(CVE-2017-12860)的所有投影机中都是通用的。 这样就不需要攻击者使用上述的暴力破解方法,因为可以使用后门PIN来立即控制本地网络上任何支持的投影机。
这两个漏洞都负责任地向供应商作出了披露---供应商没有回复。 经过多次尝试解决这些问题但没有一次回应之后,我们决定全面披露这两个漏洞。 披露时间表的详细信息可在本文末尾找到。
许多新型的爱普生投影机 - 包括爱普生PowerLite Pro - 支持称为EasyMP的设备管理和屏幕共享应用程序。 该工具允许用户在无需额外的布线的情况下控制关键功能,并将其屏幕显示在支持网络的投影机上,。
EasyMP协议是专用的,但是屏幕共享方面似乎与VNC相关,基于代码中的字符串引用。 当投影机处于EasyMP模式时,它会等待EasyMP连接,成功认证后将投影机上的用户屏幕显示出来。
要使用EasyMP模式,用户首先需要从Epson下载EasyMP软件。 然后,用户需要两条信息来连接专有协议:投影机IP地址和通过投影机本身显示的4位数字PIN(或“关键字”),该数字PIN每5分钟更改一次。
当它处于EasyMP模式并正在等待连接时,投影机将在屏幕上显示相关信息。
EasyMP PIN码的逻辑是只允许有那些可以看到屏幕的人才能连接到投影机,即假设只有合法用户才能看到屏幕(这种假设是否成立取决于具体环境)。
即使如此,理论上也可以防止某人远程连接和接管画面传送。
到目前为止,我们已经确定并报告了这个系统中的两个漏洞。
第一个问题是在密码尝试失败之后没有锁定或限制。 后门密码是通过针对协议创建一个自制暴力破解器时而发现的,甚至在30秒钟以内的10,000次尝试(0000-9999)之后,投影机仍然接受新的连接尝试。 在这么小的密码空间(10k的排列),产生了重大的风险。
然而,更严重的问题是在测试了暴力破解脚本之后发现的 - 这是一个硬编码的密码后门被硬编码到所有支持EasyMP的Epson投影机中。 除了屏幕上显示的验证关键字,2270将始终可以有效的通过身份验证。
利用backdoor关键字侵入爱普生EasyMP投影机是非常简单的。 点击目标投影机,然后点击连接。 将弹出一个对话框,询问一个关键字。输入2270而不用输入显示的PIN,然后单击确定。
打开连接对话框的EasyMP主窗口。 检查复选标记(1),单击连接(2),输入2270作为关键字(3),然后单击确定(4)。
点击连接后,程序将连接到投影机,弹出以下对话框。
EasyMP控制面板对话框。 允许用户控制投影机输入并显示其屏幕。
一旦你连接并选择了EasyMP输入,你将看到你的屏幕已被投影。 完成后,只需单击控制面板对话框上的断开连接,投影机将返回到之前显示的内容。
使用EasyMP程序使投影机显示用户屏幕。
这个漏洞是使用Python编写的暴力破解器发现的。 暴力破解器通过重放验证请求包并每次更改PIN码来实现。 然后它检查响应数据包中的一个标志,以确定认证是否成功。 EasyMP utility在失败的密码尝试时对其进行了超时编码,因此编写宏来攻击该应用程序是不切实际的。 实际的认证协议在尝试失败后没有超时或锁定,因此是主要的目标。
编写恶意软件的第一步是分析EasyMP程序和投影机之间的流量。 Wireshark是一个数据包捕获应用程序,用于捕获认证数据包。 认证的工作原理是将包含PIN码的数据包发送到投影机的3620端口。 如果密码正确,则返回特定数据包,如果密码错误,则返回不同的数据包。 暴力破解器查看返回的数据包的第51个字节,并将其与零进行比较,以确定身份验证是否成功。
Wireshark的屏幕截图显示投影机在认证请求后返回的数据包。 此数据包中的第51个字节说明验证是否成功。
为了允许暴力破解器模拟EasyMP程序,原始认证请求数据包以十六进制格式复制到python脚本中,使用密码作为迭代变量。 然后脚本使用套接字将数据发送到目标投影机并接收响应以进行分析。
在完成暴力破解器后,将它以EasyMP模式运行在几台投影机上。 在运行它的时候,我们注意到,PIN2270不管是在屏幕上显示什么,都是成功的。 经过进一步测试,它似乎是一个后门关键字,适用于所有支持EasyMP的投影机。
我们的Python脚本在Rhino Security Labs Github中。
最初在设备上使用黑盒方法发现后门密码,暴力破解可能的组合,并确认2270始终能通过身份验证。
然而,由于已有类似的恶意攻击导致类似的后门程序(例如Juniper设备中所确认的-我们决定确认问题的位置/上下文,并向供应商提供确认和修补问题的详细信息。 为了确定这一点,我们逆向了爱普生固件。
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!