-
-
[原创]看我如何挖到工业系统中的模拟器漏洞
-
发表于:
2020-9-17 10:12
10609
-
在很多上位机组态软件中,为了方便开发人员进行调试分析,往往配有模拟器模拟来模拟真实的PLC或者HMI设备。这些软件一般通过TCP/UDP协议与组态软件进行数据交换,所以有些模拟器会监听指定的端口,甚至端口直接绑定到0.0.0.0这个地址上,使得其他用户可以远程访问。
模拟器中可能会和真实的设备使用同一套代码库,使得出现在模拟器中得漏洞也影响到真实的设备。反过来同理,出现真实设备的漏洞也会影响到模拟器,尤其是出现在私有协议解析中的漏洞,比如缓冲区溢出导致的远程代码执行漏洞。如果模拟器对外暴露出的服务存在高危漏洞,攻击者则可以通过该漏洞攻陷开发人员的主机来达到进一步渗透的目的。
1.确定研究目标,分析模拟器对外暴露出的端口,识别出端口暴露出的服务,比如modbus,ftp,s7comm之类的关键服务。
2.对私有的关键服务进行逆向工程,分析出协议的报文格式,在逆向的工程中,重点审计危险函数,比如strcpy,memcpy,atoi之类的稍不注意就会出现问题的函数,在逆向过程把一些简单的漏洞(堆栈溢出,整型溢出,硬编码凭证等漏洞)过一遍。
3.利用分析出来的报文格式编写fuzz工具进行fuzz测试,由于模拟器在上位机运行的,fuzz速度可能会比直接fuzz真实设备速度稍快一些,这里可以选择一些现成的fuzz框架,如boofuzz。
4.尽量挖掘更多的攻击面,不止远程的代码执行漏洞,本地的代码执行漏洞也具有一定的危害性。
通过上面的研究方法,本人挖掘出了一些工控设备模拟器安全性问题,涉及的厂商有ABB,施耐德,CodeSys等,下面我们选取几个例子来介绍模拟器中容易出现的安全性问题。
ABB HMISimulator是ABB推出的Panel Builder 600中的HMI模拟器组件,通过该模拟器可以在开发的时候进行仿真调试,在分析其安全性时,发现了任意文件读写漏洞CVE-2019-18995。
ABB HMISimulator 会直接对外暴露出HTTP服务,分析的时候,可以使用传统的web漏洞挖掘思路进行分析。通过结合一些逆向工程的手段,我们很快确定了HTTP对外暴露出两个危险CGI接口,能够读写任意文件。
该漏洞通过写一些关键文件可以达到远程代码执行的目的,如关键exe/dll,计划任务等文件,具体过程不再赘述。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-9-18 11:59
被wmsuper编辑
,原因: