搭建环境所需的所有资源: 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

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

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

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

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

填入如下位置:

开始安装:

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

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

    1. 安装过程没有特别描述的都以默认选项进行;

    2. 这一步将Check都取消勾选

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

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

编译BSP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

生成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

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

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

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

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

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

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

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

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

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

VxWorks虚拟机安装

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

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

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

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

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

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

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

8、选择1,建立DOS分区

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

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

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

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

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

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

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

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

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

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

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

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

这里我只生成了vxWorks

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

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

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

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

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

漏洞测试

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

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

urgent11

https://buaq.net/go-6479.html

IPnet TCP/IP 堆栈检测

https://github.com/ArmisSecurity/urgent11-detector

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

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

CVE-2019-9865

https://github.com/dazhouzhou/vxworks-poc/tree/master/CVE-2019-9865

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

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

复现:

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

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

运行poc.py

CVE-2019-12255

https://github.com/iweizime/urgent11-poc/tree/master/CVE-2019-12255

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

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

影响版本:6.5 ≤ VxWorks<6.9.4

复现:

修改poc.py里面的ip和dport

运行:

#当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

CVE-2019-12260

https://github.com/iweizime/urgent11-poc/tree/master/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

CVE-2010-2965

VxWorks wdbrpc远程代码执行漏洞

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

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

VxWorks环境搭建与学习的更多相关文章

  1. Node.js环境搭建和学习(windwos环境)

    Node.js环境搭建和学习 一.环境搭建 1.下载安装文件 下载地址http://nodejs-org.qiniudn.com/下载Node.js环境安装包,根据操作系统下载对应的安装包 下载地址 ...

  2. Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!

    Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!

  3. Linux测试环境搭建的学习建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...

  4. python 3.6 + robotFramework自动化框架 环境搭建、学习笔记

    ################################################################# #author: 陈月白 #_blogs: http://www.c ...

  5. django环境搭建和学习

    由于服务器down了好几天,前几天做的django的project全都在上面,无法继续开展工作,所以决定在本地重新部署一套virtualenv 之前没有好好整理过部署过程(其实也不难),所以决定写个随 ...

  6. ubuntu18.04 qemu环境搭建【学习笔记】

    一.准备工具 1.1 安装相关工具 sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1. ...

  7. MyBatis学习系列一之环境搭建

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 学习一个新的知识,首先做一个简单的例子使用一下,然后再逐步深入.MyBat ...

  8. LAMP环境搭建教程

    原文:LAMP环境搭建教程 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.M ...

  9. 01-S3C2440学习入门概念+环境搭建【转】

    本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/54754812 一.心得: 这两年学过很多东西,有点杂,总感觉不够踏实,于是准备写 ...

随机推荐

  1. XCTF练习题---MISC---a_good_idea

    XCTF练习题---MISC---a_good_idea flag:NCTF{m1sc_1s_very_funny!!!} 解题步骤: 1.观察题目,下载附件 2.到手以后发现是一张图片,尝试修改文件 ...

  2. B+树能存多少数据?

    B+树能存多少数据? 图 MySQL B+树示意图 InnoDB页的大小默认是16KB: 假设一条记录大小为1KB,则一个数据页中可以存16条数据(忽略页中的其他数据结构) 假设主键为int,又指针大 ...

  3. Windows平台安装SQLite3数据库

    Windows平台安装SQLite3数据库 话不多说,开始! 访问SQLite官网下载资源 在搜索引擎中键入SQLite3关键字寻找官网入口或直接点击此处前往SQLite官网,官网界面如下: 点击页面 ...

  4. CTO 说了,如果发现谁用 kill -9 关闭程序就开除

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 来源:blog.csdn.net/qq_33220089          正文    kil ...

  5. 干货|给小白的 Nginx 10分钟入门指南

    一个执着于技术的公众号 前言 今天主要对Nginx Web服务软件进行介绍,作为HTTP服务软件的后起之秀,Nginx与它的老大哥Apache相比有很多改进之处,比如,在性能上,Nginx占用的系统资 ...

  6. web渗透学习目录

    一,基础学习 01.基础学习 [[编码总结]] [[JSON三种数据解析方法]] [[js加密,解密]] [[Internet保留地址和非保留地址.内网和公网.VNC和UltraVN]] 代理 [[S ...

  7. 解读论文《Agglomerative clustering of a search engine query log》,以解决搜索推荐相关问题

    <Agglomerative clustering of a search engine query log> 论文作者:Doug Beeferman 本文将解读此篇论文,此论文利用搜索日 ...

  8. 虚拟环境与django版本与视图层相关知识

    目录 虚拟环境 django版本区别 视图函数返回值 JsonResponse对象 form表单上传文件 request方法 FBV与CBV CBV源码剖析 模板语法传值 传值方式 传值范围 虚拟环境 ...

  9. OpenWrt 20.02.2 小米路由器3G配置CP1025网络打印

    家里的施乐 CP116w 工作快五年了终于罢工了. 黑粉报错, 自己也不会拆, 只能搁置了. 后来换了个 HP CP1025. 这个打印机也不错, 墨盒便宜没什么废粉, 就是启动慢一点, 而且 -- ...

  10. C# 四舍五入中一处易错点

    ,你没看错,四舍五入的结果 和我们期待的不太一样 Why?? 进入源码看下,注释中解释的很清楚.. 默认情况下,Math.Round()方法返回的是最接近的整数,这个没问题,问题是当要转换的数据在 两 ...