IoT 安全从零到掌握:超详尽入门指南(基础篇)
字数 2132 2025-08-22 22:47:30

IoT 安全从零到掌握:超详尽入门指南(基础篇)

一、前言

本文是基于《揭秘家用路由器0day漏洞挖掘技术》的读书笔记,结合新的理解与体会整理而成。主要内容涵盖路由器安全研究的核心知识体系,包括前置知识、漏洞原理、实战技巧等。

二、家用路由器安全概述

0x00 路由器安全重要性

家用路由器作为网络公共出口,具有以下安全特性:

  • 掌控所有上网流量,是用户连接互联网的桥梁
  • 随着IoT设备兴起,功能点和交互点增多,攻击面扩大
  • 漏洞利用可造成严重危害:数据泄露、流量劫持、DNS劫持等

0x01 常见漏洞类型

  1. 密码破解

    • 默认密码/弱口令
    • 字典暴力破解
    • 侧信道攻击(利用响应时间、数据包特征等)
  2. Web漏洞

    • SQL注入
    • RCE(远程代码执行)
    • CSRF(跨站请求伪造)
    • XSS(跨站脚本攻击)
  3. 后门漏洞

    • 厂商预留后门
    • 调试接口认证薄弱
  4. 缓冲区溢出

    • 关注危险函数:strcpy, sprintf, gets, fgetc等
    • 可能导致程序崩溃或RCE
  5. 逻辑漏洞

    • 功能点组合利用
    • 复杂攻击链挖掘

三、前置知识

0x00 MIPS Linux架构

MIPS架构基础

  • 属于RISC(精简指令集)体系
  • 广泛应用于嵌入式系统
  • 常见版本:MIPS32

MIPS32寄存器

寄存器 名称 用途
$0 zero 存储常量0
\(2-\)3 v0-v1 函数返回值/表达式结果
\(4-\)7 a0-a3 函数前四个参数
\(8-\)15 t0-t7 临时寄存器
\(16-\)23 s0-s7 子函数调用时保存原寄存器值
\(24-\)25 t8-t9 补充临时寄存器
\(26-\)27 k0-k1 中断/异常处理
$28 gp 全局指针
$29 sp 堆栈指针
$31 ra 返回地址

特殊寄存器:

  • PC:程序计数器
  • HI:乘除结果高位
  • LO:乘除结果低位

MIPS指令特点

  • 寻址模式:寄存器寻址、立即数寻址、寄存器相对寻址、PC相对寻址
  • 重要指令:
    • l*/s*:LOAD/STORE指令
    • move:寄存器间值传递
    • 算术指令:add, sub, mult, div等
    • slt:比较指令
    • 分支跳转:b*, beq等
    • 跳转指令:j, jr, jal等

0x01 BusyBox

路由器常用精简shell环境,常用命令:

busybox --help  # 查看支持的命令
uname -r        # 查看内核版本
ls -al          # 查看目录详情
rm -rf /tmp     # 强制删除目录
cp -R /tmp ./now # 复制目录
du -sk firmware.bin # 查看文件大小
ps -ef          # 查看进程
kill -9 pid     # 终止进程
ifconfig -a     # 查看网卡信息

0x02 HTTP协议

HTTP请求结构

  1. 请求行Method Request-URI HTTP-Version CRLF

    • 方法:GET/POST最常用
    • Request-URI:资源路径
    • HTTP版本:1.1最广泛
  2. 消息报头

    • Accept:接受内容类型
    • Accept-Encoding:压缩编码方式
    • Cookie:会话信息
    • Authorization:认证信息
    • Host:目标主机和端口
    • User-Agent:客户端信息
  3. 请求正文

    • GET通常无正文
    • POST用于提交数据

示例POST请求:

POST /submit-form HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

name=John&age=30

0x03 文件系统

路由器核心目录:

  • /bin, /sbin:应用程序
  • /lib, /usr/lib:动态库
  • /etc:配置文件

0x04 分析环境搭建

必备工具

  • VMware
  • Python
  • IDA Pro
  • Binwalk
  • QEMU
  • MIPS交叉编译环境

QEMU安装与使用

sudo apt-get install qemu qemu-user qemu-user-static
sudo apt-get install qemu-system uml-utilities bridge-utils

运行不同架构程序:

# 静态链接
qemu-ppc-static ./pwn
qemu-mips-static ./pwn

# 动态链接(需安装对应库)
qemu-ppc -L /usr/powerpc-linux-gnu ./pwn

0x05 路由器漏洞分析技能

1. 修复运行环境

  • 定位异常函数
  • 编写伪造函数并封装为动态库
  • 使用LD_PRELOAD劫持目标函数

2. IDA Pro远程调试

  • 调试器服务器:运行被调试程序
  • 调试器客户端:运行IDA界面
  • 支持调试QEMU模拟的程序

四、路由器漏洞原理与利用

0x00 Web漏洞

1. XSS漏洞

  • 原理:在HTML中插入恶意脚本
  • 危害:窃取Cookie、用户信息
  • 示例:alert(document.cookie)

2. CSRF漏洞

  • 原理:伪造受信任用户请求
  • 危害:修改路由器参数,长期监控
  • 示例:构造DNS修改链接

3. 基础认证漏洞

  • 认证方式:http://user:pass@host
  • 结合XSS/CSRF可提升攻击效果

0x01 后门漏洞

  • 类型:开发预留、遗留漏洞、调试接口
  • 经典案例:32764端口后门

0x02 溢出漏洞

MIPS32函数调用特点

  1. 栈操作

    • 从高地址向低地址增长
    • 无ebp指针,通过调整sp分配栈帧
  2. 调用机制

    • 前4个参数通过\(a0-\)a3传递
    • 多余参数通过栈传递
    • 返回地址存入$RA寄存器
  3. 函数类型

    • 叶子函数:不调用其他函数,直接jr $ra返回
    • 非叶子函数:保存$ra到栈中,返回时从栈恢复

