针对VxWorks设备的分析工具VxHunter介绍

1. 什么是VxHunter

VxHunter是这次我们在BlackHat AISI 2019中进行演讲议题中所使用到的工具。主要用于针对基于VxWorks操作系统的嵌入式设备进行固件分析及构造基于串口命令行的调试工具,项目的地址是https://github.com/dark-lbp/vxhunter。

 

2. VxHunter主要功能介绍

2.2 固件分析工具(firmware_tools)

VxHunter的固件分析工具是IDA Pro及Ghidra这两个逆向工具的插件脚本,主要的功能是自动分析加载的VxWorks固件(VxWorks image)的内存加载地址并进行Rebase,识别内嵌符号表后修复函数名。下面是VxHunter在Ghidra这个近期非常热门的开源逆向工具中的使用方法。

首先我们需要使用正确的处理器类型加载VxWorks镜像到Ghidra中。

成功加载后会提示是否需要进行分析,此时选择No,因为目前我们并不知道这个VxWorks固件的正确加载地址。

随后就可以利用Ghidra中的脚本管理器(Script Manager)执行我们的VxHunter脚本,执行过程如下所示。VxHunter会自动去分析这个文件Rebase到正确的加载地址并根据符号表开始修复函数名。

Run_VxHunter

脚本执行完成后的效果如下图所示,此时我们就可以开始进行静态分析了,比如找找硬编码账号啥的^_^。

2.2 串口命令行调试工具(serial_debuger)

VxWorks不同于Linux,无法通过上传静态编译的GDB等工具进行调试,通常来说要调试VxWorks系统必须要在编译VxWorks固件时编入例如WDB之类的调试功能。然后大部分情况下市面上的VxWorks设备都没有编入调试功能,这也导致了我们无法去分析设备漏洞的真正原因及危害。

VxHunter就是设计来解决这个问题的,这个工具基于Python编写,主要通过设备的串口命令行的内存读写指令,将基于汇编代码的调试shellcode写入到设备内存中后通过封装好的Python调试函数进行下断点,查看VxWorks task信息等一系列的操作。具体的可以参考我们在BlackHat的议题PPT,在PPT中有对串口调试工具的原理以及CVE-2018-19528漏洞的分析。

这个YouTube视频地址是利用VxHunter调试CVE-2018-19528漏洞的Demo演示。

3. 总结

基于VxWorks的嵌入式系统在工业控制及IoT领域都有着广泛的应用, 在航空航天、工业控制、网络通讯及医疗领域VxWorks系统都有广泛的应用,然而针对VxWorks相关的安全研究文章及工具都非常缺乏,这次开源VxHunter也希望能借此机会抛砖引玉吸引更多安全研究人员来关注VxWorks系统的安全性。

4. 相关链接

  • Ghidra项目地址 - https://github.com/NationalSecurityAgency/ghidra
  • 相关议题 - https://www.blackhat.com/asia-19/briefings/schedule/#dive-into-vxworks-based-iot-device-debug-the-undebugable-device-13834
  •  VxHunter项目地址 - https://github.com/dark-lbp/vxhunter
  • 调试Demo - https://www.youtube.com/watch?v=ulO8MsoDLLk
本文由 Galaxy Lab 作者:朱文哲 发表,其版权均为 Galaxy Lab 所有,文章内容系作者个人观点,不代表 Galaxy Lab 对观点赞同或支持。如需转载,请注明文章来源。
2

发表评论

*