OpenSesame:一个能够攻击fixed-pin设备的工具

简介: OpenSesame是一种设备,这种设备可以通过无线技术来打开任何一个设有固定密码的车库门,我从中发现了一个攻击无线固定pin码设备的新方法。 演示视频以及详细信息: opensesame源代码:https://github.com/samyk/opensesame 防御措施:如果你所使用的大门或车库门带有“固定密码”,那么为了防范这种类型的攻击,你需要确保你的系统已升级至最新版本,并且使用的是滚动码,跳转码,Security+或者智能码。

OpenSesame是一种设备,这种设备可以通过无线技术来打开任何一个设有固定密码的车库门,我从中发现了一个攻击无线固定pin码设备的新方法。

演示视频以及详细信息:

opensesame源代码:https://github.com/samyk/opensesame

防御措施:如果你所使用的大门或车库门带有“固定密码”,那么为了防范这种类型的攻击,你需要确保你的系统已升级至最新版本,并且使用的是滚动码,跳转码,Security+或者智能码。这些措施虽然不能保证万无一失,但确实可以防止OpenSesame所发起的传统暴力破解攻击。

犯罪分子:为了防止代码被滥用,我所披露的代码是经过修改的。如果你是RF和微控制器方面的专家,你也许可以对这些代码进行修复,但你也许从一开始就不需要我所提供的这些帮助了,对吗?

   性能

OpenSesame不仅会利用无线车库和大门中固定pin码的有限密钥空间,而且我发现,它还会通过这种新型的攻击方式将打开车库大门的时间缩短95%。这就意味着,你只需要几秒钟便可以打开大多数的车库大门了。

OpenSesame采用的是Mattel公司的短信工具Radica Girltech IM-ME,这个工具支持所有我们发动攻击所需要的设备,这些设备包括一个高效的TI CC1110 sub-GHz RF芯片,一台LCD显示器,键盘,背光照明装置等等。

这个工具是在巨人的肩膀上开发出来的,其中包括由Michael Ossmann开发的原始版本的opensesame,IM-ME代码,Dave开发出的IM-ME LCD逆向工程技术,还有Mike Ryan提出的高效思想。在文章结尾提供了参考链接以及参考资源。

注意,通过使用滚动码是无法打开车库门的。带有滚动码技术(通常称之为“智能码”,“Security+”,“跳转码”等等)的车库会比那些使用固定pin码的车库更加的安全,但也有可能受到其他种类攻击的影响。

主要的问题

查看OpenSesame攻击的会话信息。固定码系统中显而易见的漏洞就是这种系统的密钥空间是十分有限的。比如说,一个支持12位码值的车库可能会包含12位的可能组合。这是一个固定密码能够打开你的车库大门的关键。既然它的二进制代码的长度为12位,那么就存在有4096种可能的组合。

就暴力破解而言,破解网站中一个含有两个字符的密码要比破解12位长度的二进制车库开关要难上两倍或者更多。这是我们在OpenSesame攻击的攻击会话中发现的一个最基本的问题。

在常见的车库和遥控器中,我们准备使用长度在8-12位之间的码值进行研究,然后我们发现,一个遥控器发送了五次同样的代码,并且我们发现每一位数值的发送时间需要2毫秒,然后在所有数值发送完成之后,会有一个2毫秒的等待周期。所以,一个12位的密码组合可能会需要(12位 * 2毫秒传输时间 * 2毫秒等待时间 * 5次 = 240毫秒)。如果对所有的8,9,10,11和12位密钥空间执行暴力破解,那么情况就会是下面这样:

(((2 ** 12)*12) + ((2 ** 11)*11) + ((2 ** 10)*10) + ((2 ** 9)*9) + ((2 ** 8)*8)) = 88576位

88576位* 4毫秒 * 5传输时间 = 1771.52秒 = 29分钟

所以,打开一个8-12位密码的车库大门会需要29分钟(假设你已经知道了遥控的频率和波特率,这两个参数都是很常见的)。如果你已经尝试了几种不同的频率和波特率,那么你所需要的时间可能会是很多个29分钟。

虽然这算不上很糟糕,但我们可以做得更好。

初始还原

我们在还原操作中最先尝试的就是移除转发机制。代码我们只传输一次,而不是同原先一样每次传输都要发送5次信号。传输多次数值信号能够帮助遥控器检测信号,防止干扰。

1771.52秒 / 5 = 354.304秒 = ~6分钟

干的漂亮!

现在,当我们在对车库进行暴力破解测试时,我与某人进行了交谈,Mike Ryan建议我将代码传输期间的等待周期移除掉,然后看看我是否还能够连续传输每一个代码。

这样是可以实现的,而且将传输所有代码所耗的时间缩短了将近50%!这简直难以置信。

1771.52秒 / 5 / 2 = 177.152 秒 = ~3 分钟

