用于从 Nordic nRF51 SoC 解锁和读取内存的嵌入式安全研究工具
项目描述
无线射频安全
nrfsec 是用于解锁和读取 Nordic Semiconductor 的 nrf51 系列 SoC 上的内存的安全研究工具。
- 读取所有目标内存,通过集成的读取小工具搜索绕过内存保护单元 (MPU) 设置。
- 自动解锁功能:读取所有程序和 UICR 内存,擦除所有内存,修补 UICR 图像,将目标重新刷新到解锁状态。
- 用于在执行内存读取之前与目标交互的引导延迟命令标志,允许 RAM 转储。
- 保存所有固件图像以导入您喜欢的反汇编程序。
安装
nrfsec 基于pyswd 库构建,目前仅适用于ST-Link调试接口。
nrfsec 需要 python 3.7+ 才能运行,并且可以使用 pip 安装:
pip3 install nrfsec
信息
快速信息检查将确保 nrfsec 能够与调试器和目标进行通信。信息的输出还将指定目标当前是否被一些其他有趣的目标信息锁定。
nrfsec info
在此处指定详细标志,并转储前面提到的信息以及 UICR 和 FICR 的全部内容。此处显示的所有信息都可以通过解释 UICR 和 FICR 中包含的寄存器来找到。
读
nrfsec 将自动找到可用的读取小工具并将所有内存转储到锁定的目标上。nrfsec 会将所有提取的图像存储在当前工作目录的 /fw 中。下面的示例可用于通过解析位于 FICR 中的内存规范来自动读取所有内存区域。
nrfsec read -a
在开始内存提取之前以可选的延迟读取指定的内存区域。非常适合通过任何相关的移动应用程序与目标交互,以填充 RAM 和初始化外围设备。
nrfsec read -s 0x1000 -e 0x2000 -d 8 -o outfile.bin
锁
发出 lock 子命令将再次锁定目标。这在开发 nrfsec 时很有用,但如果您只是想锁定尚未锁定的目标,也可以使用它。
nrfsec lock
开锁
解锁子命令将执行以下步骤:
- 读取所有内存区域(最重要的是 ROM 和 UICR)并保存图像。
- 执行完整的目标擦除,这将允许再次写入 UICR
- 修补在步骤 1 中提取的 UICR 映像以禁用回读保护
- 重新刷写 ROM 并修补 UICR 回目标
nrfsec unlock
现在可以进行调试会话。
用法
✗ nrfsec -h
usage: nrfsec <command> [<args>]
perform security related tasks on nRF51 targets through SWD interface
optional arguments:
-h, --help show this help message and exit
-f FREQUENCY, --frequency FREQUENCY
frequency to run the SWD interface (default 4 MHz)
-v, --verbose increase output verobsity
supported subcommands:
{info,erase,restore,read,unlock,lock}
info display chip information
erase perform a complete erase
restore restore specific images to an unlocked chip
read read memory contents to outfile
unlock unlock the device if locked
lock lock the device if unlocked
待办事项
- 测试 moar 目标
执照
GNU GPLv3