关键词:
VxWorks是美国风河(WindRiver)公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
VxWorks支持几乎所有现代市场上的嵌入式CPU,包括x86系列、MIPS、 PowerPC、Freescale ColdFire、Intel i960、SPARC、SH-4、ARM,StrongARM以及xScale CPU。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、F/A-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连一些火星探测器,如1997年7月登陆的火星探测器,2008年5月登陆的凤凰号,和2012年8月登陆的好奇号也都使用到了VxWorks。——摘自《维基百科》
https://zh.wikipedia.org/wiki/VxWorks
正因为VxWorks操作系统的开放性、模块化和可扩展性的系统结构特征以及能在多线程、多任务的系统环境中达到高实时要求的PLC控制要求,在保证实时性的同时,实现多点位、复杂功能的PLC系统控制目标,因此被广泛用于物联网嵌入式设备及工业控制领域。西门子、施耐德的多款PLC设备软件搭载在VxWorks系统上运行。
来看下CVE公布的VxWorks相关漏洞:
对于一款被广泛应用的操作系统,CVE漏洞能控制在这个数量可以说安全做得已经挺好了。最新的7.0系统又做出了很多针对安全的功能,更是提出了应用程序加密这样的安全模式,任何一个系统应用在运行前需要做哈希验证,这样能极大程度减少恶意软件和木马的植入对于系统带来的威胁。
难道说搭载风河VxWorks系统的嵌入式设备真的就无懈可击了?我要告诉你,在系统以及网络层我们还是能做很多事情的。
先来简单了解下该系统。
这是我在Vmware上运行的基于Pentium架构的VxWorks 5.5.1版本系统,虽然不是最新版本,但用于了解系统的工作方式,做一些基本的测试已经足够了,而且本身大部分加载VxWorks系统的设备也并不是最新的,低于此版本的设备也不在少数。
在虚拟机上运行VxWorks5.5系统并通过tornado软件进行调试总的过程需要如下几步:
-
编译网卡驱动
-
修改系统配置文件
-
编译bootrom并加载到启动磁盘
-
编译VxWorks镜像
-
用FTP把系统镜像传到虚拟机里
-
配置target server来调试系统以及应用
如果对于嵌入式系统没有基础那么这几步还是挑战很大,因此网上能找到已经编译好的针对vmware的系统镜像以及VxWorks BSP文件。这极大得降低了研究的门槛,我们只需要进行相应的配置再通过系统专门的集成开发环境tornado 2.2就可以展开对于VxWorks系统的入门级研究。当然这只是入门级研究环境,对于熟悉系统工作原理和网络栈已经可以满足,但是如果要研究系统底层安全性如溢出、shellcode那就需要真实的系统以及针对性的指令架构。
另外推荐两款搭载VxWorks系统的设备,也可以针对真实的设备进行研究。第一款为经典的思科Linsys54g路由器,这款路由出厂内置VxWorks5.5系统,很多对于固件的逆向都是从这款路由的固件入手的,通过接入板子串口可以拿到系统boot shell,但我在尝试时系统运行不到VxWorks shell,会报一个网络配置的错误,有兴趣的朋友可以一起研究下,如果知道怎么解决可以和我联系。另外一款设备是华为的UAP2105 UMTS是一款家庭使用的小型蜂窝基站。这款设备在2015Blackhat上被爆出多个漏洞,可以通过JTAG接口拿到VxWorks shell,并且可以通过远程调试端口进行访问。
在做了如上准备工作后,我们就可以开始对于VxWorks系统的安全性进行探秘了。
我们先来直观的感受下这个系统,来看下VxWorks系统的shell,这是可用的基本命令,和我们熟悉的Linux Bash区别还是很大的。
其中还包括输入输出、调试、文件系统、网络等一些具体的命令。我们注意到这个系统的shell具有一些针对于任务(task)的操作命令以及可以修改内存的命令,可以说权限是相当大的。看下当前任务状态,我们就可以感受到实时操作系统的特点了。
有兴趣可以去自己了解,这里不做详细介绍。
我们来用nmap做下端口扫描,结果如下:
可以看到系统支持了多种标准网络协议进行通信,我们主要来针对wdbrpc调试端口进行hack。
什么是Wdbrpc?
wdbrpc是VxWorks的远程调试端口,以UDP方式进行通信,端口号为17185。协议基于sun-rpc。该服务主要用于支持系统远程通过集成开发环境Tornado交互。
通过Tornado开发环境软件可以进行应用程序代码编写、上传到设备、远程调试、rom烧录等一系列功能。支持通过wdbrpc、wdbpipe、wdbserial等不同的连接交互方式。
Vxworks系统将一起与硬件相关的模块都放在BSP库中。BSP库是硬件与软件的接口,处理硬件的初始化、中断处理与产生、硬件时钟与定时管理、局部和总线内存空间的映射、内存大小定义等等。能够自行启动目标设备、初始化目标设备,能够与host通信下载系统内核,将系统权限交由Vxworks内核来调用应用程序等功能。
因此该通信端口权限十分大,然后并没有身份认证与传输加密机制。该通信接口为远程攻击设备提供了无限可能。
通过以上简单了解,我们需要深入了解wdbrpc通信协议,然而网上并没有官方详细的协议说明,只有在风河开发文档中简单涉及一些协议说明。
Rapid7曾在2010年8月发表博客《Shiny Old VxWorks Vulnerabilities》其中说明了wdbrpc端口的问题并且给出了当时的统计报告以及4个metasploit攻击模块。因此我们可以从模块入手进行分析。
https://community.rapid7.com/community/metasploit/blog/2010/08/02/shiny-old-vxworks-vulnerabilities
包括wdbrpc_version、wdbrpc_bootline、wdbrpc_reboot、wdbrpc_memory_dump。分别提供远程获取系统版本号信息、获取bootline信息、远程重启系统以及远程dump内存。
通过对虚拟机远程设备进行尝试,可以看到我们能从wdbrpc端口上轻松获取到系统版本号以及bootline启动配置信息。通过wireshark我们在仔细看下协议过程。
可以看到协议内容并无加密,但是wireshark也不能解析该协议,因此攻击手段也将受限,wdbrpc提供的功能很多并且权限很大,但目前也只能通过这四个攻击模块进行攻击。初步尝试还发现获取系统版本号可以直接通过重放进行攻击,然而要是获取bootline信息或远程dump内存并不能简单的重放,协议的交互过程还是具备初始化等步骤。因此我们还是需要进一步深入了解该协议。
Vxworks开发文档上有如下对于wdbrpc协议请求和响应的说明:
这是一个请求数据包的格式,其中20字节IP头,8字节UDP头,40字节wdbrpc头,其中包含WDBPROG为4字节固定为0x55555555、WDBVERS为4字节(0x00000001)以及RPC调用编码。XDR stream为调用参数信息。
RPC请求数据头具体如下:
RPC请求参数wrapper部分具体如下:
建立连接的通信过程为,host首先给target发送一个Connect请求,收到回应包后,即可发送Fanc_call数据包。Connect请求的Procedure字段为0x00000001,data字段需要填充具体的调用参数为0x00000002,0x00000000,0x00000000。
远程内存读取的通信过程为,在建立连接的基础上发送以0x0000000A为Procedure、以offset/length/params为具体参数的data,即可收到相应内存地址上的数据。具体内容可以通过阅读源码了解${WIND_BASE}/share/src/agents/wdb/wdb.h
http://www.codeforge.cn/read/82844/wdb.h__html
今后会在Github上公布关于VxWorks系统攻击的python源码,敬请期待。
https//github.com/ameng929/VxworksHack
当我们具备了wdbrpc协议的基础,我们就可以通过该协议对Vxworks系统设备进行远程攻击了。列举几种简单的攻击方式:
一、篡改bootline绕过登录验证
首先看下ARM架构下的系统内存布局:
其中0x0700到0x0800地址之间存放Bootline配置信息。如果系统架构为x86那么对应地址将从0x1200开始。
我们可以通过wdbrpc远程修改内存地址数据令其以0x20方式启动,这样就可以绕过登录认证通过ftp或telnet访问系统。
二、Dump内存数据从中抓取登录密码
以一个远程昆腾PLC为例,通过wdbrpc协议dump全部内存空间数据。
10分钟后就拿到了远程设备约15M左右的完整内存数据。
可以看到ppc架构指定位置上的bootline信息,再通过string命令抓取内存文件中的字符串数据。
再通过这样一个正则就轻松的找到了内存中的所有ftp、telnet登录密码:
cat strings.memory.dmp |grep -n "[RSbcdeyz9Q]{9}"
具体为什么正则要这样写以及这个hash密码如何利用,请看我之前的文章《邪恶的0x4321》。
现在可以回答之前文章的问题了,0x4321即为wdbrpc的端口号17185的16进制格式。
下面交给Z-one大神 (⊙.⊙)
以下是全球暴漏在IPv4公网上的17185端口统计分析:
http://plcscan.org/lab/census/vxworks/
通过Zmap调用wdbrpc-scan脚本扫描全网暴漏端口IP数约5万+,其中3.4万能读取到系统信息和bootline信息。
数量按国家分布Top10:
中国: 7861
美国: 5283
巴西: 3056
意大利: 1025
日本: 823
俄罗斯: 647
墨西哥: 505
哈萨克斯坦: 486
澳大利亚: 481
印度: 448
数量按VxWorks系统版本号统计:
VxWorks5.5.1 15601
VxWorks5.4.2 6583
VxWorks5.4 5410
VxWorks5.4.2 5254
VxWorks5.5 899
VxWorks 654
VxWorks5.3.1 236
数量按设备信息统计Top10:
Telogy Networks GG30E Reference Board 3674
TI TNETV1050 Communication Processor 3360
Motorola MPC82xx ADS - HIP7 2626
IP-ADSL DSLAM (MPC860/855T) 1972
HUAWEI ET&IAD; 1796
MPC8245Board: EDSL , Map B (CHRP) 1678
PowerPC 875, 133MHZ 1553
Mips 4KEc 1239
MGCB 912
Intel IXP425 - IXDP425 BE 887
其中受影响的PLC模块型号:
罗克韦尔Rockwell Automation 1756-ENBT固件版本为3.2.6、3.6.1及其他
西门子Siemens CP 1604、Siemens CP 1616
施耐德Schneider Electric 昆腾部分以太网模块
另外通过Shodan和Zoomeye搜索“vxworks”Dork的数量对比:
知道创宇-ZoomEye:
FTP 77,123
Telnet 10,795
SNMP 133
Shodan:
FTP 26,212
SNMP 17,261
Telnet 4,735
以下的数据由Z-one提供,未经允许不得引用。
搞物联网安全的黑阔们又可以疯狂了。
Make some noise~?:.?ヽ(?????)??.:?+?
python核心揭秘python协程(代码片段)
首先要明白什么是协程?协程是实现并发编程的一种方式。一说并发肯定想到了多线程/多进程模型,多线程/多进程正是解决并发问题的经典模型之一先从一个爬虫实例出发,用清晰的思路并且结合实战来搞懂这个不... 查看详情
揭秘互联网跟单赚钱新玩法-波浪智投
波浪智投是一款智能跟单交易的移动互联网应用产品(APP)。由達芬奇科技有限公司提供技术以及业务上支持,是波浪证券集团旗下的首款移动应用产品,拥有简捷、安全、专业、灵活等特点。用户只需要用最简单的方法跟单操... 查看详情
揭秘国外社交平台的灰色利益链
近年来,随着互联网技术的快速发展,物联网这一领域也跟着水涨船高,各项具有应用意义的项目也在不断拓展,比如智能家居,视频监控系统等,身处千里之外,却能知悉家中的一举一动,这也体现了“万物互联”的概念。其... 查看详情
万物智联,腾讯云iot边缘计算揭秘——云+未来峰会开发者专场回顾
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~背景:现在是万物互联的时代,智能穿戴设备,智能家居,无人商业,改变了我们的生活方式。预计到2021年,全球物联网设数将达到150亿,超过手机和PC的总和,物... 查看详情
easymr安全架构揭秘:如何管理hadoop数据安全
2017年,美国信用评级机构Equifax遭受黑客攻击,导致1.4亿个人的敏感信息泄露;2020年,发生了SolarWinds公司的软件供应链遭受恶意代码攻击事件,涉及多个行业和国家;2022年,网信办依据《数据安全法》等法律法规,对滴滴公司... 查看详情
网络安全从业人员必备哪些证书?揭秘“安全内幕”!
...员对于个人职业发展、能力提升有诸多关注。3分钟为你揭秘“信息安全内幕”!网络安全是个“多金而有前途”的行业根据中国信息安全从业人员现状调查显示,我国信息安全从业人员平均年薪为15.3万元。这个数字不但... 查看详情
直击大圣车服一周年发布会:这个汽车生态平台要放大招!
去年,一家汽车主机厂、一家互联网公司、一家保险公司,联合起来要做一个汽车生态平台。消息一出,有人赞许,有人质疑,毕竟在国内六大汽车集团中联手互联网企业干这事的,尚属首例。这个引发争议的平台叫大圣车服,... 查看详情
揭秘:一线互联网薪资曝光,看看你的价值,有没有被低估?
一,互联网公司排名首先看一下中国互联网公司排名1,中国互联网公司市值排名排名数据根据2017年8月4日统计阿里巴巴(BABA)3907.73亿美元腾讯控股(00700)29576.74亿港元(3782.92亿美元)百度(BIDU)793.87亿美元京东(JD)639.77亿... 查看详情
网易云易盾发布多国家多语种内容安全服务,助力中国互联网出海
...等移动互联网新兴市场。据《中国移动互联网出海环境全揭秘报告》,2017年Q4中国互联网出海企业就达到720多家,出海应用2268个,2018年出海应用数量更是呈井喷态势。出海产品已从纯工具类,逐步深入为游戏、文娱类、金融支... 查看详情
网易云易盾发布多国家多语种内容安全服务,助力中国互联网出海
...等移动互联网新兴市场。据《中国移动互联网出海环境全揭秘报告》,2017年Q4中国互联网出海企业就达到720多家,出海应用2268个,2018年出海应用数量更是呈井喷态势。出海产品已从纯工具类,逐步深入为游戏、文娱类、金融支... 查看详情
揭秘全球首次互联网8k直播背后的技术实现
3月28日,云栖大会·深圳峰会现场,阿里云发布并现场演示了阿里视频云最新8K互联网直播解决方案。这是全球发布的首个8K视频云解决方案,也是全球首次8K互联网视频直播。舞台的屏幕上显示了从1300公里以外的阿里巴巴杭州园... 查看详情
互联网黑产江湖揭秘一--那些隐藏在海面下的身份倒卖行业
如果有10%的利润,黑客就保证不会消停;如果有20%的利润,黑客就会异常活跃;如果有50%的利润,黑客就会铤而走险;为了100%的利润,黑客就敢践踏一切人间法律。这是马克思在《资本论》里写下的一句话,被引用在了《安全简史... 查看详情
深入揭秘https安全问题&连接建立全过程
...知识,HTTPS一直戴着神秘的面纱。接下来让我们一起深入揭秘HTTPS的安全问题和建立的全过程吧!本文将分两个专题去理解HTTPS。专题一,主要介绍HTTPS建立安全链接的原理,包括非对称加密、对称加密 查看详情
互联网大厂面试揭秘:mysql查询常考的十道面试题(代码片段)
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等表结构:`student`(‘id‘、‘name‘、‘code‘、‘age‘、‘sex‘)学生表`teacher`(‘id‘、‘name‘)教师表`course`(‘id‘、‘name‘、‘teacher_id‘)课程表`s... 查看详情
《揭秘一线互联网企业前端javascript高级面试》视频教程总结系列五:mvvm和vue相关
系列目录:https://www.cnblogs.com/lmyxywy/p/10931603.html 问题一:说一下使用Jquery和使用vue的区别。 Jquery是对繁琐的Dom操作进行了封装,同时也在里面封装了兼容浏览器的处理方式,更方便开发人员选取和操作DOM对象,在这... 查看详情
揭秘医疗安全防卫战:“我们仍在购买不安全的医疗设备”
欢迎访问网易云社区,了解更多网易技术产品运营经验。“知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充《论衡·实知》。人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道... 查看详情
揭秘医疗安全防卫战:“我们仍在购买不安全的医疗设备”
欢迎访问网易云社区,了解更多网易技术产品运营经验。“知物由学”是网易云易盾打造的一个品牌栏目,词语出自汉·王充《论衡·实知》。人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道... 查看详情
idapro代码破解揭秘的编辑推荐
参考技术A《IDAPro代码破解揭秘》:如果你想掌握IDAPro,如果你想掌握逆向工程编码的科学和艺术,如果你想进行更高效的安全研发和软件调试,《IDAPro代码破解揭秘》正适合你!《IDAPro代码破解揭秘》是安全领域内的权威著作,... 查看详情