DEFCON 27 Conference。Buttplug:真正的渗透测试。第1部分

分析人士认为,目前大约有100亿来自物联网(IoT)的设备。有时,这些设备在市场上占有一席之地,从字面上讲是在攀登人类。事实证明,便宜,低功耗的无线电芯片不仅非常适合家庭自动化,而且还改变了人们与性玩具互动的方式。在本报告中,我们将深入探讨电视迪拉尼克世界,这是一种在两性之间通过双向通信线在伴侣之间传递触觉,温度和其他感觉的技术。演讲者将告诉您,Buttplug电子电子肛门性玩具的安全性可能与攻击者相对,后者发现并利用堆栈中每个级别的漏洞。最终,这使性玩具本身受到损害,以及它们连接的设备。



绰号为smea或Smealum的黑客开始了他的职业生涯,最初是为诸如Nintendo DS之类的游戏机开发视频游戏,同时试图破解它们。在某些时候,这些控制台获得了严格的安全系统,Smea从本地开发的软件转向了破解该软件的技术。 Smea以其在Nintendo 3DS和Wii U上的“工作”而闻名,尽管它也为最流行的Web浏览器和虚拟化堆栈的漏洞利用开发做出了贡献。大概,现在他对打入“智能”肛门塞感兴趣了。

大家好,我是Smia,今天我们将讨论如何破解启动插件。这是我手握的物体,我不知道您以前是否看过,我个人不知道。但是在过去的两年中,我遇到了许多有趣的物联网行业代表,所以现在事情来了。您可能想知道如何破解启动插头,因为它只是一块硅胶,需要插入某个地方,并且您会同意这样做的地方并不多。

实际上,这不需要任何电子设备。但是,在过去的几年甚至几十年中,出现了一种叫做Teledildonika的电子设备新产业。幻灯片上显示了该术语的由来:希腊词“ tele”的意思是“远处”,而英语“ dildo”的意思只不过是假阳具。我试图找到假阳具这个词的起源,但没人知道它是从哪里来的。但这是可以理解的,对吗?这个想法是,您想要制作可以从远处控制的性玩具。

有几种方案。我只想向您解释这是如何工作的,因为不是每个人都对这种设备熟悉。因此,您可以拿起Bootplag,在必要时将其插入,并可以从手机,笔记本电脑等任何位置进行远程控制。这是第一个称为“独奏”的场景。我称为“本地多人游戏”的第二种情况-这是当您将事物的控制权转让给其他人时。这是经常刊登广告的非常真实的东西-例如,您可以和她一起去一家酒吧,没有人会知道它有多有趣。但是从技术上讲,这会创建一个新的攻击媒介,因为您将设备的控制权交给了局外人,威胁模型在此发生了改变。

第三种情况“远程多人游戏”与第二种情况类似,只是现在您允许其他人通过Internet控制设备。请记住,这个人可能是一个陌生人。



对于许多人来说,远距离做爱看起来很酷很有趣,而且我不会开玩笑。有些人使用远程电子设备谋生,方案3B被称为“远程多人游戏”。因此,我试图破解对接插头的事实不仅是娱乐,它还为我的渗透研究提供了一定的理由。



很多人,我不知道该怎么称呼他们-男孩,女孩-在互联网上提供动态的性娱乐,允许其他人以金钱控制自己的性玩具。生产这些枪托的公司拥有将其产品用于互联网上性游戏时扣除利润概念的专利。在这种情况下,对于5美元的扣除额,您有权在Twitter上放置一个链接,例如,以便某人有机会在有限的时间内管理您的bootplag。在我看来,由于人们依靠这些玩具作为赚钱的工具,因此考虑到其安全性非常重要。

让我们看一下攻击者感兴趣的场景。第一种是本地黑客,当设备范围内的攻击者通过无线通信拦截对它的控制时。有关这种黑客方法的研究很多,因此我们不会一直关注它。



从技术上讲,这种干预可以被视为性虐待,因此,无论合法与否,都不要尝试这样做。根据以下情况,攻击者可以通过Internet远程执行相同的操作。正如我已经说过的,如果您能那样赚钱,那么您可以自愿提供一个陌生人-攻击者可以远程访问您的性玩具。

