44CON议题《攻击 VxWorks:从石器时代到星际》探究


发布人:admin分类:网络安全浏览量:46发布时间:2017-12-12

在2015年9月9日-11日举办的“44 CON 伦敦”峰会中,议题众多,本文将针对“攻击 VxWorks”这个议题进行学习研究。

0×01 前言

VxWorks 是世界上使用最广泛的一种在嵌入式系统中部署的实时操作系统,是由美国WindRiver公司(简称风河公司,即WRS 公司)于1983年设计开发的。其市场范围跨越所有的安全关键领域,仅举几例,包括火星好奇心流浪者、波音787梦幻客机、网络路由器。这些应用程序的安全高危性质使得VxWorks的安全被高度关注。

加拿大安全研究人员Yannick Formaggio发现VxWorks中存在严重的漏洞,允许攻击者远程执行代码。Formaggio对VxWorks进行了深入的安全分析,包括它所支持的网络协议和操作系统安全机制。演讲中他展示了其开发的VxWorks评估工具,主要目的是通过在python中实现WdbRPC协议来提供有效的渗透测试。为了显示它的效果,揭示一些在研究过程中发现的bug。

一个快速的互联网扫描显示了至少有10万台运行了VxWorks的设备连接到了互联网。考虑到VxWorks在物联网时代的普及,这一问题将会产生广泛的影响。

0×01 什么是VxWorks?

VxWorks操作系统是由美国Wind River(风河公司)开发的一种嵌入式实时操作系统(RTOS),已宣称拥有至少15亿台设备,VxWorks支持几乎所有现代市场上的嵌入式CPU架构,包括x86系列、MIPS、 PowerPC、Freescale ColdFire、Intel i960、SPARC、SH-4、ARM, StrongARM以及xScale CPU。

0×02 VxWorks的安全性

这一页是介绍VxWorks从2008年至2015年的CVE安全漏洞数量详细信息统计图表:

来源:http://www.cvedetails.com/product/15063/Windriver-Vxworks.html?vendor_id=95

风河公司非常注重VxWorks的安全性:

2011年与McAfee建立合作伙伴关系。
VxWorks 6.x 引进了一些内存保护机制。
VxWorks 7.x 进一步提升了以下方面:
数字签名模块(X.509)
加密
集中式的用户数据库
密码管理(SHA-256算法)
在运行过程中创建/删除用户
加密数据存储

0×03 以往的研究与启示

在这一节,演讲者主要介绍了以往一些大牛对VxWorks的漏洞挖掘的研究。

在2010年,HD Moore 在Metasploit社区发表了题为“Shiny Old VxWorks Vulnerabilities”的漏洞分析文章,并且提供了4个针对WDB RPC的msf攻击模块以及密码的哈希算法加密漏洞。 

在2011年, /DEV/TTYS0 大牛对VxWorks的固件WRT54Gv8进行了逆向分析,并发表了题为“Reverse Engineering VxWorks Firmware: WRT54Gv8”的文章。

SecNiche Security Labs的安全研究人员对VxWorks整体的系统安全和固件进行了漏洞挖掘,并发表了题为“Digging Inside VxWorks OS and Firmware – Holistic Security”的文章。

