网络管理员应该对硬件进行安全评估,他们将提供他们的用户,或者特别是偏执的用户可能希望在他们的设备上戳戳,以便额外肯定。

在此博客文章中,我们将演示用于评估在线购买的通用便携式路由器上的安全性的技术。我们已经将其可识别的信息缩短,因为我们的目标不是对硬件制造商提供免费的渗透测试。(有进取的人仍然可以弄清楚这一点。)

我们真的能相信这个设备吗?这是一个便宜的路由器,可能是用现成的组件组装的。

为了评估这个设备的安全如何,我们将不得不将它分开并弄清楚是什么让它勾选。

包装

这款路由器装在一个小盒子里,上面有关于其功能的有用信息,唯一的品牌标识是一个银色标签,上面写着[REDACTED]。

它看起来像一个由第三方制作的设备,并重新品牌以快速加强另一家公司的产品产品。快速谷歌搜索在第一页的结果上没有为此产品产生网站,但更多的挖掘确实揭示了我们不会在这里披露的制造商。

仔细阅读他们的产品线,我们能够找到我们购买的路由器。我们位于固件更新并下载它以进一步调查。更稍后的更多。

收集设备

一旦我们收到路由器,我们所做的第一件事就是拆卸它。最好的工具是这样做的IFIXIT工具包。

这是拆解物品的黄金标准。它配备了许多深奥的固定头,旨在挫败任何试图拆开东西的人。

这种迷你路由器没有可见的螺丝——这是最近许多设备的趋势。拆卸需要使用ifixit工具箱中的“spudge tool”工具,我们轻轻地撬开盖子。值得庆幸的是,没有任何保修“如果被篡改就无效”的标签。这些都是非法

把路由器拆开后,可以看到主路由器板,上面有两个天线,中间有一个芯片。中心的主芯片是MIPS处理器,主板上有一个特定型号的丝绸。

稍微用谷歌搜索一下,就会发现这种芯片组有一个制造商网站,甚至还有一个特定产品的页面。

我还在我们的确切模型上找到了一个wikidevi页面。Wikidevi是基于MediaWiki和语义MediaWiki的计算机硬件的用户可编辑数据库。此页面上包含芯片组的良好信息,其能力销售,谁。

让我们向现在提交一些信息。我们稍后会回到他们身边。

这块板有四个针孔。这些通常被称为“镀通孔”或“环形环”。在这个练习中,我们将把它们称为镀通孔。

这看起来类似于制造商留在主板上的界面。这些镀通孔通常用于将操作系统闪蒸到电路板上并在工厂测试设备以验证所有内容是否正常工作。没有尝试隐藏其目的。

在产品网站上有些光线挖掘后,我们确实找到了这个芯片组的慢速I / O功能。

此外,Googling表明,这种引脚普及相当普遍,可能是UART品种。

[Redacted]产品页面上有提到UART。这看起来很有希望,就像一个开始的好地方。但是镀孔孔处于尴尬的位置,并且难以检查主板。

更多的设备

为了得到更好的外观,我们做了一些在线购物。我们购买了一个“三手儿”来握住主板。为了紧凑,该便携式路由器直线直接拧到变压器上。这意味着我们在120伏特的附近,因此我们应该谨慎行事。

该装置结构紧凑,集成度高。主板上的芯片非常小,我们的视力也不如以前了。回到网上去买一盏珠宝店的台灯。

所以现在我们有了放大灯,它比第三只手的小灯泡好多了。LED灯也使检查主板更容易。

要与这些引脚互动,我们可以焊接电线,但我们计划使用该设备,只要它通过了集合。这意味着我们会尽可能地试图和我们的探索一样微妙。回到互联网。经过一些搜索后,我们发现了分离标题。

捕捉四个长度为完美的引脚适配器。无需焊料,加上最终连接USB标题并用于探测引脚。

购物

现在我们需要调查这些诊断引脚的内容。他们有电压吗?他们是否曾经发送过发送和接收信息?再次回到互联网以获取更多购物。

不想为任务购买太便宜或不恰当,我们谷歌断了实惠的电压表,发现了一个审查为体面和负担得起的电压表。我们选择了Extech EX330自调迷你万用表,内置温度计和K型远程探头。

我们还购买了额外的探头连接器套件,以获得良好的措施。我们开始检查电压。路由器的底部是变压器。它通常从120伏特下降到12伏。我们将电压表设置为200伏,只是为了安全,并探讨。

潜入

底部镀通孔有一个正方形。也许它很特别?所以我们开始将地面施加到它和顶针的电源,结果为-3.3伏。快速反转探头给我们+3.3伏。

一些快速谷歌曲告诉我们,这些类型的接口中使用了两个共同的电压:3.3伏和5伏。它看起来我们的路由器是3.3伏品种,顶部销是接地,底部方形引脚与3.3伏有阳性。

所以现在我们知道顶部和底部的别针是什么。这使两个中心别针留给了一个谜。

许多其他更有才华的人比我们走下了这个特殊的兔子洞,在这方面,谷歌非常宝贵。我们在其他路由器上找到了其他UART接口的图片。

似乎没有一个标准化的引脚顺序,但在我们在线找到的大多数示例中,gnd (ground)和VCC处于外边缘。

在我们的情况下,VCC将代表“电压常见收集器”。More Googling indicated that there is a cable available to interface with these pins and, most importantly, that you don’t need to connect the 3.3 Volt pin unless you want to watch your cable, your router, and potentially your computer go “poof-the-magic-dragon.”

很高兴知道。让我们在以后存储这个信息的数据。

更多购物

所以回到更多的购物。我们发现一个USB到RS232 TTL UART PL2303HX转换器USB到COM电缆适配器模块。

我们还发现一些指定他们带来了电压选择,只是为了彻底,我们还订购了其中一个。它没有素质没有,所以我们还在等待从中国慢慢抵达。

回到调查

不是一个假设任何东西,我们也研究了电缆的颜色编码是什么,因为它是在一个小气泡包装没有说明,可悲的是没有包装表明它是3.3伏特或5伏特品种。类似的USB和UART电缆在网上有文档。我们做了一个假设,并从理论上说,电缆着色将是相同的谷歌图像结果(手指交叉)。

路障

颜色匹配:黑色的地面,红色电源,绿色为接收,白色用于传输。到现在为止还挺好。我们在我们的测试机器中插入UART到USB电缆,并遇到了另一个障碍。

虽然它被正确检测到并且Windows确实安装了正确的驱动程序,但它不起作用。一些调查显示该设备无法启动。

我们尝试将USB设备移动到设备管理器中的不同COM端口,而没有成功。我们尝试直接从多产网站下载驱动程序,并再次没有成功地满足。我们还尝试将USB设备移动到另一个端口(从USB V3到常规USB)。再次,没有去。

进一步挖掘到设备的属性,显示设备无法启动。

研究这个错误产生了这个论坛帖子。更具体地,到此条目:

" PL-2303HXA和PL-2303X不支持Windows 8/8.1/10EOL.(生命的终结)芯片版本。”

因此,虽然这款USB加密狗可能是有效的,但它不会在Windows 10中起作用!什么令人惊讶!不要轻易击败,我们用USB加密狗重新启动到Ubuntu Linux中。

然后,我们继续检查USB到串行适配器是否正常工作。这是通过发出此命令实现的:

$ dmesg | grep tty

所以现在我们知道USB适配器是TTYUSB0。Windows论坛在不支持适配器中提到了PL2303芯片组,我们在此处看到它。在Windows中,我们将使用Putty终端程序。在Linux中,我们选择使用GTKTerm。它已安装此命令:

$ sudo apt-get安装gtkterm

我们发现,为了获得最佳效果,请从Bash中调用GTKTERM所需sudo。(我们怀疑需要用户帐户是具有访问端口的权限的组的一部分。)

$ sudo gtkterm

一旦GTKTERM运行,我们需要选择正确的端口。我们选择了配置选项并打开端口选项。

