VxWorks环境搭建与学习:vxworks6.8和workbench3.2


已转载自: https://www.cnblogs.com/yokan/p/16482063.html

搭建环境所需的所有资源: https://pan.baidu.com/s/1sUF2I_DBHs-86IUJ4Ykn2Q 提取码: t7sj

实时系统vxWorks - Shell命令 https://blog.csdn.net/rt201314/article/details/119551651

VxWorks开发环境学习 https://www.daimajiaoliu.com/daima/4713a3a05900404

嵌入式操作系统VxWorks简介

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年在火星表面登陆的火星探测器上也使用到了VxWorks。

workbench

由WindRiver提供的开发工具,集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。基于eclipse。

集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。此环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Target Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。它主要由以下几部分组成:

  • VxWorks高性能的实时操作系统;
  • 应用编译工具;
  • 交互开发工具;

BSP

板载支持包(Board support package,BSP),用于支持开发板相关的功能,包括BIOS驱动、CPU、网卡驱动、硬盘驱动、ROM驱动、Flash驱动、显卡驱动等等。VxWorks BSP包含了开发人员要在特定的目标机上运行VxWorks所需要的一切支持:支持特定目标机的软件(如驱动程序等)和从主机通过网络引导VxWorks的Boot ROM。Wind River提供支持不同厂商的200多种商业体系结构和目标板的BSP。另外Wind River还提供一个BSP移植包,帮助用户移植VxWorks到客户化硬件板上(超过50%的VxWorks用户使用客户化目标机)。

BSP开发包帮助开发人员把VxWorks移植到客户化硬件平台上。BSP开发包的选项包括:测试工具,硬件设备的驱动程序库,BSP模板。用户可以根据需要选择不同的选项。Wind River还提供BSP测试验证等咨询服务。

VxVMI:VxVMI是VxWorks的虚拟内存接口。在调试阶段和软件运行时都能提供强大的内存管理功能。它包括代码段和数据段保护功能,并包含对不同CPU结构的标准编程接口。

VxMP:VxMP是VxWorks多处理器支持扩展包,它允许将任务分布在多个CPU上执行以提高效率。它透明的、高性能的设计使得在不同CPU上运行的任务可以通过现有的通信机制,如信号灯、消息队列等进行同步和数据交换。

BSP是介于底层硬件和上层软件之间的底层软件开发包,它主要功能为屏蔽硬件,提供操作系统的驱动及硬件驱动,具体功能包括:

  • 单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持;
  • 为操作系统提供设备驱动程序和系统中断服务程序;
  • 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境;
  • 初始化操作系统,为操作系统的正常运行做好准备;

BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里。其中,all文件夹里的文件是所有BSP的通用文件,bspname文件夹的文件是用户自己定制的BSP文件。

经过编译、链接,并在makefile和depend. bspname等文件的控制下,原程序最后将生成镜像。VxWorks的镜像可分为两类:可下载镜像和可引导镜像。

  • 可下载镜像(Loadable Image):实际包括两部分,一是vxWorks,二是boot ROM,两部分是独立创建的。其中boot ROM包括被压缩的boot ROM镜像(bootrom)、非压缩的boot ROM镜像(bootrom_uncmp)和驻留ROM的boot ROM镜像(bootrom_res)三种类型;
  • 可引导镜像(Bootable Image):是将引导程序和vxWorks融为一体的镜像,它常常是最终产品,包括不驻留ROM的镜像和驻留ROM的镜像两种类型。

VxWorks虚拟机安装

安装版本:

VxWorks 6.8.3 + VxWorks Workbench 3.2.3 + VMware 16 + MS-DOS 6.22 软盘版

按照FTP连接的主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统。

WorkBench3.2安装

以下操作在win10虚拟机上进行

准备工作:

先关闭UAC。

在Windows中搜索UAC

img

搜索网络连接设置,选择其中的有线网卡(不能用也没关系,主要是有线网卡就可以)。右键点击属性菜单。

img

然后点击配置按钮,弹出配置界面,点击高级子界面

img

打开资源包中的WRSLicenseWH701-VX-2Hypervisor.lic文件,找到这里:

img

复制里面的hostid=字段的内容,16位MAC地址字符串。如果不是16位MAC地址而是字符串ANY,表示此证书并未绑定网卡MAC地址,不限制网卡。

填入如下位置:

img

开始安装:

  1. 安装UItraISO(其他加载工具也可以)。运行uiso9_cn.exe,一路默认安装UItraISO,注意选择附加任务时三项都要勾选,尤其是“安装虚拟ISO驱动器”(默认三项都勾选)

    img

  2. 加载DVD-R175636.1-1-00到虚拟光驱,接着打开所加载的虚拟光驱,运行setup程序;

    img

    img

    1. 安装过程没有特别描述的都以默认选项进行;
    2. 这一步将Check都取消勾选

img

  1. 这一步选择Permanent activation(永久激活),将所给的.lic文件(证书)导入

img

  1. 其余都用默认选项,选择Next即可,最后等待安装完成

