时间:2015-02-12 | 来源:互联网 | 阅读:191
话题:
脱焊
遇到加密这种棘手情况,我不得不去获得调制解调器的固件。调制解调器单元并不包含可获取固件的标准化测试接口(联合测试工作组,JTAG)。这就意味着我不得不从调制解调器上拆除闪存模块焊点,然后使用适配器板来读取固件。这可不是是一项简单的工作,因为芯片经过BGA封装-在脱焊后,还需要锡球重整(reball),然而供应商为你提供了关照。
Combox的调制解调单元加密文本消息
为了分析固件,我使用足够多的I/O管脚和匹配的1.8伏I/O电压把适配器板的闪存芯片连接到STM32评估电路板。只需几行C代码,我就通过评估电路板的串口连接器把闪存的内容提取到PC机上。为了分析固件代码,我动用了神器IDA Pro。它可以探测汇编代码,而且支持这款调制解调器的ARM处理器。
调制解调器的闪存经过脱焊后连接到适配器板(左侧)。读取固件的方法来可能看起来有些荒唐,但确实有效
通过IDA Pro工具,我迅速识别出固件上多种加密和哈希算法。这是因为流行加密算法使用特定的表与常数,它们可以被自动化地查找。基于这些发现,我可以查找到使用相同加密和哈希算法的其他代码。
寻找密钥
加密秘钥来自何处?作为乐天派,我起初推测厂商会为每辆车生成唯一的密钥,并存储在V850ES微型控制器上,然后再发送到蜂窝调制解调器。由于在这种假设场景下查找密钥需要花费大量的工作,所以我决定继续分析应急呼叫的协议。固件中的特定字符串表明,它似乎正在使用NGTP协议(下一代Telematics协议)。并不令人感到意外,因为宝马公司是NGTP主要支持者之一。
为了定义通信协议,NGTP使用标准符号表示法ASN.1(抽象语法标记1)。经过分析得知,该固件使用开源编译器asn1c来创建语法。结合asn1c工作原理来查看固件的结构,我尝试重构接近该协议所用的ASN.1语法。这个步骤是必须的,因为NGTP只是对协议如何构建给出建议,但并未规定实际的实现细节。
湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网