Qemu复现雄迈摄像头固件漏洞

匿名者  1508天前

QEMU 是一个面向完整 PC 系统的开源仿真器。除了仿真处理器外,QEMU 还允许仿真所有必要的子系统,如连网硬件和视频硬件。它还允许实现高级概念上的仿真(如对称多处理系统(多达 255 个 CPU)和其他处理器架构(如 ARM 和 PowerPC)。

2020年2月4日,有外国研究人员发表了一篇文章:基于Xiongmai的DVR,NVR和IP摄像机的固件后门漏洞。最新的固件版本虽然默认禁用了Telnet访问和调试端口(9527/tcp),但打开了9530/tcp端口,攻击者可以利用这个端口发送一个特殊的命令来启动Telnet守护进程,并使用固定密码访问shell。从目前情况来看,已有几十个品牌和数百个型号易受到黑客攻击,其中一位国外研究人员列出了一些易受攻击的产品

222.png

本文将通过QEMU模拟雄迈摄像头(基于固件),实现对该漏洞的复现。

Qemu实现过程(Qemu安装和虚拟机启动及配置见附录)

固件:AHB7804R-LMS2015.bin(文件如下

通过binwalk提取出文件系统,如下:

xiongmai1.png

将_user-x.cramfs.img.extracted中的squashfs-root文件夹,复制到_romfs-x.cramfs.img.extracted的/usr中。

xiongmai2.png

同理,将_custom-x.cramfs.img.extracted中的squashfs-root文件夹,复制到_romfs-x.cramfs.img.extracted/squashfs-root/mnt/custom中。

Qemu虚拟机开启固件服务

虚拟机与主机的网络相通,把提取出的文件系统传入Qemu虚拟机。

挂载文件系统中的dev和proc文件夹到虚拟机。

mount -o bind /dev ./squashfs-root/dev
mount -t proc /proc ./squashfs-root/proc

模拟进入固件的shell。

chroot ./squashfs-root/ sh

固件服务开启。

cd /etc/init.d
./rcS

PS:启动文件中会修改ip,这里需要恢复ip
ifconfig eth0 192.168.3.2/24

再次进入固件shell,开启服务
dvrHelper /lib/modules /var/Sofia 192.168.3.2 9578 1

攻击效果

POC执行前

xiongmai3.png

POC执行后(https://github.com/Snawoot/hisilicon-dvr-telnet

xiongmai4.png

xiongmai5.png

附录:

虚拟机启动及网络配置

  • 开启虚拟机

qemu-system-arm -M versatilepb -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.img-3.2.0-4-versatile -hda debian_wheezy_armel_standard.qcow2 -append "root=/dev/sda1" -net nic -net tap,ifname=tap1,script=no,downscript=no -nographic

  • 主机与虚拟机的网络配置
主机
tunctl -t tap0 -u `whoami`    #这边新建一张网卡和虚拟机进行通信
ifconfig tap0 192.168.3.1/24

虚拟机
ifconfig eth0 192.168.3.2/24

Qemu仿真必需信息:

  • 模式
    • user mode:开启单一二进制文件
    • system mode:搭建虚拟机进行系统仿真
  • 架构:
    • arm
    • mips:大端mips、小端mipsel
  • user mode(可执行二进制文件仿真,即:执行其中的某一程序):
    • 不依赖动态链接库(安装:apt-get install qemu-user-static)
      • qemu-arm-static
      • qemu-mips-static
      • qemu-mipsel-static
    • 依赖动态链接库
      • qemu-arm
      • qemu-mips
      • qemu-mipsel
  • system mode:(用户配置的Qemu:指定运行的内核或者虚拟硬盘等文件)

    • qemu-system-arm
    • qemu-system-mips
    • qemu-system-mipsel

    PS:架构选择(查看文件信息)

    file 文件
    

Qemu使用

  • user mode(可执行二进制文件仿真):开启固件中的单一服务
1. 查找开源组件的架构、32-bit或64-bit、大小端等信息
2. 根据(1)的信息选择对应的qemu类型
3. 将选择的qemu拷贝到要仿真固件的squashfs-root目录下,在squashfs-root目录下执行命令cp `which qemu-mipsel-static` ./
4. 使用chroot进行仿真命令执行,如sudo chroot ./qemu-mipsel-static bin/busybox
  • system mode搭建指定系统虚拟机

Qemu安装:

  • 在线安装

    Ubuntu:apt-get install qemu
    Centos:yum install qemu-kvm
    
  • 源码安装

    官网源码下载:https://www.qemu.org/download/  
    wget https://download.qemu.org/qemu-版本?.tar.xz
    tar xvJf qemu-版本?.tar.xz
    cd qemu-版本?
    (mkdir build、cd build)
    ./configure(./configure --target-list=arm-softmmu --audio-drv-list=)
    make
    
  • PS

    编译中使用的参数
    --enable-kvm:编译 KVM 模块,使 Qemu 可以利用 KVM 来访问硬件提供的虚拟化服务
    --enable-vnc:启用 VNC
    --enalbe-werror:编译时,将所有的警告当作错误处理
    --target-list:选择目标机器的架构。默认是将所有的架构都编译,但为了更快的完成编译,指定需要的架构即可
    安装
    make -j 12    CPU会影响编译速度,一般设置为CPU核数的双倍
    make install | tee make-install.log
    
  • 源码安装报错解决:

    ./configure中的报错:
      zlib libs    安装:apt-get install zlib1g zlib1g-dev
      glib         安装:apt install libglib2.0-dev
      pixman       安装:apt-get install libpixman-1-dev
    再次 ./configure
    
  • 安装完后检查:

    VNC support     yes:
    KVM support     yes
    (不用重启电脑)qemu-,tab两次:
        ubuntu使用在线安装,有
    

最新评论

jackliu  :  您好,这边是雄迈安全应急中心,已关注到您发布的相关信息,1.您反馈的产品属于已停产设备,2.这个是只在局域网下调试使用才会出现,3.我们3月份在英文网站已做相应对**布说明,新程序已做相关处理,希望做下相应**除处理或在您发布的原文上做下相应补充说明同时也感谢您对雄迈产品的支持,您有什么疑问,可以联系雄迈安全应急响应中心XMSRC@xion**aitech.com或电话:18658187198
1432天前 回复
昵称
邮箱
提交评论