DEFCON会议27.您的车是我的车。第2部分

DEFCON会议27.您的车是我的车。第1部分

在视频的结尾,您听到了咔嗒声-它可以解锁机械方向盘锁,而这是我们无法通过电子方式解决的。有必要使用机械手段,手动破坏锁芯或进行类似的操作,而这与我的汽车无关。在我介绍完这些视频后,将在GitHub上提供这些视频中演示的所有固件,因此您只需转到幻灯片上指示的地址并下载OpenRemoteStart文件即可。

我们来谈谈将Internet添加到此系统中时会发生什么,因为它应该是有益的,对吧?正如我所说,我购买了一个名为MyCar的远程警报控制模块。它有各种版本,我有一个Linker LT-1模型。



MyCar只是一个品牌,此类模块以Linker LT-1,MyCar KIA,Visions MyCar,Carlink(CL6)等名称销售。事实证明,一段时间以来,加拿大的起亚经销商在汽车或至少一个名为MyCar KIA的应用程序上安装了该系统。有趣的是,该应用程序不再可从AppStore下载。我还想指出,我选择了Fortin和MyCar产品,但是根据自由职业汽车警报器主题论坛上的用户评论,其他系统的性能并没有改善,并且存在类似的问题。

我有一个重要的问题:为什么带有安全问题的产品在二手车警报器的二级市场上出售,它会打扰任何人吗?因此,如果您对远程启动器系统感兴趣,请注意几个重要的情况。首先,正如我前面提到的,如果DS系统未正确安装在带有机械变速器的汽车上,则很可能在远程发动机启动后,如果变速箱中有一些齿轮,汽车将在没有驾驶员的情况下行驶。这真的很危险。第二个危险是,如果有人将汽车停在与房屋相连的车库中,而他的引擎意外地开着,您可能会窒息积聚的一氧化碳。因此,如果您有DS系统和连接的车库,您绝对应该拥有一氧化碳探测器。

如果您使用的是DS系统,切勿在不知道确切位置的情况下尝试启动机器的引擎,因为后果可能是灾难性的。

MyCar是一个带有两个接线的小黑匣子,它具有8个端口,其中两个用于调试器接口。连接到该接口表明该设备正在运行Linux,制造商对此没有任何评论。使用oelinux 123密码可以很容易地进入固件外壳,但是您无需登录即可使用AE引擎,它使您可以从命令行输入AT命令,包括更改此模块与之通信的设备的IP地址的命令。



如果我们看下面的几行,我们可以看到MyCar模块从其接收固件更新的服务器的IP地址。该设备配有L端口,可让您“收听”模块接收的命令。通过使用AE引擎并更改了配对设备的IP,我能够确定该设备使用未加密的UDP协议与DS通信。

我没有特别研究这个问题,但是我认为这是一个相当重要和有趣的事实。如果您对该设备的其他信息感兴趣,请看这张幻灯片-它显示了3.3V电压,115200波特率的数据传输速率,用于更新固件的服务器地址,root密码和用户手册的链接。



该设备还可以“容忍”较高的电源电压。

就像我说的,这里可能很冷。在向女友介绍该系统大约一个月后,我决定将其从汽车中拉出并正确使用。事实是,本月我一直不由自主地想到了该设备的漏洞。下个星期他们答应将霜冻定为-30F°,所以我不得不赶时间。我连接到外壳并使其正常工作,但是由于我的家庭实验室中的蜂窝连接不是很好,因此我决定在另一台计算机上使用该设备。我使用的FTDI设备的电线很短,所以我发现了另外一根更长的电线,将其连接到DS单元,将其连接到计算机,并且一旦打开电源,我的模块就会开始冒烟!

从中我们可以吸取教训:如果您从事硬件黑客活动,请准备一个备用块!我的女友阐述了这个故事的寓意:如果您的知己是黑客,请不要让他玩您的圣诞节礼物!现在让我们来看一下该软件,我认为这里不会冒烟。