这意味着黑客可以破坏您的“智能”性玩具或相关设备,简而言之,对您有害,并且完全合法,因为您自己就可以访问他。对于黑客来说,这是一个更有趣的选择,因此我们将在其上保留更长的时间。



第三种情况则相反:攻击者本人使用启动插件来控制位于使用该插件远程参与游戏的用户一侧的计算机或电话以及黑客设备。人们不了解这是真正的风险,但是您可能想像到可能会有阴险的对接插头(在大厅大笑)。我们也在探索这种情况。



现在您已经了解了远程电子世界的概念,让我们来看一下它在实践中的外观。在幻灯片上,您会看到一个名为Lovense Hush的假阳具模型,稍后我将向您展示一个演示该内容的演示。这是世界上第一种假阳具-teledildonics型号,可以通过手机或计算机控制肛门插头。此引导插件有适用于IoS和Android的应用程序,您可以从运行Mac OS和Windows的计算机上对其进行控制。移动应用程序支持社交功能,例如聊天,共享文本,图片,视频以及与朋友或陌生人控制玩具。



对于Windows,您需要使用特殊的USB密钥,稍后将显示该密钥,因为现在此启动插件已连接到我的计算机。电子闪存盘钥匙由同一公司洛夫斯开发,该公司是引导插件的制造商,该公司创建了自己的“智能”假阳具生态系统,并在互联网上花费了约5美元的佣金。



以下幻灯片显示了我对使用PC应用程序对启动插件进行攻击的愿景。引导插头和USB钥匙之间存在BLE(蓝牙低能耗)连接,该钥匙连接到用户的计算机,而用户计算机又连接到Internet。攻击者在引导插件USB密钥部分使用第一种情况,即BLE连接受到攻击。实际上,没有任何保护措施,因此任何陌生人都可以控制该玩具。去年,对名为BTLE Jack的工具进行了认真的讨论,该工具可让您成功攻击这种连接。



第二种情况是攻击用户计算机的Internet连接的一部分。第三种情况是尝试入侵这三个站点中的任何一个:BLE,USB,Internet。可能有一个开放的项目Buttplug ...你可以笑,这是个玩笑。那么,我们从哪里开始“真正的渗透测试”呢?



我没有为假阳具和加密狗本身找到任何代码或二进制文件,但是有用于移动设备和计算机的二进制应用程序文件可从Internet上下载。我在计算机上安装了这些文件并开始使用它们。在下一张幻灯片上,您将看到用于管理启动插件的应用程序界面。屏幕中央有一个滑块,用于调节玩具的振动,左侧是带有按钮的控制面板-访问帐户,局域网上的控制模式,通过Internet的远程控制模式。为了了解应用程序的结构,您只需要阅读一些令人困惑的JavaScript代码。



我不喜欢JavaScript,但是这样做的好处是存在大量的变量名和对象字段名,并且所有这些都经过了反向工程。只需将代码放在Beautifier中,并了解其工作原理。完成此操作后,您可以开始了解电子钥匙的操作。



发现这只是用于通过USB连接的串行端口后,我开始嗅探密钥和应用程序之间的通信。请注意幻灯片右侧的行-首先,我注意到加密狗和应用程序之间的消息是JSON文本格式。对于JavaScript代码来说,这是很熟悉的,但是对于USB密钥(这是32位微控制器)来说,嵌入JSON解析器看起来很奇怪。对于我们来说,这非常方便,因为JSON解析器通常包含可以使用的固件错误。



但是,查找没有密钥代码本身的错误是一项繁琐的任务,但是由于有了应用程序代码,我开始寻找一种用于更新USB密钥固件的机制,并很快找到了我想要的-更新节点的URL。事实证明,该固件未进行任何加密或签名,因此我下载了该固件并获取了二进制文件进行分析。



然后,我开始进行逆向工程,并提请注意两件事。首先,串行USB端口有2个命令处理程序。第一个使用简单的命令(例如,重置或设备类型),第二个使用例如DFU的命令来更新设备的固件,因此我们能够发送这些命令并更新固件。



