首页
社区
课程
招聘
[翻译] 逆向分析华为E5573 4G Modem
发表于: 2017-7-9 22:42 5772

[翻译] 逆向分析华为E5573 4G Modem

2017-7-9 22:42
5772

这个周末,我花了一些时间继续研究华为E5573调制解调器。在这上面,我已经能够识别并简化POC的过程,攻击者可以在此设备上的以特权执行代码,而不用通过本设备的公开越狱使用的“boot pin”技巧。

这个方法使用一个E3372设备,就算不是全部,也应该是大多数的华为4g调制解调器。很明显,我不是“大牛黑客”——但是,我没有找到任何这方面的文档。而且,该方法可以作为“第一原理”的基础:可以在提前了解这个设备情况下使用。

如果你想照着做,在这里有一些文件(二进制转储,提取脚本,脚本)可以帮到你,如果有我联系方式,可以问我要这些IDB:

https://wordswithcomputers.files.wordpress.com/2017/06/lol.zip

华为e5573设备是一个4G调制解调器,Optus在澳大利亚有转售,在世界各地都有途径拿到。这个设备有一个白色的小塑料盒,当它打开时,看起来像这样:


可识别调试引脚如下所示:

·上面的红色盒子里的插脚是UART。上一行的第二个和第三个引脚分别接收(数据输入)和传输(数据输出)。

·左边的三个引脚,外观黄色,是另一组调试的bottomost引脚:引脚“boot pin”–如果该引脚接地,当设备上电后,它会引导到一个“USB DLOAD”模式,它可以用来覆盖设备的引导程序(也就是,固件)。这是一般用于给设备越狱和防止变砖的方法。

·右边的引脚可能是JTAG -这种配置在华为的设备上很常见(如在这里提到的),虽然我在逻辑分析仪上的任何一个引脚上看不到任何东西。


我的第一步是观察通过UART引导的设备:

然后该设备引导Linux,并运行自定义密码提示符。使用暴力破解显示密码长度必须为8个字符,但没有提供其他信息。

更详细地检查引导过程,我们发现了奇怪的一行:

我们从4pda.ru获得一个线索,来自forth32这个用户。

拖着这为谷歌翻译,我们得知一个可以发送“M”、“V”或“L”通过UART连接引导到不同的模式,分别是:“M3控制台”,VxWorks或Linux内核。至少有一个可用的模式(“K”),通过公开可用固件的逆向工程可以看到。

选择“L”选项允许定时开机,而选择V给非交互式的VxWorks控制台(在e3372,这是交互的–我不知道为什么这里是关闭状态,关于这个设备也没办法重启它)。

选择“M”给出了一个更有趣的提示:

这可以通过一个脚本,通过-S选项通过minicom,让生活更容易一点,所以你不必按住“M”键开机。此脚本的下载链接在上面。

下面的能给我们一些帮助:

一个小测试表明“d”允许我们写内存,而“W”允许我们转存内存。从这一点出发,我把内存从0到0xffffffff转储,把结果输出到文件。生成的输出在下面的表格里:

需要注意的是,您不能获得“完整”内存转储——设备在打印内存的几分钟后似乎会崩溃,需要通过一个电源周期恢复。此外,这似乎并没有遵循正常的内存映射:而且,在0x0和0x10000000转储会产生相同的结果。我写了一个Python脚本来提取从minicom捕获文件–脚本就在上面。

在文件中的字符串显示,我们可以看一些任意进程的内存,甚至是,这个Balong单片机控制台本身:

不幸的是,内存转储没有正常的可执行格式。加载到IDA不显示任何类型的头文件。我们从引导日志中知道,处理器是ARM,所以我们可以简单地将其加载到IDA中,并开始强制转换为ARM代码,看看我们得到了什么:

最初的指令看起来不象有效的ARM,但是如果我们往下看,我们可以看到有意义的ARM函数(用正常的push/pop指令),而且数据开始成形:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 1787
活跃值: (913)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
新鲜的bootloader……还有各种奇奇怪怪的翻译
不过大致上看懂了一点(可能是我语文老师死的早?
2017-7-9 23:49
0
游客
登录 | 注册 方可回帖
返回
//