IoT 安全从零到掌握:超详尽入门指南(基础篇)
字数 2132 2025-08-22 22:47:30
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环境,常用命令:
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请求结构
-
请求行:
Method Request-URI HTTP-Version CRLF- 方法:GET/POST最常用
- Request-URI:资源路径
- HTTP版本:1.1最广泛
-
消息报头
- Accept:接受内容类型
- Accept-Encoding:压缩编码方式
- Cookie:会话信息
- Authorization:认证信息
- Host:目标主机和端口
- User-Agent:客户端信息
-
请求正文
- 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函数调用特点
-
栈操作
- 从高地址向低地址增长
- 无ebp指针,通过调整sp分配栈帧
-
调用机制
- 前4个参数通过\(a0-\)a3传递
- 多余参数通过栈传递
- 返回地址存入$RA寄存器
-
函数类型
- 叶子函数:不调用其他函数,直接
jr $ra返回 - 非叶子函数:保存$ra到栈中,返回时从栈恢复
- 叶子函数:不调用其他函数,直接
溢出利用
- 非叶子函数:可覆盖栈上返回地址
- 叶子函数:需覆盖父函数返回地址
五、总结
本指南系统介绍了路由器安全研究的核心知识体系,包括:
- MIPS架构和指令集特点
- 路由器环境和工具配置
- 常见漏洞原理与利用方法
- 实战分析技巧
后续可深入:
- 固件提取与分析
- 漏洞自动化挖掘(Fuzz、代码审计等)
- 复杂攻击链构造