🖌️
Functfan的格物致知
  • 写在前面
  • java技术
    • J2EE 全面简介
  • java安全
    • 反序列化漏洞
      • 序列化/反~
      • Ysoserial
        • Java反序列化之Vaadin1
        • Java反序列化之Groovy1
        • Java反序列化之Jdk7u21
        • Java反序列化之Commons beanUtils
        • Java反序列化之Commons-Collections
          • CommonsCollections1
          • CommonsCollections2
          • CommonsCollections1
          • CommonsCollections2
          • CommonsCollections3
          • CommonsCollections4
          • CommonsCollections5
          • CommonsCollections6
          • CommonsCollections7
      • Marshalsec
    • XXE漏洞
      • XXE爱之初印象
      • XXE漏洞写法及防御
      • XXExploiter工具
  • web安全
    • 一句话木马
  • 渗透测试
    • 网络资产收集
    • 端口服务探测
    • 边界突破
    • 内网穿透
    • 容器与K8S安全测试
  • 漏洞挖掘
    • web类框架研究报告
      • Xstream经验
      • weblogic漏洞研究经验笔记
      • WebLogic安全研究报告
    • 漏洞挖掘入门
      • 小白入门
      • 源代码审计方法
        • Java类编译与反编译基础
        • IDEA使用技巧
        • IDEA Java程序调试
      • Fuzzing技术
        • 方法论
          • fuzzing的四个技能
        • 工具集
          • tmnt-Web应用漏洞fuzzer
          • wfuzz-web app fuzzer
          • AFL-基于变异的fuzz工具
      • 物联网漏洞挖掘技术
        • 物联网设备固件模拟分析环境*(亲测下载好慢,不建议使用该教程)
        • 智能设备漏洞挖掘之固件提取
        • pwndbg调试工具使用教程
    • 漏洞情报监测
    • 漏洞安全检测工具
      • 容器安全检测脚本总结
      • WebLogic漏洞检测小工具
    • 漏洞复现
      • 操作系统
        • windows
        • Linux
          • 脏牛漏洞-Docker逃逸POC(dirtycow-vdso)代码分析
          • Dirty CoW脏牛内核提权漏洞(CVE-2016-5195)
      • 数据库
      • WEB服务组件
        • CVE-2020-2883
        • F5 BIG-IP远程代码执行漏洞(CVE-2020-5902)
        • Apache Solr 远程命令执行漏洞(CVE-2019-0193)
      • 云计算安全
        • CVE-2020-15257-容器逃逸-containerd
      • 物联网安全
        • TP-Link SR20 本地网络远程代码执行漏洞
  • CTF比赛
    • BUUCTF-练习场web
    • xctf-攻防世界新手练习区web
    • Exploit利器——Pwntools
  • 新技术研究
    • 区块链
    • 云原生安全
      • 虚拟化hypervisor简介
      • Docker容器基础
        • 云原生攻防研究:容器基础
          • Linux内核基础
          • Docker容器基础
          • 理解容器进程
          • 组件组成:剖析 Docker 组件作用及其底层工作原理
          • Docker镜像的内部结构(四)
          • docker之namespace,cgroup与unionFS
          • Linux内核安全模块之AppArmor
          • Linux沙箱之seccomp
          • Linux权限管理之Capabilities
        • 云原生攻防研究:Docker安全性与攻击面分析
        • 云原生攻防研究:容器逃逸技术概览
        • 云原生攻防研究:针对容器的渗透测试方法
        • 云原生攻防研究:漏洞缓解技术
      • Kubernetes容器编排基础
        • k8s基本概念
        • 云原生攻防研究:Kubernetes安全分析
        • 云原生攻防研究:Kubernetes攻击矩阵
    • 联邦安全
    • 云边协同
    • 安全多方计算
由 GitBook 提供支持
在本页
  • 入门资料必备
  • 分析环境部署参考
  • 某实验室开源分析环境:
  • mips环境部署
  • 具体安装步骤
  • binwalk
  • qemu安装
  • qemu-kvm安装
  • 网络配置
  • GDBserver
  • 常用命令
  • 单文件模拟及远程调试
  • 提取lzmadata数据
  • qemu模拟
  1. 漏洞挖掘
  2. 漏洞挖掘入门

物联网漏洞挖掘技术

工业互联网,物联网,车连网安全

上一页AFL-基于变异的fuzz工具下一页物联网设备固件模拟分析环境*(亲测下载好慢,不建议使用该教程)

最后更新于4年前

入门资料必备

关于对智能设备如何进行安全分析,请参考:

绿盟 - 智能设备安全分析手册:

这个是新版的attifyOS 集成了固件分析的工具:

分析环境部署参考

某实验室开源分析环境:

mips环境部署

qemu-kvm

具体安装步骤

安装必备:qemu,binwalk,pwndbg,gdb-multiarch

可选:IDA,Ghidra,fat,交叉编译环境buildboot

binwalk

sudo apt-get update  
sudo apt-get install build-essential autoconf git

# https://github.com/devttys0/binwalk/blob/master/INSTALL.md  
git clone https://github.com/devttys0/binwalk.git  
cd binwalk

# python2.7安装  
sudo python setup.py install

# python2.7手动安装依赖库  
sudo apt-get install python-lzma

sudo apt-get install python-crypto

sudo apt-get install libqt4-opengl python-opengl python-qt4 python-qt4-gl python-numpy python-scipy python-pip  
sudo pip install pyqtgraph

sudo apt-get install python-pip  
sudo pip install capstone

# Install standard extraction utilities(必选)  
sudo apt-get install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools

# Install sasquatch to extract non-standard SquashFS images(必选)  
sudo apt-get install zlib1g-dev liblzma-dev liblzo2-dev  
git clone https://github.com/devttys0/sasquatch  
(cd sasquatch && ./build.sh)

使用命令:

binwalk -Me firmware.bin

qemu安装

qemu为模拟器,主要用于模拟mips程序的运行。主要有两种模式:

  1. User Mode,亦称为用户模式。qemu能启动那些为不同处理器编译的Linux程序。

  2. System Mode,亦称为系统模式。qemu能够模拟整个计算机系统。

qemu使用者模式mips程序共有两种模拟程序,分别是运行大端机格式的qume-mips和小端机格式的qume-mipsel,他们的执行参数都是一样的。我主要用的是用户模式。

安装命令:

sudo apt-get install qemu
apt-get install qemu binfmt-support qemu-user-static

运行:

qemu-mipsel  ./hello

对于没有添加静态编译选项-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的安装命令:

git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

接着是安装gdb-multiarch,安装命令:

sudo apt-get install gdb-multiarch

安装完毕后,整个远程动态调试的过程为:

  1. 使用命令qemu-mipsel -g 1234 -L /Your_Path/buildroot/output/target/ hello将程序运行起来,-g 1234的意思表示为监听端口1234,用于远程调试。

  2. 使用gdb-multiarch ./hello来开启gdb。

  3. 进入gdb后,使用命令target remote 127.0.0.1:1234,即开始调试程序。

用gdb-multiarch调试,相较于ida远程调试来说,对于用习惯了gdb调试的人来说应该会方便不少,而且还有pwndbg的支持。

qemu-kvm安装

sudo apt-get install qemu-kvm

网络配置

apt-get install bridge-utils        # 虚拟网桥工具
apt-get install uml-utilities       # UML(User-mode linux)工具
ifconfig <你的网卡名称(能上网的那张)> down    # 首先关闭宿主机网卡接口
brctl addbr br0                     # 添加一座名为 br0 的网桥
brctl addif br0 <你的网卡名称>        # 在 br0 中添加一个接口
brctl stp br0 off                   # 如果只有一个网桥,则关闭生成树协议
brctl setfd br0 1                   # 设置 br0 的转发延迟
brctl sethello br0 1                # 设置 br0 的 hello 时间
ifconfig br0 0.0.0.0 promisc up     # 启用 br0 接口
ifconfig <你的网卡名称> 0.0.0.0 promisc up    # 启用网卡接口
dhclient br0                        # 从 dhcp 服务器获得 br0 的 IP 地址
brctl show br0                      # 查看虚拟网桥列表
brctl showstp br0                   # 查看 br0 的各接口信息

GDBserver

编译好的各架构的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

提取lzmadata数据

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

qemu模拟

$ 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

$ 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

总结的IOT资料 密码是1286

不看里面的buidroot和网络配置

网络照这个配置

https://zybuluo.com/H4l0/note/1524758
https://www.qiling.io/
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
https://wzt.ac.cn/2019/09/10/QEMU-networking
https://wzt.ac.cn/2019/09/10/QEMU-networking/
https://book.yunzhan365.com/tkgd/lzkp/mobile/index.html
GitHub - adi0x90/attifyos: Attify OS - Distro for pentesting IoT devicesGitHub
embedded-toolkit/prebuilt_static_bins/gdbserver at master · e3pem/embedded-toolkitGitHub
Logo
Logo
入门二进制漏洞分析脑图