查看了我们最感兴趣的JSON解析器后,我发现了预期的错误-parseJsonString函数。它只需要将原始字符串的副本分配到新缓冲区中,还可以使用转义序列之类的东西。计算新缓冲区的长度时,它与实际使用的长度不匹配。



此函数的工作方式如下:它支持5个参数U的转义序列,而不是预期的等于0的序列。因此,我们可以避免以零结尾的字符串,并使第一个计算出的字符串的长度不正确。



这个小动画显示了这里发生的事情。 U之前的反斜杠表示必须丢弃6个字符。接下来,该函数跳过空终止符,这是一个问题。然后,该过程继续,所有字符都被复制并以只有6个字节的长度落入缓冲区。这里出现第二个问题-缓冲区溢出的风险。很好,但是我们仍然不知道加密狗硬件的工作方式。



我们可以肯定地知道,它没有ASLR地址空间的随机化,也没有cookie堆栈,但是密钥可能具有保护功能,例如DEP数据执行保护或XN保护,可以防止内存中的代码执行(.text区域除外)。

该钥匙配备了带有Cortex M0处理器的NRF51822 SoC芯片,没有DEP保护,这在BLE设备中非常流行,并且配备了许多调试触点。因此,通过焊接一些东西来连接到此键非常简单,如果未在出厂设置中禁用它,则可以通过用于调试和刷新SWD芯片的接口进行调试。通过SWD连接,我们可以刷新堆内容。

事实证明,它仅用于JSON解析器,虽然不是很酷,但是堆包含元数据。那么,这里可以宠坏什么呢?当然,堆元数据!这样,我们为JSON解析器创建了一个利用。



堆只是一个空闲列表。如果看这段代码,您会看到每个发行版都有其自己的长度和指针。如果使用缓冲区溢出,则可以破坏下一个指针的长度和位置,从而可以控制下一个分发的位置。通过将新行复制到其中,您可以轻松地在任意位置排列任意数据。所有这些都可以在连接调试器时完成。



在幻灯片的右侧,您会看到一个已重置的堆栈,仅用8个字符完全覆盖了堆栈。这使我们可以执行USB密钥代码,这非常酷。
我记得很遗憾,此加密狗具有紧急DFU固件更新模式。我希望通过类似于黑客入侵游戏机的方式,该模式可以以任何可能的方式对更新进行身份验证。事实证明,这里的DFU使用经典的CRC16校验和计算,如果您了解加密技术,则它不是任何形式的身份验证。我认为他们并不是真的想在这种情况下使用身份验证,他们很可能只是认为很少有人会对执行引导插头的USB密钥代码感兴趣。但是,它使我感兴趣。



目前,我有2种不同的方法可以在此设备上执行代码,但是由于花了很多时间而困扰于JSON解析器,由于DFU模式的存在,效果并不特别好。稍后,我们将与现有的解析器漏洞一起考虑此方法。到目前为止,我对是否可以简单地修改main.bin文件,重新计算其CRC16以及使用Lovense Remote应用程序中包含的程序将其嵌入的内容更加感兴趣。事实证明这是可能的。
结果,我们得到了一个USB密钥,该密钥已被PC应用程序破坏,这绝对是最容易破解的部分。获得了密钥的控制权后,我开始寻找一种在引导插件本身上执行代码的方法。



为此,我转向了性玩具的“硬件”-可能还带有调试器,值得一看。检查了启动插头后,我发现了一块更严肃的芯片,带有大量的闪存和RAM,以及功能更强大的Cortex M4处理器。

我轻松地找出了行李箱上缺少的东西以及行李箱上的东西。没有DEP,就像在软件狗上一样,顶部有连接电池的电线,其次是充电端口,振动电机的触点,用于调试的多个接触垫和蓝牙天线。因此,由于存在SWD,因此可以轻松地刷新设备。



您知道发生了什么-我没有股东,但是在袋子里总会有一堆用于实验的对接塞。然后,我开始进行逆向工程和调试Bootplag,重置原始固件。没有JSON解析器,只有简单的命令,但数量很多。

