🖨️
IOT 固件安全 All in One
  • 前言
  • WIKI
    • 固件分类
    • 固件获取
    • 固件解密
    • 固件解剖
    • 固件调试
    • 仿真分析
    • 固件FUZZ
    • 静态分析
    • 同源分析
    • 漏洞挖掘—Web接口
    • 漏洞挖掘—无线协议
    • 漏洞挖掘—APP应用
  • appendix
    • 附录1:信息收集
    • 附录2:工具列表
    • 附录3-1: 指令集分析-MIPS
    • 附录3-2: 指令集分析-PowerPC
    • 附录3-3: 指令集分析-ARM
    • 附录4: 基线
    • 附录5:Azure IOT SDLC Best Practice
    • 附录6: 论文
    • 附录7: 参考资料
Powered by GitBook
On this page
  • 一、手动分析
  • 二、自动分析
  • 六、(商业)平台
  1. appendix

附录2:工具列表

Previous附录1:信息收集Next附录3-1: 指令集分析-MIPS

Last updated 2 years ago

一、手动分析

1.1 通用工具

1.2 插件

二、自动分析

2.1 firmwalker

firmwalker 分析内容范围如下:

  • etc/shadow and etc/passwd

  • etc/ssl

  • 与 ssl 相关的文件,如:.pem .crt 等

  • 搜索配置文件

  • 寻找脚本文件

  • 搜索其他 .bin 文件

  • 查找 admin、password、remote、AWS key 等关键字

  • 搜索物联网设备上使用的通用Web服务器

  • 搜索常见的二进制文件,如:ssh、tftp、dropbear 等

  • 搜索禁止的C函数

  • 搜索常见的易受命令注入攻击的功能

  • 搜索URL、电子邮件、IP地址……

案例:在 OWASP IOTGoat 中使用 firewalker分析

firmwalk 分析文件系统需使用绝对路径:

./firmwalker.sh /home/embedos/firmware/_IoTGoat-rpi-2.img.extracted/squashfs-root/

分析结果如下:

分析结果存储在 /data/ 目录下的两个文件:firmwalker.txt 和 firmwalkerappsec.txt,需手动检查这些文件。

2.2 FACT

FACT 固件分析比较工具包分析内容如下:

  • 标识软件组件(如:操作系统、CPU体系结构和第三方组件)及其关联的版本信息

  • 从映像中提取固件文件系统

  • 检测证书和私钥

  • 检测CWE

  • 基于提要和签名的漏洞检测

  • 基于静态行为分析

  • 固件版本和文件的比较(差异)

  • 使用QEMU对文件系统中的二进制文件进行用户仿真

  • 缓冲区溢出防护机制 NX, DEP, ASLR, stack canaries, RELRO, and FORTIFY_SOURCE

  • REST API...

案例:在EmbedOS 中使用FACT分析

cd ~/tools/FACT_core 
sudo ./start_all_installed_fact_components

将固件上传到FACT进行分析(可以将带有文件系统的完整固件)

根据给FACT硬件资源,扫描时间会相应不同

FACT分析结果

三、动态测试

设备在正常运行或者在仿真环境中运行中的动态测试,此阶段的测试可能会由于项目和访问级别有所差异,可用分析手段:

  • 篡改引导程序配置

  • Web 和 API 测试

  • 模糊测试(网络和应用程序服务)

使用各种工具集进行的主动扫描以获取提升的访问权限或代码执行:

  • Burp Suite

  • OWASP ZAP

  • Commix

  • Fuzzers such as - American fuzzy loop (AFL)

  • Nmap

  • NCrack

  • Metasploit

四、调试

设备在正常运行或在仿真环境中运行时,对正在运行的进程或二进制文件进行调试。如下是分析步骤:

  • 1、sudo chroot . ./qemu-arch -L <optionalLibPath> -g <gdb_port> <binary>

  • 2、使用gdb-multiarch或IDA进行调试

  • 3、为步骤4中的功能点设置断点,如: memcpy, strncpy, strcmp,等

  • 4、确认漏洞点,比如:通过发送较大的有效载荷来识别溢出或进程崩溃点

一些可能使用的工具:

  • gdb-multiarch

  • Frida

  • ptrace

  • strace

六、(商业)平台

  • 见附录7

Aaron Guzman 在原生代码基础上添加了一些其他的检查,可参照

浏览器访问: ,

笔者撰写了,可作为参考。

Network and protocol fuzzers such as - , , and

IDA Pro
Ghidra
Hopper
Capstone
Binary Ninja
https://github.com/KeenSecurityLab/BinAbsInspector
https://github.com/NSSL-SJTU/SaTC
https://github.com/buptsseGJ/BinSeeker
https://github.com/xrkk/awesome-ida
https://github.com/maddiestone/IDAPythonEmbeddedToolkit
https://github.com/0xdea/ghidra-scripts/**Rhabdomancer**
https://github.com/tacnetsol/ghidra_scripts
https://github.com/scriptingxss/firmwalker。
http://127.0.0.1:5000
FACT插件开发指南
Mutiny
boofuzz
kitty
Peda
Page cover image