Skip to content

Latest commit

 

History

History
121 lines (76 loc) · 3.22 KB

固件安全.md

File metadata and controls

121 lines (76 loc) · 3.22 KB

固件安全


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


相关教程

相关工具


固件提取

手动提取

使用 hexdump 搜索 hsqs 的地址

hexdump -C RT-N300_3.0.0.4_378_9317-g2f672ff.trx | grep -i 'hsqs'

使用 dd 命令截取地址 925888(0xe20c0)之后的数据,保存到 rt-n300-fs。

dd if=RT-N300_3.0.0.4_378_9317-g2f672ff.trx bs=1 skip=925888 of=rt-n300-fs

最后,使用 unsquashfs rt-n300-fs 命令解析 rt-n300-fs 文件,得到的 squashfs-root 就是固件系统

unsquashfs rt-n300-fs

binwalk 提取

项目地址 : binwalk

  • 基础使用

    binwalk kali 自带,很拉跨,需要重装

    wget https://github.com/ReFirmLabs/binwalk/archive/master.zip
    unzip master.zip
    (cd binwalk-master && python setup.py uninstall && python setup.py install)
    binwalk -Me xxx.bin         # 递归提取
    binwalk -e -t -vv xxx.bin   # 查看详细的提取过程

    binwalk 通过自带的强大的 magic 特征集,扫描固件中文件系统初始地址的特征码,若匹配成功,则将该段数据 dump 下来 , https://github.com/ReFirmLabs/binwalk/blob/master/src/binwalk/magic/filesystems , Squashfs 文件系统,对应的扫描特征码为 hsqs

    binwalk 提取出来的文件夹为 _xxx.extracted/

  • 相关文章

    • binwalk提取固件失败 - 在 binwalk 遇到大端序可以先用 DD 截取出来之后使用 objcopy 转换为小端序再用 binwalk 提取。
  • 常见报错

    • binwalk WARNING: Extractor.execute failed to run external extractor 'sasquatch -p 1 -le -d '%%squash
      • 需要安装 sasquatch
        apt-get install -y build-essential liblzma-dev liblzo2-dev zlib1g-dev
        git clone https://github.com/devttys0/sasquatch
        cd sasquatch
        ./build.sh
        

文件系统

Squashfs 文件系统提取

mksquash xxxx xxxx.squash   # 制作 squashfs 镜像
unsquashfs xxx.squashfs     # 解压

yaffs 文件系统提取


静态固件分析

相关文章

分析实战


动态固件分析


固件解密


修复运行环境