虽然这算不上很糟糕,但我们可以做得更好。

OpenSesame攻击

当我们查看我们所发送的数据之后,我们现在将发送连续的比特流。例如:

  • (code #1) 000000000000

  • (code #2) 000000000001

  • (code #3) 000000000010

  • (code #4) 000000000011 等等, 外观看起来如下:000000000000000000000001000000000010000000000011

硬件

Im-ME

Mattel公司的IM-ME工具已经停产了,但还是可以在亚马逊或者eBay网站上购买到,价格从12$到100$不等。

这种工具最初是用于好友间通讯的。它使用了CC1110,一种sub-GHz RF SoC,以及LCD显示器,背光照明设备以及电源装置等等,这些对于黑客来说都是极其有用的,他们可以用这个设备来向他们的好友发送信息,或者攻击他们的好友。

现在,我们便可以制作我们自己的设备了,但令人欣慰的是,这些所有我们所需要的东西已经全部打包好了。

GoodFET

我使用了Travis Goodspeed的GoodFET设备来为IM-ME进行编程。

GIMME

软件

OpenSesame

OpenSesame完整的源代码可以从我的github上获取得到:

https://github.com/samyk/opensesame

这个工程完全基于Michael Ossmann的opensesame项目,该项目上专用于破解车库的固定码的,而且它是OOK/ASK传输器的一个很好的样板。同样的,这个名字是如此漂亮,以至于我不得不使用它,我希望Mike不要介意。

goodfet.cc

正如我在硬件篇中所说的,我们使用GoodFET来加载代码,然后使用goodfet.cc来加载Chipcon设备。

频率,调制,解码器

频率

目前,我们的假设是,这些固定pin码的车库和大门的频率范围跨度很宽。例如,根据维基百科的描述,这种无线设备的频率为300MHz至400MHz,这就要求我们发送100个额外的相同频率信号。然而,经过研究,我们发现只有下列这些频率是设备主要使用的:300MHz, 310MHz, 315MHz, 318MHz和390MHz。

调制

你可以发现,实际上所有的这些传输器都使用了ASK/OOK来传输数据。除此之外,很多信号接收器都支持使用OOK信号。这些可以通过对几款车库门的控制器进行测试而得到证实。

编码器

下面是一个名单列表,名单中列出了在此类系统中使用的最多的编码器名称:

 PT2262, PT2264, SC2260, CS5211, PT2282, PT2240, eV1527, RT1527, FP527, HS527, SCL1527, MC145026, AX5326, VD5026, SMC926, SMC918, PLC168, HCS300, HCS301, HCS201

资源

下面列出了一些可用资源和工具,我所学习到的东西大多数都是从下面这些资源中得到的,我相信你也可以从中学到很多东西。建议阅读或使用的工具如下:

联系我们

点击联系:@SamyKamkar

你可以在http://samy.pl中查看我更多的项目和工程,或者通过code@samy.pl与我联系。

谢谢大家!

 

相关文章
|
编译器 芯片
单片机(MCU)如何才能不死机之对齐访问(Aligned Access)
单片机(MCU)如何才能不死机之对齐访问(Aligned Access)
|
6月前
|
安全 网络安全 数据库
LabVIEW NI网络设备在MAX中不显示或未识别
LabVIEW NI网络设备在MAX中不显示或未识别
249 4
|
6月前
|
Java Android开发
Android Mediatek 禁用 USB 权限请求和声音提示 & 解决USB HID设备不识别问题(附带USB调试过程)
Android Mediatek 禁用 USB 权限请求和声音提示 & 解决USB HID设备不识别问题(附带USB调试过程)
209 0
西门子S7-200 SMART如何用存储卡复位CPU出厂设置、固件升级、程序传输
上篇文章中我们学习了西门子S7-200 SMART的全局变量和局部变量以及如何编写带参数子程序并调用,本篇我们来介绍西门子S7-200 SMART使用存储卡复位CPU到出厂设置、固件升级和程序传输。S7-200 SMART CPU使用FAT32文件系统格式,支持容量为4G至32G范围内的标准商用MicroSD HC卡。
西门子S7-200 SMART如何用存储卡复位CPU出厂设置、固件升级、程序传输
|
传感器
STM32:DMA数据转运+AD多通道(软件篇)
STM32:DMA数据转运+AD多通道(软件篇)
281 0
STM32:DMA数据转运+AD多通道(软件篇)
mode 配置系统设备
mode 配置系统设备
126 0
|
Linux 芯片
网络 phy 调试方法
目前嵌入式芯片支持双网卡的有很多。在调试网络驱动时,需要通过mdc 和mdio信号对phy的寄存器进行操作调试。如果每次调试都修改网络驱动的话会很麻烦。下面提供我常用的网络驱动调试方法