物联网漏洞挖掘技术
工业互联网,物联网,车连网安全
最后更新于
工业互联网,物联网,车连网安全
最后更新于
关于对智能设备如何进行安全分析,请参考:
绿盟 - 智能设备安全分析手册:https://book.yunzhan365.com/tkgd/lzkp/mobile/index.html
这个是新版的attifyOS 集成了固件分析的工具:
总结的IOT资料 https://zybuluo.com/H4l0/note/1524758 密码是1286
https://github.com/qilingframework/qiling
https://ray-cp.github.io/archivers/MIPS_Debug_Environment_and_Stack_Overflow#mips-%E6%B1%87%E7%BC%96%E5%9F%BA%E7%A1%80 不看里面的buidroot和网络配置
https://wzt.ac.cn/2019/09/10/QEMU-networking 网络照这个配置
qemu-kvm
安装必备:qemu,binwalk,pwndbg,gdb-multiarch
可选:IDA,Ghidra,fat,交叉编译环境buildboot
使用命令:
qemu为模拟器,主要用于模拟mips程序的运行。主要有两种模式:
User Mode,亦称为用户模式。qemu能启动那些为不同处理器编译的Linux程序。
System Mode,亦称为系统模式。qemu能够模拟整个计算机系统。
qemu使用者模式mips程序共有两种模拟程序,分别是运行大端机格式的qume-mips和小端机格式的qume-mipsel,他们的执行参数都是一样的。我主要用的是用户模式。
安装命令:
运行:
对于没有添加静态编译选项-static
的elf文件,在运行的时候会报错,报错为:/lib/ld-uClibc.so.0: No such file or directory
,原因是没有库的链接,这时我们只需要找到该库,使用qemu-mipsel -L /Your_Path/buildroot/output/target/ hello
即可运行。
对于动态调试,书上推荐的是IDA远程调试,网上教程也很多,方法也比较简单,不再描述。习惯了gdb调试的我,用不习惯ida,于是在网上找到了gdb远程调试的教程。
首先是安装pwndbg,peda对于mips的动态调试没有太好的支持。pwndbg的安装命令:
接着是安装gdb-multiarch
,安装命令:
安装完毕后,整个远程动态调试的过程为:
使用命令qemu-mipsel -g 1234 -L /Your_Path/buildroot/output/target/ hello
将程序运行起来,-g 1234
的意思表示为监听端口1234,用于远程调试。
使用gdb-multiarch ./hello
来开启gdb。
进入gdb后,使用命令target remote 127.0.0.1:1234
,即开始调试程序。
用gdb-multiarch调试,相较于ida远程调试来说,对于用习惯了gdb调试的人来说应该会方便不少,而且还有pwndbg的支持。
https://wzt.ac.cn/2019/09/10/QEMU-networking/
编译好的各架构的gdbserver:
chroot . ./mydemo /usr/bin/tddp
./gdbserver *:12345 --attach $(pgrep smb)
gdb-peda:c b n ni s target remote ip:port
binwalk -Me *.bin
file smb
which/locate/find/whereis
dd if=tpra_sr20v1_us-up-ver1-2-1-P522_20180518-rel77140_2018-05-21_08.42.04.bin of=lzma_data bs=1 skip=64
$ sudo tunctl -t tap0 -u whoami
# 为了与 QEMU 虚拟机通信,添加一个虚拟网卡 $ sudo ifconfig tap0 10.10.10.1/24 # 为添加的虚拟网卡配置 IP 地址 $ qemu-system-arm -M vexpress-a9 -kernel vmlinuz-3.2.0-4-vexpress -initrd initrd.img-3.2.0-4-vexpress -drive if=sd,file=debian_wheezy_armhf_standard.qcow2 -append "root=/dev/mmcblk0p2 console=ttyAMA0" -net nic -net tap,ifname=tap0,script=no,downscript=no -nographic