USDT自动API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

在2019年,Mandiant的Red Team发现了Digi International的ConnectPort X2e装备中存在的一系列破绽,该破绽允许以特权用户身份远程执行代码。Mandian的研究专注于SolarCity 命名的ConnectPort X2e装备,该装备普遍用于住宅太阳能装置。

Mandiant与Digi International和SolarCity / Tesla互助,认真任地披露了研究破绽功效,获得了以下两个CVE编号:

· 硬编码凭证(CVE-2020-9306,CVSS3.0:8.8)

· 特权执行(CVE-2020-12878,CVSS3.0:8.4)

手艺细节可以在Digi International的3.2.30.6软件版本以及FireEye的Vulnerability Disclosures GitHub项目(FEYE-2020-0019和FEYE-2020-0020)中找到。

这个由两部门组成的系列博客将在更高条理上讨论我们的剖析,探索获得对ConnectPort X2e装备的接见权的手艺,并分享发现破绽的手艺细节。涉及的主题将包罗物理装备检查,调试接口探测,芯片剖析手艺,固件剖析,故障攻击和软件开发。

0x01 手艺剖析

装备概述

在深入探讨细节之前,我们将讨论ConnectPort X2e装备(在文章其他部门中称为X2e装备)。X2e装备是一个可编程网关,可毗邻到ZigBee装备并从中 *** 数据。它通常用作智能能源网关,以注释和发送来自住宅太阳能逆变器的能量读数。供应商通常会购置X2e装备并将其设置为读取客户的太阳能逆变器发生的功耗。图1概述了典型的住宅太阳能安装并突出了X2e的作用。

图1:典型的X2e住宅部署图

对于我们的研究,我们专注于SolarCity(现为Tesla)使用的X2e装备,以从住宅太阳能装置中检索数据。典型的设置将涉及SolarCity为客户提供网关,该网关将通过客户家庭 *** 上的以太网电缆毗邻到Internet。图2显示了我们测试过的SolarCity品牌的一种X2e装备。

图2:X2e装备

对于X2e装备,我们至少有两个要研究的接口:以太网接口和ZigBee无线电口。我们没有检查X2e和太阳能逆变器之间的ZigBee接口,而且该接口不会在本系列的第1部门或第2部门中先容。

0x02 物理板剖析

*** 扫描

我们从 *** 角度评估X2e装备更先了我们的研究。通过使用nmap,我们发现该装备同时开放了SSH和HTTP/HTTPS,如图3所示。

图3:X2e的端口扫描效果

在远程接见这些服务时,我们注重到这两个服务都需要身份验证。我们还举行了暴力破解,但均未乐成。此外,此装备的基础服务不容易受到破绽载荷的攻击。由于没有若干基于 *** 的线索可循,因此我们将剖析转移到硬件角度,以确定是否有可能举行任何内陆攻击来获得对该装备的初始接见权限。

物理板剖析

为了更先举行硬件剖析,我们从装备上卸下了塑料外壳,并剖析了种种集成电路(IC)组件,并搜索了潜在的调试接口。清点电路板上存在的组件(PCB)是领会器件的设计方式以及未来的预期中至关主要的一步。图4显示了映射出的组件以及一系列类似于典型3引脚通用异步发送/吸收(UART)毗邻的引脚,这是嵌入式装备上的常见调试接口。

图4:X2e组件和可疑的引脚组

若是没有与X2e装备的远程毗邻,则UART是有吸引力的目的。UART通常提供SSH或Telnet之类的服务的等效功效,并具有在系统指导时代监视详细输出的附加利益。为了确定引脚组是否为UART接口,我们首先将引脚3通孔讨论焊接到PCB上。通过将万用表的延续性测试与数字逻辑剖析仪Saleae连系使用,很显著我们现实上是在处置UART接口。图5显示了毗邻到讨论毗邻器的三个引脚(接地,TX,RX)。FTDI串行TTL-232转USB适配器毗邻到三根线的另一端,该适配器已毗邻到Linux虚拟机。

图5:毗邻到UART接口

除了准确识别UART引脚和UART至USB适配器外,我们还需要从接口读取/写入的软件以及波特率的知识。波特率有所差异,但通常遵照尺度值,包罗9600、14400、19200、38400、57600和115200。使用python模块pySerial,我们毗邻到USB适配器,并实验了尺度波特率,直到其中一种速率发生可读的ASCII输出(错误的波特率通常会发生不能读的输出),并确定X2e使用的波特率为115200。

指导X2e时,我们注重到BootROM,指导加载程序(它是常见的嵌入式指导加载程序Das U-Boot 2009.8)的输出,以及通过UART毗邻传输的Linux内核的输出,如图6所示。

图6:UART启动新闻

U-Boot的许多设置允许物理毗邻的用户(使用诸如UART之类的接口)中止指导历程的能力。然则,此设置明确禁用了该功效,如图7所示。

图7:X2e上的不中止U-Boot指导程序

中止指导加载程序对于攻击者来说很有吸引力,由于转达给Linux操作系统的指导参数通常可以举行控制以控制其加载方式,例如指导进入单用户模式或以读写方式挂载文件系统。 对于X2e,UART毗邻已映射到Linux TTY,后者需要用户名和密码验证,如图8所示。

图8:通过UART对Linux的用户身份验证

没有任何能力来中止指导历程或凭证以对X2e举行身份验证,我们面临着另一个僵局。然后,我们将剖析转移到获取存储在X2e非易失性存储中的固件上。

数据提取

在本节中,我们将先容嵌入式装备上存在的非易失性存储器(闪存)的基础知识,以及从芯片中提取内容的历程。如上所述,清点PCB上的组件是主要的第一步。图9显示了在数字显微镜下放大的PCB上存在的闪存芯片。

图9:Spansion flash的特写

图9中可见的符号很主要,由于它们使我们能够确定闪存的制造商和型号,这将有助于我们获得芯片的数据表。在我们的案例中,我们要处置的NAND是Spansion S34ML01G1,其数据表可以在此处找到。

https://datasheetspdf.com/datasheet/S34ML01G1.html

NAND概述

在讨论从NAND芯片获取固件之前,主要的是首先领会嵌入式装备通常会遵照的种种情形。

NAND与NOR相比:这些基本差其余手艺各有其优点和瑕玷。NAND价钱廉价,但遭受“坏块”或有时直接从工厂损坏的区域的可能性很高。因此,需要提供珍爱和思量因素以能够对此举行珍爱。NAND的擦除和写入速率也要快得多,异常适合存储文件系统,内核和其他可能需要重置或更改的代码。NOR具有显著更快的读取时间,但在接见数据时不那么天真,而且擦除和写入速率较低。NOR通常用于低级指导加载程序,硬编码固件blob和其他不希望频仍更改的区域。X2e使用 NAND闪存。

并行flash:这是指若何接见数据,而且通常在视觉上可识别。若是有大量的引脚,则flash很可能是并行的。串行NOR芯片的尺寸可能很小,通常需要八个或更少的引脚即可事情。常见的串行接口为串行外围装备接口(SPI)或集成电路间(I2C),而NAND的常见并行接口为开放式NAND闪存接口(ONFI2.0,ONFI3.0)。X2e是并行flash。

形状尺寸:另一种视觉上可识其余特征-形状尺寸是指芯片若何毗邻到PCB。有很长的选项列表在这里,但常见的外面贴装闪存包包罗小形状封装(SOP),薄小形状封装(TOSP),或球栅阵列(BGA *)的变体。这里的主要区别是SOP和TOSP露出引脚,而BGA则将引脚隐藏在封装下。X2e是 BGA63,也称为63引脚BGA封装。

受管与非受管闪存:由于NAND与NOR中提到的缘故原由,该闪存更适用于NAND。如前所述,NAND需要辅助来治理数据的完整性。对于非托管NAND,IC会将闪存的部门(通常称为“备用”区域)保留给其他人来治理数据。通常将实在现为内核驱动程序或外部NAND控制器。托管NAND意味着IC封装包罗控制器并透明地治理数据。这在嵌入式装备中极为常见,例如嵌入式MMC(eMMC)或通用闪存(UFS)。X2e使用 不受治理的闪存,并由PCB上的主微控制器控制。

,

Usdt第三方支付平台

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

在不领会基础知识的情形下,我们继续从PCB上物理移除了芯片。

芯片拆卸

物理取下芯片被以为是一种损坏性方式,然则可以在不损坏PCB或闪存芯片自己的情形下执行。当提出去除BGA封装时,两种最常见的去除手艺是热空气或红外光(IR)。对于热空气和红外都存在商业解决方案,然则通过热空气去除存在更廉价的选择。我们选择在X2e上使用热空气。

