先容
来自于我演讲的择要

物联网和嵌入式设备为希望理解和评估这些设备的安全工程师带来了新的寻衅。重新的界面到不常见的操作系统和软件,在常规安全评估之外我们还须要一 些技能和工具。我将先容硬件和软件工具,包括它们相同的地方以及每个工具独特的功能。我还将会商论如何构建技能树以及如何利用嵌入式安全评估工具来进行实 际操作。

虽然有些物联网设备可以从纯软件的角度进行评估(逆向移动运用程序的工程师足以知足我们的需求),但通过与所有可用接口(常日包括不用于访问的接口,如调试和内部接口)交互可以理解该设备的更多信息。
背景
我一贯对黑客和电子产品感兴趣。我在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,但有很多选择:
Binary Ninja
IDA
Radare2
Hopper
基本工具
我认为有几种工具对付任何类型的硬件攻击都是绝对必要的。这些工具对付理解设备并访问设备上的多种类型的接口是至关主要的。
螺丝刀组
一个螺丝刀组可能是一个明显的东西,但是你须要一个具有很多钻头的螺丝刀组,可以进入狭小的空间,且尺寸与您设备上的螺丝符合。许多设备也利用“安 全螺丝钉”,这彷佛是一个术语,适用于任何不属于标准家用工具套件的螺丝钉.(我已经看到了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 (我个人最喜好的)(亚马逊)
TUMPA和TUMPA Lite (亚马逊)
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程序员被认为是“最主要的”,并且做了一个令人难以置信的事情,但它的价格使得只有定期做这件事的实验室才会以为这是值得的。
本文作者:ning1022,转载请注明来自FreeBuf.COM