img

编译BSP

  1. 找到WorkBench的安装目录,目录名为WindRiver,找到vxworks-6.8目录,进入找到target目录,进入找到config目录,进入找到pcPentium4目录

    img

  2. 将“修改及增加文件”文件夹内提供的文件复制粘贴到Pentium4目录内,已有文件全部覆盖

    需要修改以下文件,这里直接将修改好的复制过来。

    img

    img

  3. 打开config.h文件,定位到定义 DEFAULT_BOOT_LINE 宏的地方。修改预处理条件 CPU = = PENTIUM4 分支下的定义如下:

    这里的h(host)地址表示你的主机IP地址,可以先修改为主机IP地址,或者随便填一个IP地址,之后修改主机地址为该地址,e(target)地址表示VxWorks系统目标机的IP地址,只需要和主机IP地址在同一个网段内即可,u=target pw=target是FTP下载的用户名和密码,都可以根据自己实际情况修改,最好使用target,简单易记。

img

  1. 打开Workbench3.2,Workspace就选择WindRiver目录下的workspace目录

    img

  2. File->New->Wind River Workbench Project,选择Wind River VxWorks 6.8,然后Next

  3. Build type选择Boot Loader / BSP Project,然后Next

img

  1. Project name任取,最好与BSP相关,Location选择默认的in workspace,然后Next

    img

  2. Board support package选择步骤2中经过修改的Pentium4目录,Tool chain选择gnu,勾上Copy files to project,然后Finish

img

  1. 右键选中项目,选择Build Project或者Rebuild Project进行构建

img

  1. 构建完成后,右键选中项目,选择Open Wind River VxWorks 6.8 Development Shell,打开命令行,cd进入Pentium4目录后,输入make bootrom.bin命令,将生成bootrom.bin文件

    img

  2. 找到workspace目录,找到该项目目录,在项目目录下找到Pentium4目录,进入并找到生成的bootrom.bin,复制出来,并修改后缀名为.sys,后续该文件作为引导程序

    img

  3. 找到vxload.com和vxsys.com两个文件(手动搜索,或者一般在XX\WindRiver\vxworks-6.8\host\x86-win32\bin目录下),与上一步得到的bootrom.sys放在一起,以待后续使用

img

生成VxWorks镜像

根据具体需要在命令行环境下利用Makefile创建各种镜像,也可以在Tornado的集成环境下Build菜单中选择Build Boot ROM来创建各种类型的Boot ROM;

除此以外,如果系统硬件包括串口,还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件。总之,BSP的开发要根据具体目标板的硬件进行。

1、打开Workbench3.2,Workspace就默认为WindRiver目录下的workspace目录

2、File->New->Other,在Wizards内输入VxWorks image查找并选择VxWorks Image Project,然后Next

img

3、Project name任取,最好与Image相关,Location选择默认项in workspace,然后Next

img

4、Based on选择an existing project,Project中将显示此时workspace中的项目,选择第2章节中创建好的BSP项目,然后Finish

img

5、如果需要额外开启各种服务,则需要在VxWorks Image的编译工程的Kernel Configuration中添加组件

img

选择所需要的服务,这里添加了telnet ftp rpc,然后点击finish

img

然后即可在Network Applications(default)模块下,看到对应的组件

img

还可以进行一些配置,例如TELNET组件:

img

6、组件添加完成后,右键选中项目,选择Build Project或者Rebuild Project构建

7、在workspace目录下,找到该项目目录,进行default目录,进入并找到生成的vxWorks以及vxWorks.sym,复制出来,后续这两个文件将作为VxWorks系统文件通过FTP引导系统

img

但是我这里并没有生成vxWorks.sym文件,不知道为什么…不过后面并没有影响

VxWorks虚拟机安装

1、首先使用DOS622镜像文件创建虚拟机,镜像文件格式为IMG,大小为1.44MB,软盘的大小。

2、使用VMware,新建虚拟机->典型->稍后安装操作系统->其他(MS-DOS)->自定义名称(默认为MS-DOS)和位置->使用默认最大磁盘大小2GB,将虚拟磁盘存储为单个文件->完成

3、打开上一步创建的虚拟机设置,在硬件部分“添加”“软盘驱动器”

img

4、软盘添加“完成”后,选择软盘,勾选“启动时连接”,以及“使用软盘映像文件”,并点击“浏览”选择提供的DOS662.img文件

img

5、选择CD/DVD,取消勾选“启动时连接”,修改内存大小为256MB(适当大小即可)

img

6、完成设置后,开启该虚拟机,进入开始界面,选择第三个选项Other IDE CD-ROM

img

7、选择3后进入真正的DOS界面,开始进行硬盘分区,输入fdisk

img

8、选择1,建立DOS分区

img

9、选择1,建立一个主分区

img

10、选择Y,此时询问这个分区是否使用全部的空间,由于我们只需要一个分区就可以,因此选择Y

img

11、输入任意键,虚拟机将重启

img