为了最洪水平地削减对PCB和flash的损坏,可以使用PCB加热器或热风枪

将整个PCB缓慢加热到正好低于焊料熔点的温度。这将削减我们将热空气直接聚焦在闪存IC上所需的时间,并有助于削减整个历程中散发到PCB中的热量。

可以用来使周围的切屑不被损坏或丢失(由于气压)最小化的最后一个技巧是使用高耐热胶带,通常被称为Kapton胶带。图10显示了用Kapton胶带包裹的PCB,以珍爱周围的组件。

图10:PCB上的高耐热胶带

图11显示了将X2e PCB插入PCB加热器且热风枪悬挂在IC上方的示例设置。

图11:热风枪

在使用热空气加热IC及其周围区域的同时,我们轻轻地轻推flash以查看焊料是否已熔化。一旦芯片浮起,我们迅速将其取出并冷却约30秒钟。图12显示了ICflash已从PCB上移走,而焊料仍存在于BGA焊盘上。

图12:从X2e卸下的NAND

在将NAND插入编程器的读卡器之前,必须将剩余的焊料从闪存中祛除。这可以通过使用烙铁,优质助焊剂和去焊芯来实现。异丙醇和牙刷一经祛除,在祛除残留的助焊剂残留物和清洁切屑方面异常有用。

在下一节中,我们将实验使用多功效芯片编程器从NAND芯片中提取数据。

数据提取

有了清洁过的闪存芯片,我们现在可以探索读取原始内容的选项。存在商业取证装备,然则快速的eBay或AliExpress搜索将发生大量的通用芯片读取器。一种这样的装备XGecu Pro支持种种适配器和芯片组,并使用USB毗邻到Windows盘算机。它还带有与XGecu Pro交互的软件,甚至可以自动检测flash。为了将Spansion NAND毗邻到XGecu Pro,我们还购置了翻盖式BGA63适配器。图13显示了插入翻盖式读取器的NAND,图14显示了毗邻到XGecu Pro装备的翻盖式适配器。

图13:BGA翻盖式适配器中的Spansion NAND

图14:毗邻到XGecu的NAND适配器

使用XGecu Pro软件,我们可以将闪存的所有内容读取到二进制文件中以举行进一步剖析。由于这些不是商业解决方案,因此更好执行两次或三次读取,然后对提取内容举行差异化处置,以确保内容无误地被读取。

0x03 固件剖析

固件剖析

有了新的NAND转储文件,下一步就是剖析所有相关的固件blob,设置或文件系统。启动此历程的必备工具是binwalk。binwalk在检测文件系统,指导加载程序和内核方面做得异常精彩。此外,binwalk可以盘算熵(检测打包或加密的数据)并识别程序集操作码。图15显示了针对NAND转储文件运行binwalk的部门输出。

图15:针对NAND转储的初始binwalk扫描数据

从输出中我们可以看到binwalk乐成地确定了它所扫描出的U-Boot uImage标头,Linux内核映像以及十多个Journaling Flash File System版本2(JFFS2)文件系统。JFFS2是嵌入式装备中使用的通用文件系统。未排序的块映像文件系统(UBIFS)和SquashFS也很常见。

乍一看似乎是有希望的。然则,我们的NAND上现实上不存在JFFS2文件系统。另一个不完全准确的指示是十六进制偏移量,它们似乎不是清洁的偏移量。由binwalk标识的项目的偏移量与NAND页面偏移量对齐是更为常见的,NAND页面偏移量是2048的倍数。

为了领会此处发生的情形,我们需要重新审阅“ NAND概述”部门所述的原始NAND IC的特征。归纳综合地说,原始NAND每页需要分外的字节,供更高级其余组件用来证实该页的有用性,通常以界说的“坏块”符号和每页(或子页)的纠错码( ECC)。ECC无需太深入探讨ECC基础知识,它为高级历程提供了检测页面上n个坏位并校正m个位的能力。

由于我们的目的不是对原始NAND执行取证,因此我们的近期目的是从NAND转储中删除ECC字节或其他与数据无关的字节。MCU最终是操作原始NAND的系统,因此领会恩智浦iMX28系列MCU的MCU若何治理NAND对于实现这一点至关主要。

对我们来说幸运的是,平安社区已经探索了此历程,而且存在iMX剖析库来操作原始NAND转储并删除现有的无关数据。图16显示了在imx-nand-convert剧本的输出上重新运行binwalk的效果。