我以为,如果加密狗固件更新模式是如此不安全,则可能存在漏洞。原来是这样。作为DFU搜索的结果,我发现了两件事:常规DFU命令处理程序和引导扇区中的DfuTarg行。此DfuTarg的使用方式与LVS-Z00引导插件的标识符相同,即,它类似于BLE的DFU引导程序。因此,在DFU模式下,引导日志被识别为设备,名称为DfuTarg,并且该唯一标识符可用于搜索设备。
因此,如果您向他发送与发送给密钥的DFU命令完全相同的DFU命令,则Bootplag将进入设备固件更新模式。要进行闪烁,可以使用Nordic Semiconductor微电路制造商的专有工具-nRF Toolbox。



使用硬件嗅探器,您可以在Wireshark中可视化BLE数据包。



我发送了一条短消息“您好,即插即用”,这意味着您可以在batplag上执行代码而不会受到任何黑客攻击,这不是漏洞,而只是一种允许您刷新设备的开发人员设计。也许开源社区会喜欢这种解决方案。最重要的是,任何可以连接到您的启动插件的人都可以在其上运行自己的代码,这已经是相当危险的事情。在这种情况下,黑客应位于本地连接区域内,即与性玩具足够近,以通过受损的加密狗和BLE通道对其进行控制。同时,您可以使用加密狗本身或任何其他BLE设备。



问题是,如果有机会在该启动插件上运行自己的代码,那么使用启动插件实际上可以做什么?我有一些想法。首先-控制此事,您可以创建勒索软件bootplag。您可以修改其固件,以便用户无法打开DFU模式,除非您向他提供特定的密钥,或者您只是关闭振动功能并要求50美元以解锁此有用的设备。



对于许多人来说,这将是使用此类玩具的一种疫苗。第二个想法是将后备箱变成武器。它具有为振动电机供电的相当强大的电池,可以说,启动插头的内容中有80%是电池。您可能还记得三星Galaxy Note智能手机发生了什么-它们只是爆炸了(笑),所以很可能会发生这种情况。我不知道爆炸的可能性是多少,但是如果您有很多带有电机的性玩具,则应该考虑一下。开发团队声称,尽管存在许多运动部件,但这些东西绝对是安全的。但是,在这种情况下,设备的安全性功能是用软件而非硬件编码的。在这种情况下,恶意代码的执行可能会带来灾难性的后果。

配备气泵的性玩具也很危险。它们还具有带电池的强大电动机,因此您也应注意它们。
最后,最后一个想法是一个敌对的战斗插件。充满敌意,并不是从某种意义上说它可以炸毁您的屁股,而是可以将它用作入侵您其余设备的一种手段。因此,我们将从其敌意的角度考虑战斗插件,这可以通过执行恶意代码来确保。

让我们尝试通过考虑启动插件如何处理传入消息来找出是否有可能在应用程序中为启动插件实现代码执行。



在左侧,您可以看到JavaScript的回调,而在右侧,您可以看到它如何通过串行端口与应用程序交互。回调放置在字符串中,然后由一堆不同的函数处理。

第一个功能是查找密钥,它处理来自密钥的初始化消息。第二个功能处于启用状态(“数据”),该处理功能接受传入的JSON数据包,顺便说一下,其长度不能超过32个字符。接下来,进行解析,然后完成其他所有操作。实际上,这里没有认真的处理-只是要求设备状态,检查电池电量等开销。

最后一个功能更有趣-我将其称为调试日志,尽管实际上它在实际代码中没有名称。此功能将注册所有通过串行端口进入设备的内容,并将这些线路重置到控制台,控制台将在必要时显示错误消息。另外,此函数创建一个新的DOM元素作为HTML元素,并将通过串行端口接收的所有内容扔到此HTML中。我不是Web开发人员,但是我认为这是一个严重的XSS漏洞。

因此,如果您可以控制加密狗,则可以通过串行端口发送任何内容,从而迫使应用程序将其解释为HTML。这是问题所在,因为HTML能够在计算机上安装的应用程序中创建新的JavaScript代码,也就是说,它可能会危害它。问题是,知道一次只允许32个字符,可以发明什么恶意软件。

22:00分钟

DEFCON 27会议Buttplug:真正的渗透测试。第2部分


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的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