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

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中查看我更多的项目和工程,或者通过[email protected]与我联系。

谢谢大家!

时间: 2024-08-02 02:45:15

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

Python写一个Windows下的android设备截图工具

利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: import wx,subprocess,os,platform class AutyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, 'Android Auty', size=(350, 300)) self.panel = wx.Panel(self, -

RT-thread 设备驱动组件之pin设备

在RT-thread 2.0.0正式版中引入了pin设备作为杂类设备,其设备驱动文件pin.c在rt-thread-2.0.1\components\drivers\misc中,主要用于操作芯片GPIO, 如点亮led,按键等.同时对于相应的芯片平台,需要自行编写底层gpio驱动,如gpio.c. 一.在pin.c中定义了一个静态的pin设备对象static struct rt_device_pin _hw_pin,其中结构体类型struct rt_device_pin在pin.h中定义为: /

为一个支持GPRS的硬件设备搭建一台高并发服务器用什么开发比较容易?

高并发服务器开发,硬件socket发送数据至服务器,服务器对数据进行判断,需要实现心跳以保持长连接. 同时还要接收另外一台服务器的消支付成功消息,接收到消息后控制硬件执行操作. 查了一些资料,java的netty,go,或者是用C/C++不知道该用哪个,想问一下哪个比较适合,学习更容易一些. 为一个支持GPRS的硬件设备搭建一台高并发服务器用什么开发比较容易? >> golang 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/golang/101000

Android Wear 开发入门——如何创建一个手机与可穿戴设备关联的通知(Notification)

创建通知 为了创建在手机与可穿戴设备中都能展现的通知,可以使用 NotificationCompat.Builder.通过该类创建的通知,系统会处理该通知是否展现在手机或者穿戴设备中. 导入必要的类库 在开发之前首先需要导入以下类库 importandroid.support.v4.app.NotificationCompat; importandroid.support.v4.app.NotificationManagerCompat; importandroid.support.v4.app

Selenium也是一个用于Web应用程序测试的工具

Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mozilla Suite等.这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上.测试系统功能--创建衰退测试检验软件功能和用户需求.支持自动录制动作和自动生成.Net.Java.Perl等不同语言的测试脚本.Selenium 是ThoughtWorks专门为Web

一个简单的html5页面在线速成工具!(当然本文主要说下他的成果的结构)

分享一个好玩的web app页面速成工具 当然主要是让大家看下他的原理 看着他的结构大家就该猜到这个了.这个是利用换页之后给当前div加了一个active,然后利用css控制效果 这个毫无疑问是采用最大宽度640的布局方式 类似的js框架我曾经分享过2个如fullPage.js,slip.js大家可以从我之前的博客中找到,里面我详细的写了使用方法http://www.cnblogs.com/LoveOrHate/category/677610.html 下面是demo地址:http://eqxi

Bean-Query 一个把对象转换为Map的Java工具库

刚开源了一个经过完整测试的Java工具类.目前的代码已经经历了完整的测试,正在申请放到Maven central Repository上. 地址如下: https://github.com/Jimmy-Shi/bean-query 使用说明如下: Bean-query Click Here for English version. BeanQuery 是一个把对象转换为Map的Java工具库.支持选择Bean中的一些属性,对结果进行排序和按照条件查询.不仅仅可以作用于顶层对象,也可以作用于子对象

分享一个自己写的.Net的ORM工具

注册博客园帐号也有好几年了,之前注册帐号主要是为了看别人的文章下载东西的时候方便.从来没有写过什么博客,一直以为只要注册了帐号就可以写博客,最近用到了才发现还得申请一下,于是就申请了博客,算了也不扯这么多没用的了,直接进入主题吧! 网上开源的ORM工具也不少,开源中国上就有不少,很多都下载试用过,不过感觉用起来都不是很方便,园子里面也有不少人分享自己写的ORM工具,用过一个叫 MySoft.Data 的ORM工具,感觉里面的链式调用函数的写法不错,但是用起来感觉也有些不如意的地方,于是某个周末的

推荐一个linux下的web压力测试工具神器webbench

推荐一个linux下的web压力测试工具神器webbench2014-04-30 09:35:29   来源:   评论:0 点击:880 用多了apache的ab工具之后你就会发现ab存在很多问题, 那么怎么办呢, 今天推荐一个神器---webbench webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好, 用多了apache的ab工具之后你就会发现ab存在很多问题, 那么怎么办呢, 今天推荐一个神器---webbench