您当前的位置:首页 > 知乎文章

如何利用重放攻击一夜暴富

时间:2022-02-28 10:47:16  知乎原文链接  作者:网盾网络安全培训

大多数青年都做过白日梦,彩票中奖啦,一觉醒来发现自己有一个亿万富翁的亲戚啦,或者突然有律师找到自己说自己有百万遗产要继承啦,这种小小的梦想有时候也能支撑我们继续风雨无阻的前行,何以解忧,唯有暴富。

但是如果突然告诉你,你可以通过偷特斯拉暴富了,心不心动?不用撬锁,不用砸玻璃,不用偷钥匙,不用打劫车主,就可以把一辆特斯拉带走,心动不心动?一辆model s小辄七八十万,若是7200节以上电池的长续航款,每个电池配备了冷却液导管和保险丝,并在600v电压专用布线上下功夫,此外,每个电池都拥有独立的管理系统,温度的采集和控制,充电,放电的安全保护等功能,这样的就售价一百多万了,偷走一辆就够吃几年了。

哦,不过需要坐牢。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

如何在不砸窗不搬运的情况下就让一辆别人的特斯拉跟你跑呢?最近在英国埃塞克斯郡的艾平森林区,一位Model S车主被偷车贼利用重放攻击盗取爱车,这个看上去像是动画片里面主角大招的名字,其实是电子安全领域破解身份识别程序非常基础的一项技术。重放攻击的基本原理就是把窃听到的数据原封不动地重新发送给接收方。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

虽然这个盗贼脑子聪明,点子却有点背,本来他以为神不知鬼不觉,可是谁知这位车主家门口安装了摄像头,他的盗窃行为被圆满记录下来。

什么是重放攻击呢?

大多数时候,网络上传输的数据是加密过的,此时窃听者无法得到数据的准确意义。数据为啥要加密?举个例子,倘若你是卧底要给组织传消息,为了信息安全你不能直接说下午五点废弃停车场,于是你就写,破烂茄子还卖五块钱?一旦窃听者知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到愚弄接收端的目的。

最简单的,我们在某些系统输入密码时系统会将鉴别的字符和数字进行简单加密后进行传输,这时攻击者虽然无法窃听密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。

重放攻击与中间人攻击有什么区别呢?

A给B写了一封信,说:“老友,请给我转账100块吧!A敬上。” B照做了,然后有人(不一定是A)复制了一样的信和签名发给B,骗B再转账100块,这是重放攻击(replay attack)。

A给B写了一封信,说:“老友,请给我转账100块吧!A敬上。”有人截获了这封信,把信的内容改为:“老友,请给C转账10000块吧!A敬上。”这就是中间人攻击(middleman attack)。

而在盗窃车辆的时候,重放攻击的应用就是:窃取车辆电子钥匙内部的开锁指令,然后再发送给车辆本身。

这起案件里的嫌疑人便是用一个平板电脑完成了这些操作。这个平板内置了重放攻击软件的工具,窃取在屋内的车钥匙里面的数据,然后发送到站在车旁边的嫌疑人的手机里面,从而让这辆 Model S 错误地以为车钥匙给自己下达了解锁车辆的指令。

除了重放攻击之外,这一套操作里面还有另一个很关键的因素——信号中继器。

中继器玩过我的世界的朋友们都熟悉,用它来做自动门或者是升降电梯是件非常烧脑的事情,但是却很有成就感。

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

中继器( RP repeater )工作于 OSI 的物理层,它的作用是放大信号,补偿信号衰减,支持远距离的通信。中继器。工作于物理层,只是起到扩展传输距离的作用,对高层协议是透明的。实际上,通过中继器连接起来的网络相当于同一条电线组成的更大的网络。

由于现代汽车的电子钥匙本质上是通过发送电子信号对车辆实施远程操作的,只要嫌疑人拥有一套能够接收并继续传输电子钥匙信号的工具,就可以在理论上无限延长车钥匙的信号传输距离。

尽管当时车钥匙距离嫌疑人的位置相当远,无奈车主并没有对车钥匙本身采取任何信号屏蔽措施,所以才会造成被偷的惨剧。

这么完美的犯案过程,为什么这小偷还是被抓了呢?他偷车前没做好功课。他由于不熟悉特斯拉汽车的充电过程,于是在拔充电器这一操作上浪费了大量时间,还不小心被摄像头拍下了正脸。

听完上述可能有不少车主有点方了,现在车辆大多是车钥匙远程发送解锁信息开启车辆的,那岂不是很危险?想要防止被偷其实也很简单,买一个信号屏蔽钥匙包。这种偷车手法本质上是依靠你的车钥匙发出的电子信号进行操作的,在 X 宝搜索钥匙袋,花几十块钱,就能为你的特斯拉构建第一道,也是最基本的屏障。

web环境中如何防止token被窃取进行重放攻击?

class="ztext-empty-paragraph">

class="ztext-empty-paragraph">

解决重放的办法就是保证同样的请求只有一次生效。一般是随请求数据带一个唯一的字段(一般是时间戳,或是服务端生成的有时效性、一次性的 nonce),并使用客户端私钥进行签名,当请求到达服务端后,服务端记录此时间戳 / nonce 为已使用,那么当发生重放时,采用相同的时间戳或 nonce 的请求就要被拒绝。

注意,这里关键的部分一个是附带的 nonce 字段只能用一次,另一个是使用客户端私钥进行签名。

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门