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与我联系。

谢谢大家!

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

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

    界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: import wx,subprocess,o ...

  2. 一个DOS攻击木马的详细分析过程

    一个DOS攻击木马的详细分析过程 0×01 起因 网路流量里发现了大量的的1.exe的文件,而且一直在持续,第一感觉就像是一个木马程序,而且每个1.exe的MD5都不一样,对比发现只有几个字节不一样( ...

  3. RT-thread 设备驱动组件之PIN设备

    在RT-thread 2.0.0正式版中引入了pin设备作为杂类设备,其设备驱动文件pin.c在rt-thread-2.0.1\components\drivers\misc中,主要用于操作芯片GPI ...

  4. STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发

    这里我主要说一下如何做一个USB下位机,这里主要分3部分:1.建立工程:2.添加报文描述符:3.数据的传输.这里就不讲USB的理论知识了,有想要了解的自行百度一下就可以了. 建立工程:工程建立参考:h ...

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

    高并发服务器开发,硬件socket发送数据至服务器,服务器对数据进行判断,需要实现心跳以保持长连接. 同时还要接收另外一台服务器的消支付成功消息,接收到消息后控制硬件执行操作. 查了一些资料,java ...

  6. 转载 STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发

    STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发  本文转载自 https://www.cnblogs.com/xingboy/p/9913963.html 这里我主要说一 ...

  7. Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 2 部分: DTrace

    DTrace的原理本系列文章详细地介绍了一个 Linux 下的全新的调式.诊断和性能测量工具 Systemtap 和它所依赖的基础 kprobe 以及促使开发该工具的先驱 DTrace 并给出实际使用 ...

  8. iOS 设备数据管理工具 iMazing v2.10.3 绿色便携版

    iMazing 是一款可以帮助用户管理 iOS 设备的软件,功能远远超出 iTunes.iMazing 连接你的 iOS 设备(iPhone. iPad 或 iPod)相连,使用起来也非常的方便.你可 ...

  9. xsos:一个在Linux上阅读SOSReport的工具

    xsos:一个在Linux上阅读SOSReport的工具 时间 2019-05-23 14:36:29  51CTO 原文  http://os.51cto.com/art/201905/596889 ...

随机推荐

  1. 使用委托(C# 编程指南)

    原文地址:https://msdn.microsoft.com/zh-cn/library/ms173172.aspx 委托是安全封装方法的类型,类似于 C 和 C++ 中的函数指针.  与 C 函数 ...

  2. jquery学习笔记1

    (1) jQuery的Id选择器: $("#btnShow") (2) 事件绑定函数 bind() $("#btnAdd").bind("click& ...

  3. 笔记9:winfrom的一些知识点(二)

    一.新建,和删除文件夹 private void button4_Click(object sender, EventArgs e) { Directory.Delete(@"F:\&quo ...

  4. hdu----(5047)Sawtooth(大数相乘+数学推导)

    Sawtooth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  5. 131. 132. Palindrome Partitioning *HARD* -- 分割回文字符串

    131. Palindrome Partitioning Given a string s, partition s such that every substring of the partitio ...

  6. 手把手教你如何搭建iOS项目基本框架

    手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做 ...

  7. hdu5884 Sort(二分+k叉哈夫曼树)

    题目链接:hdu5884 Sort 题意:n个有序序列的归并排序.每次可以选择不超过k个序列进行合并,合并代价为这些序列的长度和.总的合并代价不能超过T, 问k最小是多少. 题解:先二分k,然后在k给 ...

  8. 集合框架,ArrayList和Vector的区别,让arrayList线程安全的几种方案

    boolean add(E e) 将指定的元素添加到此列表的尾部. void add(int index, E element) 将指定的元素插入此列表中的指定位置. boolean addAll(C ...

  9. SAP连接HANA数据库

    既然都用HANA了,为什么还要在SAP端,连接HANA数据库,做数据库处理..... 因为HANA数据库,没个用户在STADIO上建的数据库表...只能这个用户使用,而做Universe 设计的时候, ...

  10. Java List的深度克隆

    关于java List的深度克隆 List是java容器中最常用的顺序存储数据结构之一.有些时候我们将一组数据取出放到一个List对象中,但是可能会很多处程序要读取他或者是修改他.尤其是并发处理的话, ...