[技术]SiteOmat自动化软件漏洞分析
最近一段时间,卡巴斯基实验室发现了Orpak 公司的SiteOmat自动化软件漏洞,通过该漏洞可以在线访问全球1000多个加油站控制器。并且该软件(SiteOmat)还曝有一个重大安全漏洞,就是允许黑客任意修改燃油价格。
事件回顾:
据报道,卡巴斯基实验室的研究人员上个月发布了关于加油站漏洞的研究报告,指出从美国到印度的1000多个加油站可能面临网络攻击。这些问题来自能连接到互联网的加油站控制器,所有者无法更改默认密码,攻击者完全可以访问机器。卡巴斯基实验室高级安全研究员Ido Naor和以色列安全研究员Amihai Neiderman在卡巴斯位于墨西哥坎昆举行的安全分析师峰会期间,就加油站的安全问题展开了全面分析。他们的研究表明,攻击者可以改变汽油价格,窃取记录在控制器上的信用卡信息,获取车牌号码,造成油料泄露,调整温度监控器等等。
当攻击者获得root权限时,他们可以做很多任何想做的事。因为密码安全性较低,可以通过互联网远程连接这些加油站的控制器。
此次事件的主角是Orpak 公司的 SiteOmat,该软件专门为运行在嵌入式 Linux 设备或标准 PC 之上而设计,能够提供“完整且安全的现场自动化、管理分配、支付终端、前院设备与燃料箱控制功能,从而全面监督并记录一切交易活动。”
这些安全漏洞还允许黑客在目标企业的网络内横向移动,访问支付系统、窃取财务数据并获取客户信息(例如车牌号以及司机身份数据)。
在测试中,Neiderman和Naor能够在一台加油机上将每升燃气的价格从6.54ILS(以色列新锡克尔)远程修改为6.66ILS。Neiderman写了一个脚本来自动修改价格,并可以通过使用手机来触发。
对漏洞的分析:
首先下载文中所提到的用户手册。虽然公司已经声明他们已经撤回官网的手册,但是利用Google搜索还是能够找到。通过查看手册,我们能够知道默认用户名(Admin)+登录密码(Admin),如下图:
并且由于目前有大量加油站系统暴露在互联网上,所以我们通过shodan可以查看到许多有用的信息,如下图:
当前暴露在互联网上的设备,统计如下:
以下部分操作请勿模仿。
下面的登录界面是直接Google到的。通过输入正确的用户名密码可以登录进去。管理员登录界面,如图:
登入后的系统,如图:
下图是用户手册上的截图,这个截图是该公司提供的用户登录进系统的界面。用户手册提供了软件详细的使用流程:
具体分析本次暴露出的几个漏洞:
1、硬编码凭证:硬编码是将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此变量就非常困难了。该系统存在的问题是嵌入在SiteOmat源代码中的后门,带有硬编码的用户名和密码。这将允许远程黑客绕过系统的前端密码保护,并访问任何Orpak加油站,无论加油站所有者是否更改了默认密码。后门提供了对SiteOmat网页管理界面的全面管理访问,包括修改燃油价格和其他设置的权限。SiteOmat实际上并不需要管理权限来修改燃油价格,任何有权限访问系统的人都可以在没有授权的情况下对燃油价格进行修改。总结:导致该漏洞的原因是不严谨的编码和控制代理管理机制的访问不完善。
2、缓冲区溢出漏洞:可取得系统特殊权限,进行非法操作。尽管系统跟踪日志会记录价格的变化,但实验人员发现的缓冲区溢出漏洞使得攻击者能够控制系统并删除所有日志。
3、持久性XSS:攻击行为伴随着攻击数据一直存在,同时向浏览器传送一个cookie,(即使是使用了session验证的方法,还是需要客户端支持cookie), cookie会保存会话连接中的数据,Session ID作为会话标识,浏览器的后续请求就会基于后续请求,攻击者可以提供一个攻击链接,用户点击该链接时,向攻击者自己的服务器发送一条保存有session id 的信息,这样就窃取到用户的session id,得到用户的登录权限了。将攻击行为存入数据库,攻击者在会话有效期内即可获得admin的用户权限,并且由于攻击数据已经在数据库,所以不删除数据库里的记录,还是会有可能受到攻击。
4、不安全通信:SiteOmat以非加密格式存储用户信息,如用户名和密码,并使用未签名和未加密的固件,这意味着攻击者可以使用受感染的SiteOmat软件来覆盖合法版本。最终wireshark证实系统采用明文传输,未加密。
5、SQL注入
6、代码注入
7、远程代码执行等
此次攻击所利用到的漏洞列出如下:
硬编码凭证(CNNVD-201709-1067、CVE-2017-14728)、
持久性XSS(CNNVD-201709-1192、CVE-2017-14850)、
SQL注入(CNNVD-201709-1191、CVE-2017-14851)、
不安全通信(CNNVD-201709-1190、CVE-2017-14852)、
代码注入(CNNVD-201709-1189、CVE-2017-14853)、
远程代码执行(CNNVD-201709-1188、CVE-2017-14854)等。