今天,我将在BSides San Francisco做一个题为“物联网安全测试工具包”的演讲。我会准备一个幻灯片并且发布一篇博客去参加这个演讲,如果有我演讲的视频链接,我也将会把这个视频链接放到这个博客里。
介绍
来自于我演讲的摘要
物联网和嵌入式设备为希望了解和评估这些设备的安全工程师带来了新的挑战。从新的界面到不常见的操作系统和软件,在常规安全评估之外我们还需要一些技能和工具。我将介绍硬件和软件工具,包括它们相同的地方以及每个工具独特的功能。我还将会谈论如何构建技能树以及如何使用嵌入式安全评估工具来进行实际操作。
虽然有些物联网设备可以从纯软件的角度进行评估(逆向移动应用程序的工程师足以满足我们的需求),但通过与所有可用接口(通常包括不用于访问的接口,如调试和内部接口)交互可以了解该设备的更多信息。
背景
我一直对黑客和电子产品感兴趣。我在11岁成为无线电爱好者,在大学里,由于我的学校没有计算机安全研究领域的课程,我选择了嵌入式系统研究领域的课程。作为一名黑客,我已经看到了越来越多人对物联网设备着迷。这些设备为黑客带来了各种新挑战,其中也包括负责评估这些设备安全漏洞的工程师:
不熟悉的架构(主要是ARM和MIPS)
不常见的接口(802.15.4,Bluetooth LE等)
迷你的软件(剥离了C程序是常见的)
当然,这些挑战也为熟悉这些系统的黑客(白帽和黑帽)提供了机会。虽然在企业Web应用程序中发现内存损坏漏洞几乎闻所未闻,但在IoT设备上,Web请求使用基本C解析和服务并不少见,并且存在所有的内存管理问题。在2016年,我发现了流行的IP电话中的内存损坏漏洞。
考虑功能,而不是玩具
包括我自己在内的很多黑客都是“小男人” (或者 “小女孩”)。经常把每种可能用到的工具看作是新的工具增加到工具箱中,但是在一天结束时,必须考虑该工具如何增加新功能。其实它不需要具备完全独立的功能,也许仅仅增加了速度或稳定性。
当然,这是一个“照我说的做,而不是照我做的做”区域。实际上,我有很多具有重叠功能的设备。我很乐意比较这些设备只是为了让那些参加我的演讲或阅读这篇文章的人受益,但老实说,我喜欢我的技术玩具。
软件
大部分软件与应用程序安全性或渗透测试没有区别。例如,Wireshark通常用于网络分析(IP和蓝牙),以及用于HTTP/HTTPS的Burp Suite。
fccid.io网站在侦察设备时非常有用,提供关于所使用频率和调制的信息,以及设备的内部图片,这些图片还可以显示诸如芯片组,整体架构等信息,所有这些都不需要用螺丝刀。
逆向工程
固件镜像通常是多个文件串联起来,或包含专有的元数据头。Binwalk进入镜像,查找已知的文件签名,并提取组件。通常这将包括整个Linux文件系统,内核镜像等。
一旦您提取了这个系统,您可能有兴趣分析里面的二进制文件或其他软件。通常反汇编是有用的。我目前最喜欢的反汇编程序是Binary Ninja,但有很多选择:
基本工具
我认为有几种工具对于任何类型的硬件攻击都是绝对必要的。这些工具对于了解设备并访问设备上的多种类型的接口是至关重要的。
螺丝刀组
一个螺丝刀组可能是一个明显的东西,但是你需要一个具有很多钻头的螺丝刀组,可以进入狭小的空间,且尺寸与您设备上的螺丝相符。许多设备也使用“安全螺丝钉”,这似乎是一个术语,适用于任何不属于标准家用工具套件的螺丝钉.(我已经看到了Torx,三角形钻头,方形钻头,带有中心销的Torx等等)。
我有一个很棒的iFixit螺丝刀套件,它可以打开任何东西。扩展的螺丝刀有助于进入更小的空间,而64合1套件覆盖了所有内容。我个人喜欢支持iFixit,因为它具有很好的组装和拆解功能,但也有山寨版的iFixit。
开瓶器
许多设备都用塑料卡扣或压配在一起的部件密封。对于这些,你需要某种开瓶器(有时称为撬棒 )来撬开它们。我发现各种有用的形状。您可以将它作为iFixit,iFixit克隆或开瓶器自身组合工具套件的一部分。我发现iFixit型号的质量略高,但我也随身携带了一款适合偶尔旅行使用的廉价克隆版.
非常薄的带塑料手柄的金属手柄可能是我最喜欢的开瓶器 – 它适合最薄的开口,但因此它也非常容易弯曲。我在使用过程中遇到过它由于弯曲导致的损坏。要小心使用这些工具,并确保您的手远离它,如果被划到,虽然他们不是锋利的刀刃,但他们会划伤您的手。
万用表
我明白了,您正在寻找破解设备,而不是重新布线您的汽车。这就是说,对于许多任务来说,在我们一定需要和节约时间成本上,一个中等大小的万用表是有必要的。万用表一些任务包括:
识别未知的引脚
找到UART的接地引脚
检查哪些组件已连接
搞清楚您需要什么样的电源
检查接口上的电压以确保不会造成事故
我有几个万用表(对于电子工作来说有多个是很重要的),但是您为了研究物联网黑客攻击有一个就足够了。从性价比来看 UNI-T UT-61E是不错的,但是它的安全性评价不是很好。EEVBlog BM235是我最喜欢的,但价格比较高。如果您为了工作而购买,Fluke 87V是您最佳的选择。
如果您购买便宜的万用表,它可能适用于物联网项目,但有很多万用表存在安全隐患。请勿在“总输电线”电源,高压电源,任何从墙上出来的电源上使用这些便宜的万用表。我们不能为了节省40美元而威胁到我们的人身安全。
烙铁
在生产物联网设备上您会发现很多未填充的头(只是电路板上的孔)。各种调试接口头被省略,或者作为成本节省,或者出于空间原因,或者两者兼而有之。在开发过程中使用了这些头,但制造商经常想要留下这些连接,以避免重新印刷电路板(PCB)布局,或者能够现场调试故障。
为了连接到这些未填充的头,您会想要在他们的位置焊接您自己的头。要做到这一点,您需要一个烙铁。为了尽可能降低在此过程中损坏电路板的风险,请使用可变温度和小尖端的烙铁。Hakko FX-888D是非常流行和非常不错的选择,但您仍然可以做很好的选择,像使用this Aoyue或其他的烙铁。但是不要使用专为水管工或类似用途设计的烙铁,它会烧掉电路板。
同样,开始在您目标板上工作之前,您需要练习焊接技能。比如:找到一些小型焊接项目或者废弃电子设备进行练习。
网络接口
显然,这些设备具有网络接口。毕竟,他们被称作“Internet of Things”,所以网络连接是一个必要条件。几乎普遍存在802.11连接(有时仅在基站上),而以太网(10/100或1000)接口也非常普遍。
有线网络嗅探
要想嗅出有线网络,最简单的方法就是在你的电脑上使用第二接口。我是这款USB 3.0双千兆适配器的巨大粉丝,它甚至为那些使用新款笔记本电脑或仅支持USB-C的Macbook的用户提供USB-C版本。 任何一个选项都可以为您提供两个网络端口,即使在没有内置有线接口的笔记本电脑上也是如此。 除此之外,您需要软件来进行嗅探。Wireshark是原始数据包捕获工具,但您通常也会希望HTTP/HTTPS嗅探,因此Burp Suite是事实上的标准,但是mitmproxy是一个具有许多不错功能的新兴竞争者。
无线网络嗅探
最常见的笔记本电脑上的无线网络接口可以执行监视模式,但也许您想使用它来连接互联网,我们也可以在另一个接口上嗅探。像AWUSO36NH和AWUSO36ACH这样的Alfa无线网卡 已经很流行了一段时间,但我个人喜欢使用基于RT5370的微型适配器进行评估,因为其体积小,便于携带,所以不需要长距离的测试。
有线(调试/内部)接口
物联网设备上有许多细微的接口,它被用于调试或与各种组件之间的通信。例如:
用于闪存的SPI/I2C芯片
用于wifi的SPI/SD 芯片
用于串行控制台的UART
用于蓝牙/ wifi控制器的UART
用于调试处理器的JTAG/SWD
用于在线编程的ICSP
UART
虽然有许多通用设备可以做其他事情,但我经常碰到UART,因此我喜欢为此设置独立适配器。此外,拥有一个独立的适配器允许我在使用JTAG/SWD或其他接口的同时保持UART连接。
您可以获得价值10美元的独立电缆,可用于大多数UART接口。(在我见过的大多数设备上,UART接口为3.3v,这些电缆可以很好地工作。) 这些电缆中的大多数具有以下引脚分配,但请确保检查自己的:
红色:+ 5V(不要在大多数主板上连接)黑色:GND绿色:来自计算机的发送,来自设备的接收白色:来自计算机的接收,来自设备的发送
对于UART到USB 的FT232RL 或CH340芯片还有一些电缆外接头。这些提供了一系列头来连接目标设备和适配器之间的跳线。我更喜欢电缆的简单性(在我的测试过程中跳线端数量会减少),但这进一步证明了有很多选项可以提供相同的功能。
通用接口(JTAG / SWD / I2C / SPI)
有许多接口被称为“通用接口”,它能够与各种协议对接。这些主要分为两类:
Bit-banging微控制器
硬件接口(以FTDI的FT * 232系列为主)
有许多选项可以实现用于说明这些协议的bit-banging解决方案,从软件项目到运行在Arduino上,以及诸如使用PIC微控制器的总线海盗(Bus Pirate)等项目。这些通常向主机和应用程序提供串行接口(UART),并使用带内信号进行配置和设置。某些器件可能存在一些时序问题,因为微控制器通常无法在同一时钟周期更新多个输出引脚。
硬件接口使专用USB端点与设备对话,尽管可以配置它,但它通过USB端点和寄存器完成。协议在半专用硬件中实现。根据我的经验,这些器件比bit-banging微控制器更快,更可靠,但是你仅限于特定器件支持的任何协议,或者软件驱动它们的能力。(例如,FT * 232H系列可以通过bit-banging来执行大多数协议,但它一次更新整个寄存器,并且具有足够高的速度来运行多种协议的时钟速率。)
FT2232H和FT232H(不要与仅限于UART的FT232RL相混淆)已被纳入许多不同的分线板,这些分线板是优秀的通用接口:
Adafruit FT232 breakout (我个人最喜欢的)(亚马逊)
FTDI C232HM Cable (我的第二个最爱,最简单易用的)(亚马逊)
逻辑分析仪
当你有一个未知的协议,未知的引脚,或未知的协议设置(波特率,极性,奇偶校验等)时,逻辑分析仪可以帮助你直接查看芯片或接口之间传递的信号。
我有一个Saleae Logic 8,它是一个很棒的逻辑分析仪。它体积小,软件非常出色,易于使用。我用它来发现许多未贴标签的端口的引脚,发现UART的设置,并且窥探板上两个芯片之间的流量。
尽管在eBay或AliExpress上有廉价的山寨品,但我已经尝试过它们,质量很差,不幸的是,开源的sigrok软件并不太符合Saleae软件的质量。此外,他们基本没有输入保护,来防止您自己炸毁设备。
无线
显然,物联网拥有相当多的无线设备。其中一些设备使用WiFI(上面讨论过),但许多设备使用其他无线协议。蓝牙(特别是蓝牙LE)非常普遍,但在其他领域,例如家庭自动化,其他协议比较流行。其中很多是基于802.15.4(Zigbee,Z-Wave)或433 MHz,915 MHz或2.4 GHz ISM频段的专有协议。
蓝牙
蓝牙设备非常普遍,低功耗蓝牙(从蓝牙4.0开始)在IoT设备中非常流行。大多数不会流式传输音频,提供IP连接或者其他高带宽需求的设备似乎正在转向低能耗蓝牙,可能是由于几个原因:
更低的功耗(对电池比较友好)
更便宜的芯片组
实施简单
我推荐一个工具来评估蓝牙,那就是Ubertooth One (亚马逊)。这可以跟踪和捕获蓝牙通信,以pcap或pcap-ng格式输出,允许您将通信导入Wireshark以供以后分析。(您也可以使用其他基于pcap的工具(scapy
)来分析pcaps。)Ubertooth工具可以作为软件包在Debian,Ubuntu或Kali中使用,但是您可以从 其Github获得更新版本的软件存储库。
Adafruit还提供BLE嗅探器 ,该嗅探器仅用于低功耗蓝牙,并利用北欧半导体BLE芯片和特殊固件进行嗅探。这种软件在Windows上运行良好,但在Linux上不太好,因为它是一种比Ubertooth工具更难以使用的python脚本。
软件定义无线电
对于自定义协议或启用低级评估或基于无线电系统的攻击,软件定义无线电为与物联网设备的射频端直接交互提供了极好的机会。这可以从仅接收(出于理解和逆向工程设备的目的)到能够同时接收和发送(全双工),这取决于您的评估需求。
对于简单接收,有一些简单的DVB-T软件狗已被重新设计为通用SDR,通常称为“RTL SDR”,该名称是基于设备中存在的Realtek RTL2832U芯片。可以使用这些芯片,因为该芯片能够将原始样本提供给主机操作系统,并且由于其低成本,已经出现了一个大型的开源社区。像NooElec这样的公司现在甚至为SDR社区提供基于这些芯片的定制内置硬件。还有一个扩展了RTL-SDR dongles接收范围的套件。
为了传输,硬件要复杂得多,这个空间中的大部分选项都是由FPGA或其他强大的处理器驱动的。即使在几年前,这些功能在USRP等工具中也非常昂贵。然而,HackRF由大斯科特小工具和BladeRF通过Nuand已经价格比较便宜,大部分黑客可以接受。已经提供能力的大量黑客友好的价格。
我有一个BladeRF,但我真的希望我买了一个HackRF。HackRF具有更宽的可用频率范围(尤其是低频),而BladeRF则需要相对昂贵的上变频器来覆盖这些频段。HackRF似乎还有一个更加活跃的社区,并在开源软件的某些领域提供更好的支持。
其他有用的工具
使用示波器查看射频信号或信号完整性有时候会有用,但我在工作中基本没有使用过。专门的JTAG程序员用特定的硬件设备工作的效率比较高,但成本相对较高,这些设备专门针对这些特定的项目。
对于读取Flash芯片,Xeltec程序员被认为是“最重要的”,并且做了一个令人难以置信的工作,但它的价格使得只有定期做这件事的实验室才会觉得这是值得的。
PDF:物联网黑客工具包
*本文作者:ning1022,转载请注明来自FreeBuf.COM
来源:freebuf.com 2018-06-17 09:00:51 by: ning1022
请登录后发表评论
注册