12、重新选择3 Other IDE CD-ROM,进行主分区的格式化,输入format c: /s ,这里输入Y确认

img

13、这里询问是否填写卷标,由于并不需要所以直接回车即可

img

14、此时已经有主分区C盘了,关闭虚拟机,在虚拟机设置中选择硬盘,选择“映射”,取消勾选“以只读模式打开文件”后确定,弹出警告点“是”即可,由此将打开该虚拟机的硬盘空间

img

之后,本地多出来个Z盘:

img

15、将"编译BSP"章节中的三个文件放入盘中后,在硬盘处“断开连接”,重新开启虚拟机,依然选择3,输入c:进入c盘(即主分区)

img

img

img

17、输入vxsys c: 命令,输入y确认

img

18、由此bootrom.sys成功设置为引导程序,关闭虚拟机,在虚拟机设置中选择软盘,取消勾选“启动时连接”,再次开启虚拟机,VxWroks系统虚拟机安装完成,其中IP地址为192.168.111.200,也就是所提供的config.h文件内设置的地址

img

img

19、移步到win10虚拟机,在C:\WindRiver\vxworks-6.8\host\x86-win32\bin下找到wftpd32.exe,使用该程序进行FTP的连接

img

20、在任意位置创建一个文件夹,用来给目标机提供FTP文件目录,方便起见,我们直接在桌面下创建一个名为ftp的文件夹,将之前得到的vxWorksvxWorks.sym两个文件放入其中

这里我只生成了vxWorks

img

21、打开wftpd32.exe,Security->Users/Rights->New User->创建一个名为target,密码为target的用户(这个用户名密码是在config.h文件修改时设定好的)

img

22、用户创建好后选择该用户,在Home Directory内填入20步中创建的文件夹,然后选择“Done”

img

23、重启VxWorks虚拟机,此时虚拟机将通过FTP连接载入VxWroks系统,完成

img

这里我们在”生成VxWorks镜像“章节,并没有生成vxWorks.sym文件,但是依然可以搭建成功。

24、由于前面我们配置了RPC、TELNET、FTP组件,所以扫描可以看到对应的开放端口

img

漏洞测试

在上一部分,我们已经搭建成功了 VxWorks 6.8.3 + VxWorks Workbench 3.2.3

img

下面进行一些已知漏洞测试

urgent11

img

img

img

IPnet TCP/IP 堆栈检测

该工具以 TCP 和 ICMP 指纹的形式对目标主机实施 4 种独特的检测方法。通过计算所有方法得分的总和,我们可以高精度地确定设备是否运行依赖于 IPnet TCP/IP 堆栈的操作系统以及该操作系统是否为 VxWorks。此外,我们还测试了主机是否容易受到 CVE-2019-12258 的攻击,这是影响所有使用 IPnet 的 VxWorks 版本的 URGENT/11 漏洞之一。如果检测到设备在 VxWorks 上运行 IPnet,并且不受此 CVE 的攻击,则可以推断该设备已针对 URGENT/11 漏洞进行了修补

对上面搭建的环境进行测试,可以发现没有修补漏洞:

img

CVE-2019-9865

VxWorks的RPC组件存在此漏洞。 有关漏洞的详细信息可以在这里找到。

在 6.9.1 之前的 Wind River VxWorks 6.9 中启用 RPC 时,特制的 RPC 请求会触发整数溢出,从而导致内存复制越界。它可能允许远程攻击者导致拒绝服务(崩溃)或可能执行任意代码。

复现:

这里搭建的是6.8版本,不存在漏洞

修改poc.py里面的host地址:

img

运行poc.py

img

img

CVE-2019-12255

VxWorks的IPnet栈存在此漏洞。 有关漏洞的详细信息可以在这里找到。

PoC可以使VxWorks任务(设置与PoC中任务对应的端口)崩溃,例如telnet、ftp等。

影响版本:6.5 ≤ VxWorks<6.9.4

复现:

修改poc.py里面的ip和dport

img

运行:

#当OS收到非请求报文时,会发送RST (reset)报文。 我们可以使用iptables来避免这种情况。 
iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 192.168.111.134(攻击者ip) -j DROP

#运行POC
python3 poc.py

img

img

CVE-2019-12260

此 PoC 使用 TCP 身份验证选项 (TCP-AO) 发送数据包

iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 172.18.101.121 -j DROP
python3 poc.py

img

CVE-2010-2965

VxWorks wdbrpc远程代码执行漏洞

VxWorks 6.x, 5.x和之前版本中的WDB目标代理调试服务中存在权限许可和访问控制漏洞。远程攻击者可以借助向UDP 17185端口发送的请求读取或修改任意存储单元,执行函数调用,从而造成任意代码执行。

img

WDB RPC有V1和V2两个版本,VxWorks 5.5中使用V1版本,而VxWorks 6.6中使用V2版本,V2版本相较于V1版本有较多处修改,具体体现在协议字段及交互方式。 以上这些脚本都是针对WDB RPC V1

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小熊coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值