图16:牢靠NAND转储的binwalk扫描

这次,我们仅看到一个JFFS2文件系统,其偏移量为0x880000。使用binwalk的提取(-e)功效,我们现在可以获得U-Boot指导加载程序,Linux内核和JFFS2系统的剖析版本。

我们需要战胜的最后一个障碍是以一种允许我们探索内容的方式来安装提取的JFFS2文件系统。在Linux上,执行此操作最简朴的方式是使用mtd,mtdblock和nandsim 内核模块。所述nandsim模块模拟给定NAND装备并使用该MTD和JFFS2子系统来剖析和适当地治理。需要转达给nandsim模块的要害信息是ONFI芯片标识符,该标识符可以从NAND数据表获得,也可以通过使用通用读取器(如数据提取中使用的XGecu Pro)从IC请求ID来获得部门)。受支持的ID的列表也由mtd 维护。准确设置参数有些运气,可能需要编译自己的nandsim模块版本,该历程将不在本文中讨论。

图17显示了模拟准确的Spansion NAND并以Makefile目的的形式挂载JFFS2文件系统所需的步骤。

图17:挂载JFFS2文件系统的Makefile目的

通过运行make mount-jffs2,我们可以快速准备和挂载JFFS2文件系统,并像浏览文件系统一样浏览内容。

接见文件系统

在本文的最后一部门,我们将逐步剖析JFFS2文件系统。请记着,我们的最终目的是获得一个可远程行使的破绽,该破绽将允许特权代码执行。思量到这一点,某些感兴趣的领域正在运行守护程序/历程,系统启动逻辑以及用于侦听 *** 的服务的凭证。第一部门是查看/ etc / shadow文件,以查看是否有root用户和其他系统用户的密码哈希。快速检查此文件后,确定root用户没有密码哈希,这解释我们将无法使用密码身份验证举行身份验证。我们注重到存在另外两个密码哈希,划分是addpd和python用户,如图18所示。

图18:/ etc / shadow的毗邻

该addpd用户有一个默认密码,然则无法使用远程方式举行身份验证,而我们最终无法破解的python使用内部基于GPU的服务器用户的哈希值。

此外,我们对在系统指导或指导后启动的历程感兴趣。目录/ WEB / python /包罗一个名为_x2e.zip的ZIP存档,其中包罗200多个编译的Python剧本(PYC文件),这些剧本在系统启动时加载。使用反编译器uncompyle2,我们将这些文件解压缩以供查看。一个名称突出的文件是password_manager.pyc,该文件用于在乐成启动后重置登录密码。该文件包罗五个映射到python的硬编码和纯文本凭证系统用户。这些凭证可用于接见Web界面和SSH,如图19所示。Mandiant确认将差其余密码用于差其余版本和毗邻状态。Mandiant向SolarCity讲述了此问题,并被分配了CVE编号CVE-2020-9306。

 

图19:password_manager.pyc中的硬编码凭证

使用准确的密码,我们终于能够毗邻到正在运行的X2e上的Web和SSH端口,但不幸的是,只有作为特权较低的python系统用户。只管这是一个不错的更先,但它并不能知足我们的最终目的,即以特权用户的身份远程接受X2e。在本系列的第二部门中,我们将探索进一步攻击X2e的其他途径。

0x04 剖析总结

在这个由两部门组成的博客系列的第1部门中,我们概述了X2e,我们最初的 *** 扫描,PCB检查手艺,物理调试接口探测,拆卸读取手艺和固件剖析。使用这些方式,由于硬编码凭证破绽(CVE-2020-9306),我们乐成地以非治理用户的身份远程接入了X2e装备。在第二部门中,我们将以故障攻击的形式重新研究针对X2e的物理攻击,重新探索U-Boot指导加载程序,最后展示一种攻击,以特权用户的身份远程接受X2e装备。

本文翻译自:https://sec.today/pulses/33b2273c-5956-4643-bbf8-6520cebef45f/: Allbet Gaming声明:该文看法仅代表作者自己,与www.allbetgame.us无关。转载请注明:usdt不用实名交易(www.payusdt.vip):ConnectPort X2e IoT 网关装备破绽剖析及行使(part1)
发布评论

分享到:

trc20交易所(www.payusdt.vip):江西新增确诊病例,同乘一辆火车的人都去哪儿了?
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。