首页
社区
课程
招聘
[原创]IoT设备获取本地shell权限并进行软件调试
发表于: 2022-4-8 17:52 31058

[原创]IoT设备获取本地shell权限并进行软件调试

2022-4-8 17:52
31058

1.简介

笔者近期研究了一些智能家居设备,这些设备开放端口较少,网络侧基本无法获取调试权限。本地获取设备的调试权限,在当前的攻防形态下,就变成了一个重要步骤。本文主要记录通过串口、固件篡改获取本地权限的过程。

如下图所示的设备,位置1flash芯片,位置2为串口调试接口。使用串口线进行串口探测,将主板上的接口一一引出,再使用万用表测试电平,最后判定其串口线序,这一步许多道友都分享了,这里不再赘述。接下来主要介绍记录获取本地shell权限和调试环境的过程。

图 1 设备主板flash和串口位置

2.本地权限获取

本节主要介绍3个步骤,分别是串口探测、读取固件、更改固件。这三个步骤的实验可使设备运行更改后的固件,并成功执行本地shell和telnetd服务。

2.1 串口探测

使用串口线连接到设备后,显示(none)login,需要进行登录。因为不知道密码,暂时无法获取本地root权限。

图 2 本地提示登录

尝试更改uboot启动参数时,uboot设置了密码。

图 3 进图uboot命令行之前提示输入密码

尝试把uboot提取出来后,发现一个密码,但是输入到uboot中,无法登录,暂时没办法短时间内通过uboot启动我们指定的固件。

图 4 uboot逆向后硬编码的某字符串

综上,在串口上直接获取本地权限比较困难,逆向完uboot需要的时间成本较大,决定改flash上的固件获取权限。

2.2 读取固件

硬件上使用Norflash,硬件上处理固件相对容易。本次使用工具如下:

Ø  Xgpro T56编程器

Ø  Putty

Ø  USB转TTL线

Ø  拆焊台

使用编程器将固件读取后,可直接使用binwalk解压到文件系统,进而进行固件的静态分析。

图 5 binwalk输出的固件结构

Binwalk的结构看起来有些识别误差,我们查看F40000附近后,可确定0x440000-0xF40000处为JFFS2文件系统分区(而非0xF400D4)。

图 6 固件0xF40000位置

使用dd命令分割固件,将该区域的文件系统文件使用binwalk解压后,可得到以下文件系统内容。

图 7 JFFS文件系统内容

使用binwalk解压整个固件,可得到根文件系统目录,如下所示:

图 8 根文件系统结构

在根文件系统下搜索”boot.sh”,确定boot.sh会在开机启动。

图 9 开机启动boot.sh

也就是说,JFFS2文件系统作为一个MTD分区被加载到内存后,进行了挂载,并在启动脚本”S90init”中启动。我们只需要更改该脚本,并启动telnetd和串口shell即可。

2.3 更改固件

由以上实验可知,更改boot.sh即可执行本地命令。在boot.sh中增加如下所示内容。

图 10 固件更改内容

 

下面重新打包固件。主要步骤如下:

Ø  将被更改的固件目录重新打包为相同格式的文件系统rootfs.jffs2

Ø  制作全“ff”的文件系统out1024.bin

Ø  将rootfs.jffs2填充到out1024.img中


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2022-4-8 20:48 被fengzhidian编辑 ,原因: 改了图
收藏
免费 7
支持
分享
打赏 + 150.00雪花
打赏次数 1 雪花 + 150.00
 
赞赏  Editor   +150.00 2022/05/05 恭喜您获得“雪花”奖励,安全圈有你而精彩!
最新回复 (10)
雪    币: 4103
活跃值: (5802)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
LZ 串口接口是uart吗?
2022-4-9 22:19
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
blck四 LZ 串口接口是uart吗?
是,ttl的
2022-4-10 10:00
0
雪    币: 1175
活跃值: (745)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是树莓派吗
2022-4-11 08:00
0
雪    币: 2082
活跃值: (2024)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
修改完固件以后telnet进入系统了,可以用彩虹表跑出来密码,再使用串口登录可行么
2022-4-11 09:25
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
Meet8 是树莓派吗
IoT产品
2022-4-11 09:58
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
夏天呀 修改完固件以后telnet进入系统了,可以用彩虹表跑出来密码,再使用串口登录可行么
没试过,都能改固件了,把passwd和shadow改自己的也能登录进去
2022-4-11 09:59
0
雪    币: 13992
活跃值: (17371)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
8
我有个设备,固件都改好了,也刷进flash了,但是就是一直卡在固件校验的步骤(不是CRC校验),进不去文件系统,好几个月了,我都放弃了……
2022-4-11 14:45
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
pureGavin 我有个设备,固件都改好了,也刷进flash了,但是就是一直卡在固件校验的步骤(不是CRC校验),进不去文件系统,好几个月了,我都放弃了……
寄过来看看
2022-4-11 14:51
0
雪    币: 13992
活跃值: (17371)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
10
fengzhidian 寄过来看看[em_78]
淦,公司的设备,不敢乱寄,设备是水星的X18G,固件是最新的1.0.7
2022-4-13 15:14
0
雪    币: 2415
活跃值: (1704)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
pureGavin 淦,公司的设备,不敢乱寄,设备是水星的X18G,固件是最新的1.0.7
好吧
2022-4-14 13:32
0
游客
登录 | 注册 方可回帖
返回
//