我启动了一个中间人代理服务器,关闭了手机的SSL检查,并开始观察应用程序发送到服务器部分的流量。注册时,我注意到系统使用了我的电子邮件地址并将其发送到Web服务,以确保该地址与现有帐户相关联。有趣的是,在这种情况下,系统使用了基本身份验证,因为我尚未创建帐户。我不知道如何处理这些信息,所以我只是将其写下来然后继续前进。我创建了我的帐户并登录,登录时应用程序要做的第一件事是调用Web服务来检查当前用户。因此,我只是使用我之前看到的凭据来调用此Web服务器,该凭据用于验证我的电子邮件地址是否存在,并且Mycar Admin已收到访问权限作为回应。



我怀疑这是系统的真正管理员的帐户,因为尽管声音很大,但它的特权较低。最后,我们都认识这样的人。

因此,我创建了另一个请求-EngineStart团队,从该帐户启动汽车,单击“发送”,获得命令状态-“ 200 OK”,大约三秒钟后我的汽车开始行驶。



事实证明,Mycar Admin帐户确实是一个管理员帐户,硬编码到移动应用程序中。但这还不是全部。在上一张幻灯片中,您看到了诸如API密钥之类的东西。再次,通过监视我的假代理服务器的流量,我发现可以使用这些API密钥代替用户名和密码。如果您使用“ API”和这些密钥之一作为用户名,则可以对用户进行身份验证。



因此,我复制了“ APIKey”行的内容,并将其粘贴到POST应用程序的“密码”行中,然后单击“发送”按钮。



但是,这没有用,而且很长的5分钟我都不明白为什么。最后,我突然意识到我忘记在复制的API密钥中切出引号和逗号,这是我被告知的:“您在SQL语法中犯了一个错误。”在我看来,您可以简单地使用基本SQL注入来绕过整个登录过程,并成为管理员或任何您想要的用户。我认为没有人试图使用SQL注入来偷车,所以让我们尝试去做。





通常,我使用自己的帐户登录,单击“发送”,然后收到状态“ 200 OK”。这次我意识到要录制视频。有点黑,因为我是在深夜从办公室窗户拍摄的。因此,我输入了命令,然后您通过车窗大灯底部的窗口看到了前大灯闪烁。起初,它们的灯光微弱,但随后大灯开始以全功率发光-这打开了引擎。因此,我使用SQL注入(观众的掌声)启动了汽车。

但这还不是全部。SQL注入不仅可以用于授权,还可以替换其他参数,例如URL,查询字符串主体参数等。实际上,该系统到处都使用SQL注入。查看错误消息,您可以看到我们输入的密码直接与数据库中的password列进行了比较。



这意味着它们在SQL注入中使用简单的文本密码。俗话说:“这根本不好,但甚至很糟糕!”但是,关于SQL的知识已经足够多了,让我们看看远程启动汽车还可以做些什么。您只需发送“ EngineStart”命令,然后返回一个整数标识符,它是此命令的标识符,在本例中为ID =3。知道标识符后,您可以“拉出”报告此命令状态的服务。



因此,通过增加或减少ID值,我可以“拉出”曾经发送到该系统的任何团队的状态。



但是,这并不是特别有趣,我想知道是否可以直接指示我可以用来启动汽车的物体。因此,我代表合法用户从我的帐户启动了EngineStart命令,然后尝试通过另一个不应访问该系统的用户帐户来调用它。作为响应,我收到一条错误消息:“此帐户不在层次结构的上下文中。”因此,也许这种黑客方法不起作用。但是,如果您查看此API,则会看到它重复了该信息-用户的电子邮件地址与他的帐户ID是可比的。



如果您正在开发API或修改API,那么我们在此URL中看到的信息重复可能是错误的来源。在这种情况下,API错误可以四种不同的方式表现出来。



