这个工具之所以诞生主要是为了解决 iot嵌入式分析工具的安装问题.几个著名的 iot分析工具安装极其复杂,此外对环境,系统,依赖都有严格的版本需求,不能高也不能低.这导致大部分人遵照官方手册提供的安装流程只能安装出一个残废的版本,这对研究分析有着很大的干扰.

0x1 Q&A

  • binwalk很多依赖是基于ubuntu16,在新版本的linux上安装有很多依赖已经无法正常安装
  • 此外很多分析工具在最新的ubuntu/debian上无法完全安装
  • 此脚本基于ubuntu20.04 server lts 实现一个全功能的物联网分析工具的集合
  • 此脚本会安装 apt-fast来加速 apt包的下载
  • 此脚本会修改python的源为清华源
  • 此脚本会修改apt的源为清华源
  • 所有工具都是基于源码安装的最新版本
  • 随着源码的更新此脚本随时可能失效

0x2 镜像下载

镜像说明说明:

  • 本项目同时提供vhdx以及vmdk的虚拟机镜像
  • 如需要其他格式的虚拟机镜像可以使用本站提供的磁盘转换器进行转行
  • 考虑到便携性的需求,项目也提供docker版本
  • docker目前托管于dockerhub,会不定期更新
  • 虚拟机版托管于百度网盘

2.1 虚拟机 v1

  1. 安装 ble,以及bigzee等相关的物联网分析工具
  2. 安装qemu的 mips/arm 分支,包括静态版本
  3. 安装完全版本的 binwalk
  4. 安装完全版本的firmware-mod-kit
  5. 安装完全版本的firmadyne
  6. 最后适配日期为2021/03/02

2.2 虚拟机 v2

  • 支持v1所有特性
  • 包含:mips/mipsel/mips64/mipsel64/arm/arm64的gcc/g++编译器
  • 账号密码为:iot/iot,root/iot
  • 系统为ubuntu 20.04lts
  • firmadyne的账号为:firmadyne/firmadyne
  • 更新于:2022/04/13
  • binwalk/firmware-mod-kit/firmadyne全部同步更新到2022/04/13
  • 同步提供 vhdx以及vmdk镜像

2.2 虚拟机 v3

  • 更新于:2024/01/01
  • 所有源码更新到最新
  • 删除firmadyne,更换为FirmAE
  • 账号密码为:root/123456
  • 系统为ubuntu 22.04lts

2.x docker

  • 本项目提供docker镜像
  • 镜像地址为:asdqwe876/iot_analyze
  • 后期docker*不在提供更新

0x3 使用案例

  1. 这里会列举几个常用的iot分析工具的使用方法
  2. 如有需要会增加热门工具的使用案例
  3. 使用案例以docker为主
  4. 自我探索
  • 自我探索的很简单,直接起一个bash就行

    docker run -it --rm \
    -v $(pwd):$(pwd) \
    asdqwe876/iot_analyze \
    bash

0x3.1 binwalk

  • 项目内置的binwalk是完全版本的,一般用于来解包固件
  • tik:推荐使用--rm以及-v pwd来映射目录
  1. 首先准备一个需要分析的固件,这里直接从netger上下载一个

    mkdir -p testbinwalk
    cd testbinwalk
    wget -N --continue \
    http://www.downloads.netgear.com/files/GDC/WNAP320/WNAP320%20Firmware%20Version%202.0.3.zip \
    -O netgear.zip
    unzip netgear.zip
    tar xf WNAP320_V2.0.3_firmware.tar
  2. 然后直接使用iot_analyze自动解压

    docker run -it --rm \
    -v $(pwd):$(pwd) \
    asdqwe876/iot_analyze \
    binwalk --run-as=root -C $(pwd) -Mer $(pwd)/rootfs.squashfs
  3. 可以看到固件已经被解压到宿主机目录了

    ~/testbinwalk# docker run -it --rm \
    > -v $(pwd):$(pwd) \
    > asdqwe876/iot_analyze \
    > binwalk --run-as=root -C $(pwd) -Mer $(pwd)/rootfs.squashfs
    
    Scan Time:     2022-04-14 02:16:05
    Target File:   /root/testbinwalk/rootfs.squashfs
    MD5 Checksum:  7ce95b252346d2486d55866a1a9782be
    Signatures:    411
    
    DECIMAL       HEXADECIMAL     DESCRIPTION
    --------------------------------------------------------------------------------
    
    WARNING: Symlink points outside of the extraction directory: /root/testbinwalk/_rootfs.squashfs.extracted/squashfs-root/dev/log -> /tmp/log-device; changing link target to /dev/null for security purposes.
    0             0x0             Squashfs filesystem, big endian, lzma signature, version 3.1, size: 4433988 bytes, 1247 inodes, blocksize: 65536 bytes, created: 2011-06-23 10:46:19
    
    ~/testbinwalk# ls _rootfs.squashfs.extracted/squashfs-root/
    bin  dev  etc  home  lib  linuxrc  proc  root  sbin  tmp  usr  var

0x3.2 firmadyne

  • firmadyne是一个iot固件模拟程序
  • 用于全自动模拟固件
  • 注意:firmadyne需要使用-e USER来指定运行身份
  1. 首先使用如下指令快速启动firmadyne控制台

    docker run -it --rm -e USER=root asdqwe876/iot_analyze
  2. 接下来准备一个固件,这里使用netger作为demo

    cd /root/firmadyne
    wget -N --continue \
    http://www.downloads.netgear.com/files/GDC/WNAP320/WNAP320%20Firmware%20Version%202.0.3.zip \
    -O firmware.bin
  3. 接下来按照firmadyne 官方的说明,启动这个固件

    project_id=1
    python3 ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "firmware.bin" images
    # 这里需要输入firmadyne的密码
    ./scripts/getArch.sh ./images/$project_id.tar.gz
    ./scripts/tar2db.py -i $project_id -f ./images/$project_id.tar.gz
    # 这里需要输入firmadyne的密码
    ./scripts/makeImage.sh $project_id
    # 这里需要输入firmadyne的密码
    # 这一步需要等待60s
    ./scripts/inferNetwork.sh $project_id
    # 最后运行程序
    ./scratch/$project_id/run.sh
  4. 最后可以看到目标固件被成功模拟了

    root@f05fe6d3cad9:~/firmadyne# ./scratch/$project_id/run.sh
    Starting firmware emulation... use Ctrl-a + x to exit
    [    0.000000] Linux version 2.6.39.4+ (ddcc@ddcc-virtual) (gcc version 5.3.0 (GCC) ) #2 Tue Sep 1 18:08:53 EDT 2020
    [    0.000000] bootconsole [early0] enabled
    [    0.000000] CPU revision is: 00019300 (MIPS 24Kc)
    [    0.000000] FPU revision is: 00739300
    [    0.000000] Determined physical RAM map:
    [    0.000000]  memory: 00001000 @ 00000000 (reserved)
    [    0.000000]  memory: 000ef000 @ 00001000 (ROM data)
    [    0.000000]  memory: 00678000 @ 000f0000 (reserved)
    [    0.000000]  memory: 0f897000 @ 00768000 (usable)

脚本下载:

此处内容需要评论回复后(审核通过)方可阅读。

镜像下载:
此处内容需要评论回复后(审核通过)方可阅读。

Last modification:January 2, 2024
如果觉得我的文章对你有用,请随意赞赏