溢出利用

  • 非叶子函数:可覆盖栈上返回地址
  • 叶子函数:需覆盖父函数返回地址

五、总结

本指南系统介绍了路由器安全研究的核心知识体系,包括:

  1. MIPS架构和指令集特点
  2. 路由器环境和工具配置
  3. 常见漏洞原理与利用方法
  4. 实战分析技巧

后续可深入:

  • 固件提取与分析
  • 漏洞自动化挖掘(Fuzz、代码审计等)
  • 复杂攻击链构造
IoT 安全从零到掌握:超详尽入门指南(基础篇) 一、前言 本文是基于《揭秘家用路由器0day漏洞挖掘技术》的读书笔记,结合新的理解与体会整理而成。主要内容涵盖路由器安全研究的核心知识体系,包括前置知识、漏洞原理、实战技巧等。 二、家用路由器安全概述 0x00 路由器安全重要性 家用路由器作为网络公共出口,具有以下安全特性: 掌控所有上网流量,是用户连接互联网的桥梁 随着IoT设备兴起,功能点和交互点增多,攻击面扩大 漏洞利用可造成严重危害:数据泄露、流量劫持、DNS劫持等 0x01 常见漏洞类型 密码破解 默认密码/弱口令 字典暴力破解 侧信道攻击(利用响应时间、数据包特征等) Web漏洞 SQL注入 RCE(远程代码执行) CSRF(跨站请求伪造) XSS(跨站脚本攻击) 后门漏洞 厂商预留后门 调试接口认证薄弱 缓冲区溢出 关注危险函数:strcpy, sprintf, gets, fgetc等 可能导致程序崩溃或RCE 逻辑漏洞 功能点组合利用 复杂攻击链挖掘 三、前置知识 0x00 MIPS Linux架构 MIPS架构基础 属于RISC(精简指令集)体系 广泛应用于嵌入式系统 常见版本:MIPS32 MIPS32寄存器 | 寄存器 | 名称 | 用途 | |--------|------|------| | $0 | zero | 存储常量0 | | $2-$3 | v0-v1 | 函数返回值/表达式结果 | | $4-$7 | a0-a3 | 函数前四个参数 | | $8-$15 | t0-t7 | 临时寄存器 | | $16-$23 | s0-s7 | 子函数调用时保存原寄存器值 | | $24-$25 | t8-t9 | 补充临时寄存器 | | $26-$27 | k0-k1 | 中断/异常处理 | | $28 | gp | 全局指针 | | $29 | sp | 堆栈指针 | | $31 | ra | 返回地址 | 特殊寄存器: PC:程序计数器 HI:乘除结果高位 LO:乘除结果低位 MIPS指令特点 寻址模式:寄存器寻址、立即数寻址、寄存器相对寻址、PC相对寻址 重要指令: l* /s* :LOAD/STORE指令 move:寄存器间值传递 算术指令:add, sub, mult, div等 slt:比较指令 分支跳转:b* , beq等 跳转指令:j, jr, jal等 0x01 BusyBox 路由器常用精简shell环境,常用命令: 0x02 HTTP协议 HTTP请求结构 请求行 : Method Request-URI HTTP-Version CRLF 方法:GET/POST最常用 Request-URI:资源路径 HTTP版本:1.1最广泛 消息报头 Accept:接受内容类型 Accept-Encoding:压缩编码方式 Cookie:会话信息 Authorization:认证信息 Host:目标主机和端口 User-Agent:客户端信息 请求正文 GET通常无正文 POST用于提交数据 示例POST请求: 0x03 文件系统 路由器核心目录: /bin , /sbin :应用程序 /lib , /usr/lib :动态库 /etc :配置文件 0x04 分析环境搭建 必备工具 VMware Python IDA Pro Binwalk QEMU MIPS交叉编译环境 QEMU安装与使用 运行不同架构程序: 0x05 路由器漏洞分析技能 1. 修复运行环境 定位异常函数 编写伪造函数并封装为动态库 使用LD_ PRELOAD劫持目标函数 2. IDA Pro远程调试 调试器服务器:运行被调试程序 调试器客户端:运行IDA界面 支持调试QEMU模拟的程序 四、路由器漏洞原理与利用 0x00 Web漏洞 1. XSS漏洞 原理:在HTML中插入恶意脚本 危害:窃取Cookie、用户信息 示例: alert(document.cookie) 2. CSRF漏洞 原理:伪造受信任用户请求 危害:修改路由器参数,长期监控 示例:构造DNS修改链接 3. 基础认证漏洞 认证方式: http://user:pass@host 结合XSS/CSRF可提升攻击效果 0x01 后门漏洞 类型:开发预留、遗留漏洞、调试接口 经典案例:32764端口后门 0x02 溢出漏洞 MIPS32函数调用特点 栈操作 从高地址向低地址增长 无ebp指针,通过调整sp分配栈帧 调用机制 前4个参数通过$a0-$a3传递 多余参数通过栈传递 返回地址存入$RA寄存器 函数类型 叶子函数:不调用其他函数,直接 jr $ra 返回 非叶子函数:保存$ra到栈中,返回时从栈恢复 溢出利用 非叶子函数:可覆盖栈上返回地址 叶子函数:需覆盖父函数返回地址 五、总结 本指南系统介绍了路由器安全研究的核心知识体系,包括: MIPS架构和指令集特点 路由器环境和工具配置 常见漏洞原理与利用方法 实战分析技巧 后续可深入: 固件提取与分析 漏洞自动化挖掘(Fuzz、代码审计等) 复杂攻击链构造