2018 NDSS IoTFuzzer 物联网模糊测试工具
内容提要
IoT Fuzzer 是一种利用物联网手机 APP 进行协议指导的模糊测试方法:通过动态分析 APP 识别协议字段并变异,重用其加密函数,并借助心跳机制监测设备崩溃,以挖掘固件内存漏洞。该方法分为 APP 分析与模糊测试两个阶段,但存在覆盖率有限、无法定位漏洞类型等局限。
延伸解读
为何选择手机APP作为测试入口
物联网设备固件往往难以直接获取或调试,而手机APP作为控制面板,包含了丰富的设备协议信息。IoT Fuzzer通过分析APP来间接测试固件,避开了固件提取、解密和仿真等难题。这种方法尤其适合那些不公开固件、没有调试接口的设备,为物联网安全测试提供了新思路。
协议指导模糊测试的关键设计
IoT Fuzzer在数据源处修改协议字段,利用APP自身的加密函数,确保测试消息能被设备正确解密。同时,通过心跳机制监测设备状态,判断是否崩溃。这种设计降低了对未知协议逆向的依赖,提高了测试的可行性和效率,但也受限于APP与设备的通信方式。
实际应用中的限制与风险
该方法主要针对内存漏洞,无法发现身份验证绕过等其他类型漏洞。测试范围限于Wi-Fi连接的设备,且云中继可能过滤消息,影响测试效果。此外,工具可能产生假阳性和假阴性,且无法直接定位漏洞类型和根本原因,需要人工进一步分析。
对工业控制系统的启示
工业控制系统通常有专用控制软件,可以借鉴IoT Fuzzer的思路,对控制软件进行hook,生成测试消息,从而发现潜在漏洞。但需注意,工业环境对稳定性和实时性要求更高,测试时需谨慎,避免影响正常生产。
Q&A
IoTFuzzer 是什么?它主要用来做什么?
IoTFuzzer 是一种利用物联网手机 APP 进行协议指导的模糊测试方法,通过动态分析 APP 识别协议字段并变异,重用其加密函数,并借助心跳机制监测设备崩溃,以挖掘固件内存漏洞。
为什么物联网设备固件漏洞检测很困难?
因为固件难以获取(供应商不公开),设备简单无调试端口,无法转储映像;即使获得固件,解密困难,且不同固件体系结构不同,仿真运行易崩溃。
IoTFuzzer 如何解决未知协议和加密消息的模糊测试问题?
它在数据源处修改协议字段,利用程序逻辑自动生成有意义的测试用例;同时重用 APP 中的加密函数,无需重新实现加密逻辑。
IoTFuzzer 如何监控物联网设备是否崩溃?
通过心跳机制:对于 TCP 连接查看连接状态;对于 UDP 连接,发送心跳消息来区分无响应是由崩溃还是内部错误处理引起。
IoTFuzzer 的工作流程分为哪几个阶段?
分为两个阶段:APP 分析阶段和模糊测试阶段。APP 分析阶段分析 UI 操作和协议字段传播;模糊测试阶段动态插桩变异协议字段并监测崩溃。
IoTFuzzer 有哪些局限性?
测试范围有限,主要关注内存漏洞,忽略其他漏洞;只支持 Wi-Fi 连接;云中继可能过滤消息;无法生成漏洞类型和根本原因;存在假阳和假阴。