首页
论坛
课程
招聘
[原创]初探HG110-B家庭网关
2020-3-5 14:05 11674

[原创]初探HG110-B家庭网关

2020-3-5 14:05
11674

0x0 HG110-B家庭网关

烽火HG110-B家庭网关是一种大多由联通/电信赠送的智能家庭网关,手中分析的这款是14年的老产品了,是联通定制的家庭网关。该网关除了具有“猫”功能,同时还具有路由功能,不过默认情况下,运营商并不提供配置Wifi的管理员密码,即功能已经被锁死。

 


去除外壳,它的样子。

0x1 信息收集

在外部,需要收集的信息,包括板子的UART口,使用的Flash型号,开放的端口。首先可以看到UART是固定好的,通过使用电压表测量,是可以正常使用的。通过查看PCB板,找到了疑似的Flash,通过使用电子放大镜查到了型号【MX25L3206E】。(现在的角度看来,没有抹去芯片型号,也可以算是一个存在的问题了)

使用的廉价的电子放大镜:

加电运行后,使用树莓派进行了端口扫描:

敞开盖子工作的树莓派。。这代树莓派实在是太热了

经过对这些端口的尝试,没有发现可利用端口,本来以为老机器会由telnet之类的呢。

0x2 UART口利用

从现在的角度看,这样一个IoT设备没有移除UART口是不负责任的。从看到内部的第一眼,注意力就被UART口吸引过去。使用转换工具连接笔记本,可以看到顺利打印出启动信息:

可以尝试通过串口登录到系统中,使用用户名root,密码使用脚本跑了80多个IoT常用密码,最终都没有登录到系统(挖的一个坑)。所幸换一个方式,直接读取存储密码的文件,解密即可得到密码。我们都知道,Linux的用户的信息存储在/etc/passwd中,passwd是所有人可读的,为了安全考虑,passwd中通常使用x显示密码,而真正的密码存储在shadow中,在早期的系统中没有考虑这些安全性问题,密码同样存储在passwd中,综上,只需要拿到passwdshadow文件即可(挖的另一个坑)。

0x3 固件的获取

要想获取密码,首先需要拿到固件。固件获取的方式有几种方式:

  1. 拦截升级包,获取升级的固件。
  2. 以某种方式登录到系统中,打包系统文件。
  3. 编程器读取Flash。

前两者明显是行不通了,直接物理hacking,编程器读取。
使用编程器读取有3种方式:

  1. 烧录夹在线读取。
  2. 飞线读取。

  3. 取下Flash。
    第3种方式由于使用前两种方式已经得到了固件,而且还要取下芯片后还要焊接回去,手里没有合适的焊锡膏了,就没尝试。

    如图,编程器并没有识别出该芯片类型,所以需要手工选择。

0x4 固件分析

拿到固件后,没有想更多,直接扔到虚拟机中,binwalk查看信息。

可以看到文件系统是Squashfs,我们想要的系统文件都在这里,直接解包。切换到etc目录,查看文件信息:

没有看到shadowpasswd也变成了链接文件,情况变得有些出乎意料。
沿着passwd指向的地址找下去,切换到var目录,查看目录结构:

似乎这些文件都不存在。推测可能是后期以某种方式写入或挂载的,在fstab文件中,也证实了我的猜想:

 

什么是tmpfs?
tmpfs 是一个不存在于实体硬盘上、而是驻在内存里的特殊文件系统。

 

/tmp 放置在 tmpfs 上有数个好处:

  • 由于 tmpfs 驻守在内存里,它的速度极快。它的寻觅时间与驻守在硬盘上的一般文件系统根本不能相比。举个例说,tmpwatch 采用 atime 这个属性,但这属性经常基于效率的原故而在普通文件系统上被停用。在 tmpfs 上使用 atime 所带来影响却很轻微。
  • 这个文件系统在开机时会已被自动清理

到这里,对直接读取passwd已经不抱有太多希望了,做最终的尝试,看看哪个文件中含有/passwd这样的字符串:

貌似第一个匹配的文件更像是想要的,拉出来拖到IDA中,先进行简单分析,观察到只有rut_createLoginCfg函数调用了/etc/passwd,尝试F5,失败了。想起来了之前用过的对于IoT更好用的Ghrida,这款NSA发布的开源逆向工具,查找该函数,注意到以下代码片段:

无心插柳柳成荫,原来可登录用户是adminsupportuser
再次使用弱口令字典爆破密码,额,分分钟出来结果:

我们可以执行部分命令了,查看/etc/passwd文件,使用工具可爆破解密出密码:

0x5 其他

文章开始提到,该网关的一些功能被运营商锁死的,在固件中相关的配置文件中,找到了相关的账户配置,使用这些账户,即可解锁相应功能。

在工厂配置文件中,同样还发现了一个重要的账户——telnet账户:

0x6 End

虽然整个过程没有挖掘新的漏洞,但是已经获取到了系统的权限,可以修改防火墙,使用telnet,上传gdbserver进行调试分析。

0x7 参考

https://wiki.centos.org/zh/TipsAndTricks/TmpOnTmpfs


【公告】【iPhone 13、ipad、iWatch】11月15日中午12:00,看雪·众安 2021 KCTF秋季赛 正式开赛【攻击篇】!!!文末有惊喜~

收藏
点赞3
打赏
分享
最新回复 (19)
雪    币: 1803
活跃值: 活跃值 (492)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
拍拖 活跃值 2 2020-3-5 14:32
2
0
设备真全
雪    币: 229
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
ssgar 活跃值 2020-3-5 15:03
3
0
雪    币: 220
活跃值: 活跃值 (460)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
sudozhange 活跃值 5 2020-3-5 18:57