0×04 VxWorks内部探究(内存布局与保护

X86内存布局:上端内存

X86内存布局:中断向量表(在32位保护模式下该表称为中断描述符表)IDT

X86内存布局:致命错误异常消息的ASCII字符串

X86内存布局:VxWorks镜像入口点

X86内存布局:WDB(Wind Debug协议)共享内存

内存保护:

VxWorks 为带有 MMU 的目标板提供了虚拟内存机制,对于非 MMU 的目标板是基于堆错误检测进行内存保护。

接下来是介绍VxWorks在内存保护方面所实现的一些机制。

内存保护:

任务堆栈超荷和欠载检测
中断堆栈超荷和欠载检测

内存保护:

非可执行的任务堆栈 & 非可写文本段
    INCLUDE_TASK_STACK_NO_EXEC
    INCLUDE_PROTECT_TEXT
    任务堆栈大小 = MMU 页大小

内存保护:

空指针使用检测

堆区块超荷检测 / 使用情况跟踪与泄漏检测

0×05 什么是WDB RPC?

在对VxWorks进行模糊测试前,需要明白,WDB RPC是一个基于SUN-RPC协议的调试接口,它的服务运行在UDP协议的17185端口上,可以直接访问系统的内存。

接下来是介绍WDB协议V2的动态图解:

调用:由目标服务器发出

应答:由目标代理发出

针对VxWorks 5.x 使用WDB对过程进行监测(一):
绿色表示调用过程,红色表示应答过程。

针对VxWorks 5.x 使用WDB对过程进行监测(二):
调用过程:主机连接至目标。

针对VxWorks 5.x 使用WDB对过程进行监测(三):
应答过程:目标连接至主机。

针对VxWorks 5.x 使用WDB对过程进行监测(四):
调用过程:主机对目标发起WDB功能调用操作。

针对VxWorks 5.x 使用WDB对过程进行监测(五):
应答过程:目标对主机发起WDB功能调用操作。

针对VxWorks 5.x 使用WDB对过程进行监测(六):
调用过程:主机对目标发起WDB内容挂起操作。
应答过程:目标对主机发起WDB内容挂起操作。

针对VxWorks 5.x 使用WDB对过程进行监测(七):
调用过程:主机对目标发起WDB事件点添加操作。
应答过程:目标对主机发起WDB事件点添加操作。

针对VxWorks 5.x 使用WDB对过程进行监测(八):
调用过程:主机对目标发起WDB内容控制操作。
应答过程:目标对主机发起WDB内容控制操作。

下面是针对VxWorks 6.x 使用WDB对过程进行监测(一):

在Gopher上获取更多信息。

针对VxWorks 6.x 使用WDB对过程进行监测(二):

接下来是对崩溃检测机制的介绍:

目标向主机发送事件通知。

主机确认。

主机请求更多的信息(寄存器内容,内存区域......)

下一节的模糊测试将会用到WDBRPC框架,使用Python编写,支持VxWorks 5.x和6.x,实现了部分WDBRPC协议,实现了一个基本的远程调试器——WdbDbg。

一些外部依赖项:

PyElfTools: 从 VxWorks 图像读取导入

Capstone Engine: 对崩溃区周围的代码进行反汇编

0×06 从模糊测试到漏洞利用

这一节将对VxWorks的一些网络协议(RPC,FTP,TFTP,NTP等)进行fuzzing。使用Sulley fuzzing框架。对于没有可用的精确崩溃检测的问题可以使用 WdbRPC 作为解决方案。

与Sulley进行对接:

灵感来自于与 Sulley process_monitor.py 脚本
执行情况:
    DebuggerThread 实例化 WdbDbg,并实现回调在崩溃发生时调用。
    ProcessMonitorPedRPCServer 与 Sulley 的 ped rpc 例程进行对接。
VxMon 包装的一切。

接下来是Fuzzing过程的图解:

VxMon使用WDB RPC对VxWorks目标进行监测,Sulley模糊测试框架对VxWorks目标进行模糊测试,当VxMon收到崩溃发生事件时,使用Sulley 的 ped rpc 例程与Sulley模糊测试框架进行通信,告知其崩溃发生。

这一页是模糊测试的一个Demo:

接下来是对Fuzzing过程中产生的崩溃进行分析:

Portmap任务在相同的 RPC 字段崩溃多次: 凭据的味道
当设置为负值,则 => PC 设置为任意的内存值

对系统的authenticate函数进行反汇编:

对eax寄存器进行赋值操作:

对ebx寄存器进行赋值操作:

使用cmp指令对比ebx寄存器和2的大小,注意右侧ebx寄存器的值为0:

jg是个大于转移的汇编指令,由于0<2不满足条件,所以不会跳到0x4173c7地址处执行。

由于上面并未跳转所以继续向下执行,call指令调用了svcauthsw函数:

进入svcauthsw函数内存空间,发现已经发生了溢出。

如何进行漏洞利用?

整数溢出导致了RCE(远程代码执行)
堆喷射shellcode
计算凭据风味值
直接跳进shellcode
绕过所有的内存保护
设置后门帐户

该议题的演讲者在PPT后面的一页中已作相关说明,因此此漏洞的exp他并不会发布。

在模糊测试的过程中发现了其他的bug:

FTP 服务器在被高速访问时容易出现环缓冲区溢出错误。
当FTP收到精心构造的用户名和密码时会崩溃,网络堆栈会挂掉!

0×07 结论

风河公司对VxWorks的安全的确很重视,实现了很多内存保护机制,不过最后被一个简单的整数溢出漏洞打败了。

本次公开的安全问题将会影响VxWorks 5.5版本,也就是需要补丁的设备要以百万来计数。风河公司已确认存在VxWorks系统中存在漏洞,并计划在不久之后发布更新。

原文PPT下载:http://www.slideshare.net/44Con/44con-london-attacking-vxworks-from-stone-age-to-interstellar

*投稿:FreeBuf特约作者丝绸之路, 




被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

免责声明

本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:21265816(PV) 页面执行时间:119.748(MS)
  • xml
  • 网站地图