揭秘VxWorks——直击物联网安全罩门

转载:http://chuansong.me/n/1864339

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软件进行调试总的过程需要如下几步:

  1. 编译网卡驱动
  2. 修改系统配置文件
  3. 编译bootrom并加载到启动磁盘
  4. 编译VxWorks镜像
  5. 用FTP把系统镜像传到虚拟机里
  6. 配置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~?:.?ヽ(?????)??.:?+?

时间: 2024-10-08 01:45:30

揭秘VxWorks——直击物联网安全罩门的相关文章

VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘

转载:freebuf 0×00 前言 关于VxWorks,这里引用44CON议题<攻击 VxWorks:从石器时代到星际>探究 一文章中的介绍: VxWorks 是世界上使用最广泛的一种在嵌入式系统中部署的实时操作系统,是由美国WindRiver公司(简称风河公司,即WRS 公司)于1983年设计开发的.其市场范围跨越所有的安全关键领域,仅举几例,包括火星好奇心流浪者.波音787梦幻客机.网络路由器.这些应用程序的安全高危性质使得VxWorks的安全被高度关注. VxWorks操作系统是由美国

独家揭秘黄子韬解约门三大诱因

2015年4月22日,韩团EXO成员黄子韬父亲开通微博,并发布长文宣布坚持要求儿子向韩国SM娱乐公司提出解约,成为继吴亦凡.鹿晗之后第三个提出退团的中国籍成员.我特别能体会黄子韬父亲的心情http://www.ximalaya.com/zhubo/27350065/ http://www.ximalaya.com/zhubo/27350067/ http://www.ximalaya.com/zhubo/27350078/ http://www.ximalaya.com/zhubo/273500

揭秘家用路由器0day漏洞挖掘技术——互动出版网

这篇是计算机类的优质预售推荐>>>><揭秘家用路由器0day漏洞挖掘技术> 全球第一本关于家用路由器底层安全分析的书籍! 编辑推荐 全球第一本硬件安全分析书籍,填补了硬件安全领域的空白:带领大家进入HT团队都还未涉及的领域!作者十年磨一剑之心血力作! <揭秘家用路由器0day漏洞挖掘技术>针对当下网络安全设备问题层出不穷.而系统化的安全分析资料越来越难寻的现状,从家用路由器入手,全方位的讲解了路由器漏洞分析.漏洞挖掘.路由器固件提取.硬件调试等方面的相关知识

物联网支撑平台

三星 2014年7月 ,Nest.三星和ARM等六家公司布,他们正准备推出新的无线网络标准Thread.这一标准将成为现有智能家居通信标准的重要补充.Thread是一种基于IP的无线网络协议,用来连接家里的智能产品.除了Nest.三星和ARM,另外三家合作公司分别是Big Ass Fans.飞思卡尔和Silicon Labs公司,另外耶鲁也加入了这一组织. 目前,Nest智能恒温器已经支持Thread标准.未来所有支持Thread标准的设备都会在包装上标明“兼容Thread”,以备消费者选用.就

面向物联网的几大开源操作系统

在过去的十年间,大多数新型开源操作系统已从移动市场转向物联网市场.本文介绍了面向物联网的许多新型开源操作系统.我们之前的文章介绍了开源物联网框架,以及面向物联网和消费者智能家居设备的Linux和开源开发硬件. 除了介绍面向物联网的新型嵌入式Linux发行版外,我还介绍了OpenWrt等几款比较老的轻量级发行版,它们在这个领域迎来了新生.虽然Linux发行版主要针对网关和集线器,但是面向物联网的非Linux开源操作系统取得了同样迅猛的发展,它们可以在微控制器单元(MCU)上运行,通常面向物联网边缘

国外物联网平台初探(五):Exosite Murano

国外物联网平台初探(五)--Exosite Murano 马智 ? 定位 Murano是一个基于云的IoT软件平台,提供安全.可扩展的基础设施,支持端到端的生态系统,帮助客户安全.可扩展地开发.部署和管理应用.服务以及联网产品. ? 功能 Murano平台简化了整个IoT技术栈,可视为集成在一起的多个云软件层. Murano提供IoT基础设施.开发环境和功能集成,包括设备连接.产品管理.数据路由.服务集成(如data store/告警/第三方分析平台).应用开放API.用户认证/角色/权限和应用

【物联网】相关资料

物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段.其英文名称是:“Internet of things(IoT)”.顾名思义,物联网就是物物相连的互联网.这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络:其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息.物联网通过智能感知.识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机.互联网之后世界信息产业发展的第三次浪潮.物联网是互联

物联网

物联网 [1]  物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段.其英文名称是:“Internet of things(IoT)”.顾名思义,物联网就是物物相连的互联网.这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络:其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息.物联网通过智能感知.识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机.互联网之后世界信息产业发展的第三次

基于Linux的物联网操作系统

提到物联网操作系统,就不能不提Linux,因为Linux可能是目前在物联网设备中应用最广的操作系统了.本文和大家分享的就是目前常用的基于Linux的物联网操作系统,一起来看看吧. 在传统Linux内核基础上,经过裁剪,就可以移植到嵌入式系统上运行.不过,还有很多开源组织和商业公司对Linux进行了一番改造,使其更符合嵌入式系统或物联网应用的需求,比如改为实时操作系统. RTLinux RTLinux(Real-Time Linux)是Linux中的一种实时操作系统.它由新墨西哥矿业及科技学院的V