Android系统逻辑安全测试001
Android系统逻辑安全测试001SOP-LOG-001Secure Boot 链验证测试步骤Step 1获取启动链组件1. 设备进入fastboot: adb reboot bootloader 2. 备份所有分区: for partition in bootloader boot vbmeta super system vendor dtbo lk tee: fastboot flash $partition $partition.img (若不支持备份则使用mtkclient) # 或使用 mtk_rw 读取 3. 提取PRELOADER: mtkclient 读取 preloader分区 4. 检查启动链: - preloader (BootROM校验) - lk (Little Kernel → 校验boot/recovery) - boot.img (内核ramdisk) - vbmeta (Verified Boot Metadata)Step 2签名验证强度测试# 测试A修改boot分区 1. dd if/dev/urandom bs1 count1 ofpatch.bin 2. 将 patch.bin 写入boot.img的偏移0x200处 3. fastboot flash boot 篡改后的boot.img 4. fastboot reboot 5. 观察设备反应: - 拒绝启动 → 绿灯 - 启动但显示警告 → 黄灯 - 正常启动 → 红灯严重缺陷 # 测试B修改vbmeta分区 1. 提取vbmeta: dd if/dev/block/by-name/vbmeta ofvbmeta_backup.img 2. 使用 avbtool 分析: avbtool info_image --image vbmeta_backup.img 3. 设置 flags0 (禁用验证): avbtool make_vbmeta_image --flags 0 --output vbmeta_modified.img 4. fastboot flash vbmeta vbmeta_modified.img 5. 重启观察 # 测试C降级攻击 (Rollback) 1. 检查当前 rollback index: avbtool info_image --image vbmeta.img | grep rollback 2. 获取旧版本镜像rollback index 当前值 3. 尝试刷入: fastboot flash vbmeta old_vbmeta.img 4. 检查是否触发 rollback protectionStep 3BootROM 级别验证1. 短路eMMC CLK/DAT0或CMD引脚到GND强制从USB启动 2. 使用mtkclient尝试BROM模式: python mtkclient payload 3. 观察是否可绕过签名直接加载自定义preloader 4. 检查BROM是否锁定MT8766 Brom是否已熔断安全位Step 4DM-Verity 验证1. 进入系统后: adb shell cat /sys/module/dm_verity/parameters/status → 应为 verified 或 verified with warnings 2. 制造文件系统篡改: adb root adb remount (如果允许) echo tampered /system/bin/a_random_file adb reboot 3. 重启后检查: adb shell dmesg | grep -i dm-verity → 必须有verity验证失败的日志判定标准测试允许结果不允许结果分区篡改设备锁死/恢复模式正常启动签名缺失设备拒绝刷入成功刷入并启动Rollback拒绝降级成功降级BROM绕过BROM锁定拒绝成功连接BROMDM-Verity验证失败后系统只读或重启可读写篡改分区