如果查看情况2和3(用红色圆圈圈出),则可以看到指向该对象的直接链接。在这两种情况下,系统都不会检查您是否有权执行此命令。我尝试了案例2,但没有成功,但是案例3呢?在这里,我们只需要替换URL中的帐户标识符USER_EMAIL,因为它直接链接到帐户标识符ACCOUNT_ID。以前,我们使用受害者帐户标识符,而现在使用攻击者帐户。因此,我使用了黑客帐户的标识符和受害者设备的标识符,发送了命令,并按预期接收了“ 200 OK”命令的状态,并获得了对MyCar应用程序的控制权。
因此,使用三种不同的攻击媒介,我们能够完成合法应用程序用户可以执行的所有操作。这意味着您可以在城市中找到任何一辆汽车,在应用程序中设置其品牌和型号,然后远程解锁汽车并启动它。我们可以关闭或打开警报,更改车辆的服务菜单,并检查任何团队的状态。所有这一切都可以通过三种不同的方式来完成。



显然,MyCar开发人员试图以某种方式修复系统错误。因此,在使用硬编码密码的情况下,他们只是将反向代理服务器放在应用程序的前面,以隐藏用于授权的凭据。问题在于反向代理不是万能的,不能解决所有问题。他们将SQL注入保存在第三方服务中,因此即使没有密码,我仍然可以通过用户验证过程使用它。



我决定仔细研究URL的结构。您可能已经注意到,系统使用的所有地址都包含m2m。在确定这是MyCar应用程序中授权机制的某种内部交互之后,我在Google中输入了这些字母并发现了M2M Suite网站。看到此表单后,您唯一要做的就是在其中插入几个单引号,然后看看会发生什么。发生的事情是您获得了正确的SQL注入(听众鼓掌)。





在开发人员报告SQL注入问题几个月后,这种情况就发生了。如果应用程序存在此类问题,则需要尽快修复它们,但是如您所见,开发人员没有采取任何措施。对于用户如此无视,我发现它令人反感。

MyCar模块具有GPS单元,因此它可以跟踪您的汽车的位置并将其显示在应用程序中。但是,事实证明,它们不仅存储汽车的当前位置。它们存储着大量信息,远远超出了跟踪机器当前位置所需的信息。以我为例,在使用该应用程序的13天中,他们在我的汽车访问过的地方累积了不到两千个地理位置点。 MyCar开发人员的隐私政策未对此信息收集一言不发。

但是,情况进一步恶化。您可能会争辩说,这只是实现地理定位服务的副作用。但是事实是,他们不是简单地创建您的汽车所在的位置列表,而是使用另一个API来分析此数据并确定您的汽车最常使用的位置。再次,据我所知,在隐私政策中没有暗示这种功能。也许这并不奇怪,因为经过一堆搜索,我发现母公司MyCar叫做Procon Analytics,去了他们的网站并访问了FAQ部分。在这里,我遇到了一个问题:“您如何确保数据安全?”。该公司的回应是:“与争夺存储优先级的公共云环境不同,Procon Analytics使用自己的虚拟云,该虚拟云专用于我们应用程序的用户,并受到其他用户的保护。这是具有高度保护的特殊云环境,可轻松提供可用性并加快服务交付速度。通过与Procon Analytics的合作,您可以确保数据受到良好的保护。”我什至不知道该说些什么...



如果您转到他们的Facebook页面,则可以发现更多有趣的内容。他们在这里直接写道:“保护有关您的车辆的信息至关重要!”。好吧,我只能同意这一说法。

因此,回到我开始的问题:“这是如何发生的,如何避免”?更重要的是,作为一个社区,我们如何预防这种情况?

报告到此结束,但是我仍然可以回答几个问题(观众的掌声)。

您是在问他们是否已解决所有问题吗?目前,我认为他们已经解决了我报告给他们的所有错误,除了我在演讲结束时提到的隐私策略的缺点。我上次检查它时,一切都没有改变。问题是,我是否可以通过这种方式编辑ECU电子发动机控制单元的参数,我将回答我的任务是仅在MyCar应用程序中编辑汽车的参数。它存储汽车的数字表示形式,可使用直接访问对象,SQL注入或其他攻击媒介对其进行编辑。

最后一个问题是:我的车上是否有带有“启动”按钮的无钥匙发动机启动系统?在这种情况下,锁定方向盘的情况如何?我的答案是MyCar具有这样的按钮,因此该系统没有方向盘锁。我怀疑如果安装此系统,则绝对不能依靠锁来锁定方向盘。


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰,我们有2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles