在我们博客的第二部分评估便携式路由器的安全性,我们将获得工具和设备在我们的目标路由器上复制固件,这样我们就可以评估完整的固件。

有时,制造商会在其网站上提供更新的固件。它可能只是一个更新,因此不完整。我们希望能够比较更新的和现有的固件,看看有什么变化。

有了完整的固件,我们可以浏览路由器的文件系统,并寻找有趣的安全进展。是否存在行政后门?是否有未被记录或涉及的功能?

最终,我们希望更好地理解这个设备是如何工作的,如果没有完整的图片,这是不可能的(或者说这要困难得多)。

更多的购物

我在第一篇博客中购买的第三臂解决方案表现不佳。它没有足够的手臂,有点薄,容易翻倒。我买了一个更可靠的解决方案。当我们获取固件时,这将用于放置路由器、灯、USB显微镜和其他设备。

这个小玩意儿看起来像一只太空章鱼在我的桌子上,但它的用处无穷大。

我们还需要一个SOIC 8针夹子。

这将用于连接到eeprom,而无需对实际芯片进行脱焊(我买了几个SOIC剪辑,主要是因为我的原作花了很长时间才到达这里,还因为我在网上看到关于“便宜的”SOIC剪辑和更昂贵的SOIC剪辑的效果差异很大的评论。如果电缆布线受到干扰,便宜的电缆有爆炸的倾向。

我也买了一些跳线用于将剪辑连接到我选择使用的任何诊断设备。

另外,我还买了一台小型USB显微镜。没什么特别的:200倍放大。芯片上的字太小了,我很难看清。SuperEyes公司将其用于牙科用途。它也可以很好地读取各种芯片上的小标记。

收购硬件

有几个选项可以实现这一点。最常见的是总线的海盗危险的原型

经过一些网上研究,我发现有几个版本的巴士海盗可用。在看到“Dangerous Prototype”页面上的这条评论后,我选择了第3版(准确地说是3.6版):如果你想要一些不费吹灰之力就能使用的东西,Bus Pirate v3仍然是最好的选择。v4固件的边缘比较粗糙,但一直在改进。

我一共买了三个Bus Pirates:两个v3.6和一个v4.0。我们的计划是有一个3.6版本,附带附带的任何加载程序和固件,并有一个备用程序将其更新到可以找到的社区加载程序和社区固件在这里

4.0总线海盗是为了远程可能性,无论是3.6或其他解决方案都不能成功工作。(公共汽车海盗v4仍在通过我们的邮政系统。)

“巴士海盗”的博客文章和YouTube视频数量最多,但在我的研究过程中,我发现了一些信息,让我有些犹豫。

危险巴士海盗原型的开发似乎已经停止。可能它拥有所有需要的功能,但当我将Bus Pirate与flashrom(我在Linux开发机器上使用的软件)结合使用时,它抱怨我的v3.6模型附带的固件版本。

进一步的研究也发现了这个问题Shikra,由Xipiter. 我还获得了其中的一个,目的是使用它来转储路由器固件,并将其与通过总线盗版获得的固件进行比较。有多种方法可以达到相同的结果,这是无伤大雅的。

让我们开始吧!

当你看路由器主板时,有一条既快又松的规则:中间的大芯片是处理器,旁边的小芯片是处理器电可擦可编程只读存储器. 如果有任何疑问,谷歌搜索所有芯片上的数字将有助于识别它们。在某些情况下,将有三个芯片,第三个将是内存. 一些功能更全面的设备可能会有更多的芯片。

在我们的例子中,我们正在寻找eeprom。eeprom用于存储相对少量的数据,但允许擦除和重新编程单个字节。硬件制造商可以通过擦除芯片标识符、用环氧树脂覆盖,甚至两者兼而有之来变得聪明。我们的很难读懂。

我们的目标设备上的eeprom是较小的芯片,如图左侧所示,有8“英尺”。

一旦我们丢弃了固件,我们还可以比较制造商网站上的最新固件和我们提取的固件。如果我们要寻找漏洞,在路由器上使用较旧的固件实际上会更好。它给了我们很好的提示,告诉我们在新版本中有哪些变化。补丁地址是什么?

调查eepm

我没有使用SuperEyes显微镜自带的中文应用程序,而是安装了“奶酪“在Linux。Cheese可以使用任何检测到的摄像头,所以我在首选项中选择了usb2.0摄像头,并能够在Ubuntu中使用它。

这就是事情变得模糊的地方。我们必须将eeprom的引脚映射到SOIC夹引脚,然后从SOIC夹映射到BusPirate或Shikra接口。我们可以通过芯片上的点来识别pin 1,但我们需要上网找到芯片的数据表来知道如何连接它。我在谷歌上搜索了几个数据表,没有找到一个完全匹配的。

在这一点上,我们可以使用一个示波器,但这有点超出我们的预算,所以我们打算蒙骗它,使用类似的eeprom芯片的引脚,并希望最好的。

我进行的许多搜索表明,这可能是一个千兆设备芯片。虽然似乎没有一个标准来规定哪些管脚起什么作用,但大多数数据表都有如下图表:

我通过抓取芯片连接了SOIC芯片夹。从正上方看,它看起来是这样的:

我用显微镜验证引脚是否正确就位并与eeprom的“脚”接触,例如:

我们将使用的协议读取eeprom是SPI, Shikra pin文档中有一个SPI图表。我们需要把eeprom上的引脚映射到Shikra上才能成功输出芯片中的内容。我调查了芯片上的每个缩略词,以及Shikra (SPI)的每个缩略词,并制作了一个图表,以知道哪些引脚从一个到另一个。eeprom在图表的左边;西克拉在右边。

这是成品,从芯片到夹子,通过跳线到希克拉。

在我们研究的Linux笔记本电脑上,我们可以发出命令“$ dmesg | grep tty”来确认Shikra被正确检测到并位于ttyUSB0.这是我们应该看到的输出:

我们需要一个名为闪速存储器.一个简单的“$ sudo apt-get install flashrom”就可以做到这一点。要转储固件,我们向Shikra发出以下命令" $ flashrom -p ft2232_spi:type=232H -r spidump.bin "

Flashrom将芯片识别为GD21Q16(B),有了这些知识,谷歌搜索得到了准确的数据表。要获得PDF格式的正确数据表,感觉似乎还有很长的路要走,但我们的冒险终于得到了回报。我们现在有一个转储的eeprom,我们可以继续我们的研究。我复制了与我在巴士海盗中使用Shikra所做的步骤相同的步骤,并将固件与之一起丢弃。总线盗版者确实花费了相当长的时间来卸载固件。

Flashrom在我使用《Bus Pirate》时确实有些抱怨,但它还是成功地完成了。

直到下次

现在我们有了路由器上的固件。在本系列博客的下一部分也是最后一部分中,我们将查看我们提取的固件,看看是否可以找到任何漏洞或其他有趣的更改。我们还将查看从制造商网站下载的更新固件,并对两者进行比较。