在端口下拉菜单中,在最底部,我们看到了/dev/ ttyusb0。这是多产的USB适配器。

我们向默认值留下奇偶校验位,停止位和流量控制,并希望最佳。

在此之后,确定中心中的两个引脚的繁琐任务是传输和接收,以及正确的波特率。我们的第一次尝试是GND,RX TX和VCC未连接。<-vcc = 3.3v = pof!坏的!

这些是我们得到的结果。TX和Rx都被反转,或者我们选择了错误的波特率。发生了某种沟通,但内容都是乱码的。我们经历了最常见的波特率,但没有任何成功。

然后,我们翻转了TX和Rx,并开始了拔出并重新插入路由器的变压器部分的过程,同时递增GTKTERM中的可用波特率。选择57600波特率时,我们成功了!

我们现在可以看出这个便携式路由器如何启动。它使用U-Boot(1.1.3)。在系统开始时,您提供的短暂时刻:

如果在恰当的时刻输入“4”,则会中断启动过程并在提示符下转储。这可能是工厂中使用的菜单,用于应用正确的固件并执行质量保证检查,并确认该设备没有缺陷。一些选项看起来像它们可能是破坏性的,砖块的那样,所以我们在我们的选择中小心。

输入“帮助”为您提供U-Boot命令行可用的命令列表。

Printenv提供了更多信息。我们可以重新闪现本机。我们可以重置单位。所有这一切都很好,但并没有真正帮助我们确定设备的安全姿势。

我们继续驾驭寻找有趣的事情的菜单,但U-Boot环境非常有限。我们还发现,如果您允许启动过程正常进行,然后按任意按键完成,您也将在命令提示符下转储。

导航到可用目录显示了一组文件夹:CFG,NET和OS。这些文件夹包含文件。他们不是子公司。他们没有延伸。单独调用无开关时,它们显示了使用说明。

我们到目前为止学到了什么

那么我们如何了解了这个设备的安全性?具有本地访问的人可能很容易修改其行为。

芯片组上的文档提到“[Redacted]嵌入了8MB内存并为Compact Router提供Ecos交钥匙......”

我们暗中怀疑这就是底层的操作系统。我们知道u-boot for mips启动加载程序会在初始化硬件完成后控制“某些”。交钥匙听起来很简单,而且通常是制造商所讨论的。

wiki为eCos在“批评”标题下有有趣的条目:

ECO中包含的FreeBSD TCP / IP网络堆栈超出日期(大约2001年)并将系统公开为众多安全性和稳定性漏洞(FreeBSD Releng 4 4 0为IPv4的IPv4和FreeBSD的原点kame释放)。官方ECOS维护者似乎不会监视FreeBSD或Kame进行安全或稳定性更新,而是依赖ECO用户用户的最小和不足的错误报告。[所需的引用]

SNMP套餐最多是基本的,再一次,显然是由于它的年龄。(原始研究?]

回顾

让我们来看看迄今为止它采取的信息。一些专业工具,一些专业化的硬件,一些非琐碎的计算机知识,以及一定数量的猪头。毕竟,我们甚至没有找到任何远程接近眩光的脆弱性。我们了解更多关于我们的设备,这是一件好事。但是,普通用户将无法实现这一目标。这是一个很酷的运动。但预期普通用户无法逆转其设备并不是现实。

下一个什么?

我们要百分之百地确认操作系统是什么,而不是仅仅依靠“直觉”。还记得我们从[REDACTED]网站上收集的固件更新吗?我们将尝试从.img文件中提取信息。我们希望这次更新将包含有用的信息。我们也有兴趣从路由器上卸载本地固件。我们这样做是为了比较原始固件和修改、更新的固件,以及看到什么被纠正或改变,也许找出这个更新解决了什么问题。

也许他们实施了一个只部分修复问题的修复程序?也许他们修复了问题而不是潜在的漏洞?所有这些问题都值得答案。

你看到我做错了什么吗?有关于其他事情要尝试的建议吗?在Twitters上伸出@jean_taggart。我很敏感有兴趣听到你们所有人。