这篇笔记是第一次固件分析的记录。
1. 环境
QEMU环境请参考另一篇博客:https://blog.youkuaiyun.com/Ga4ra/article/details/123959989
下载DVRF:ttps://github.com/praetorian-inc/DVRF。可以从gitee上搜一下,有很多镜像。
2. 提取固件
目录:
starr@starr-VirtualBox:~/Documents/iot/DVRF-master$ tree
.
├── Firmware
│ ├── DVRF_v03.bin
│ └── FW_LICENSE_E1550_v1.0.03.002.html
├── gdb
│ ├── gdb binaries
│ │ └── mips-i
│ │ ├── Big Endian
│ │ │ ├── gdb
│ │ │ └── gdbserver
│ │ └── Little Endian
│ │ ├── gdb
│ │ └── gdbserver
│ └── gdb_static_mipsle-be.tar
├── Pwnable Source
│ ├── Intro
│ │ ├── heap_overflow_01.c
│ │ ├── stack_bof_01.c
│ │ └── uaf_01.c
│ └── ShellCode_Required
│ ├── socket_bof.c
│ ├── socket_cmd.c
│ └── stack_bof_02.c
├── README.md
└── Source Code
├── clean.sh
├── DVRF_v03_source.tar.001
├── DVRF_v03_source.tar.002
├── DVRF_v03_source.tar.003
├── DVRF_v03_source.tar.004
├── DVRF_v03_source.tar.005
├── DVRF_v03_source.tar.006
├── DVRF_v03_source.tar.007
├── DVRF_v03_source.tar.008
├── DVRF_v03_source.tar.009
├── DVRF_v03_source.tar.010
├── DVRF_v03_source.tar.011
├── DVRF_v03_source.tar.012
└── merge_and_extract.sh
10 directories, 28 files
扫描一下固件:
$ binwalk DVRF_v03.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 BIN-Header, board ID: 1550, hardware version: 4702, firmware version: 1.0.0, build date: 2012-02-08
32 0x20 TRX firmware header, little endian, image size: 7753728 bytes, CRC32: 0x436822F6, flags: 0x0, version: 1, header size: 28 bytes, loader offset: 0x1C, linux kernel offset: 0x192708, rootfs offset: 0x0
60 0x3C gzip compressed data, maximum compression, has original file name: "piggy", from Unix, last modified: 2016-03-09 08:08:31
1648424 0x192728 Squashfs filesystem, little endian, non-standard signature, version 3.0, size: 6099215 bytes, 447 inodes, blocksize: 65536 bytes, created: 2016-03-10 04:34:22
文件系统是squashfs,开始提取:
$ binwalk -Me DVRF_v03.bin
...
$ ll -h
total 9.6M
drwxrwxr-x 3 starr starr 4.0K 4月 5 14:41 ./
drwxrwxr-x 3 starr starr 4.0K 4月 5 14:41 ../
-rw-rw-r-- 1 starr starr 5.9M 4月 5 14:41 192728.squashfs
-rw-rw-r-- 1 starr starr 3.7M 4月 5 14:41 piggy
drwxr-xr-x 14 starr starr 4.0K 3月 10 2016 squashfs-root/
$ ll -h squashfs-root/
total 56K
drwxr-xr-x 14 starr starr 4.0K 3月 10 2016 ./
drwxrwxr-x 3 starr starr 4.0K 4月 5 14:41 ../
drwxr-xr-x 2 starr starr 4.0K 3月 10 2016 bin/
drwxr-xr-x 2 starr starr 4.0K 3月 10 2016 dev/
drwxr-xr-x 3 starr starr 4.0K 4月 5 14:41 etc/
drwxr-xr-x 3 starr starr 4.0K 3月 10 2016 lib/
lrwxrwxrwx 1 starr starr
固件分析与栈溢出利用初探

本文详细记录了一次固件分析的过程,包括环境配置、固件提取、文件系统识别、程序黑盒测试、栈溢出漏洞分析及利用。作者通过binwalk工具提取了Squashfs文件系统,并利用qemu-mipsel-static在Chroot环境中运行程序进行测试。在分析过程中,发现了程序存在栈溢出,通过反汇编和调试确定了payload的构造方法。然而,在尝试利用时遇到了困难,未能成功获取shell。文章最后提到了寻找gadget和确定libc.so基址的问题。
最低0.47元/天 解锁文章
831

被折叠的 条评论
为什么被折叠?



