怎么排查重放攻击的来源?还有,重放攻击这么常见吗?

2023-04-21 12:17:09 +08:00
 villivateur

https://v2ex.com/t/933049 里写了我用 ESP8266 做了一个访问 HTTP URL 的开关,因为单片机很难做 HTTPS ,为了避免恶意访问和重放攻击,我写了一个简单的策略。

ESP8266 用一个随机数乘以一个预共享的大整数,作为 URL 的参数之一,服务端判断是否合法并确保此随机数没被用过。

然后实际测试发现服务端的 Log 中包含连续的两个访问请求,参数一样,相隔几分钟。我确定我的单片机代码正确。怎么排查重放攻击的来源呢?

运营商是江苏电信。

附图:

2917 次点击
所在节点    信息安全
18 条回复
swulling
2023-04-21 12:26:53 +08:00
最简单方案:用 HTTPS
swulling
2023-04-21 12:27:48 +08:00
ESP 也可以做 HTTPS ,如果慢可以挂一个加密专用芯片,能单独高速计算加密算法
liuxu
2023-04-21 12:28:50 +08:00
查不了,非要查你得找公安去电信运营商查路由日志
adai2
2023-04-21 12:29:03 +08:00
类似这样 Authorization: Basic md5(username+":"+password+":"+extime)
url 把 extime 带过去
接收到再 MD5 核对下。

可以吗
lsk569937453
2023-04-21 12:30:40 +08:00
你这个源 IP 是本地的,应该可以记录下 request 的源 ip 的
1423
2023-04-21 12:31:07 +08:00
IP 打出来就看到来源了呀
jackyzy823
2023-04-21 12:32:41 +08:00
HTTP 的话全链路都能看到你的请求,说不定中间那个设备就是以缓存 /检测为目的再一次请求。(不如把参数放在 POST 请求里试试
swulling
2023-04-21 12:35:22 +08:00
如果就是做不了 HTTPS ,那就需要参考百度云、阿里云的 HTTP 鉴权方案。

逻辑也很简单,就是让生成的认证信息有效时间(比如 10s 内),这样你的 HTTP 请求到达服务端后,如果在 1 分钟后被重放攻击,你的服务端就会拒绝掉非法请求。
yyf1234
2023-04-21 12:35:54 +08:00
post 就行了
ysc3839
2023-04-21 13:17:33 +08:00
看上去你是用了内网穿透,建议换成 WireGuard 来实现内网穿透,配置一下可以实现把源 IP 传递过来,然后就能 ban IP 了。
fbichijing
2023-04-21 15:55:48 +08:00
我有些好奇,你这种策略每一个 secret 应该存在着生效期。一方面内存一般会限制所有随机数内存的大小,另一方面过多的随机数是不是就会踢掉最早的随机数?如果这样的话,某人拿到这个数据包,等上几天(某些日期)以后,是不是就能重放成功了?
我只是觉得这个策略和另一个软件的策略很像,个人感觉似乎存在上面的问题。没有恶意。
nilai
2023-04-21 15:59:03 +08:00
你这个策略应该是生效了的吧? 第二次重放的请求的响应是 403 了啊。
villivateur
2023-04-21 17:10:15 +08:00
@fbichijing 是的,但我这个 buff 挺大的,我用的频率也不高,所以短期内是安全的。而且我也只是做了一个非常简单的策略,如果能上 AES 之类的加密会更好。


@nilai 确实是生效了,我只是好奇这个重放攻击是哪来的
qwq11
2023-04-21 17:14:43 +08:00
签个名就好了,rsa ,eddsa 随便选,应该不至于这些这没有吧
8520ccc
2023-04-21 17:26:57 +08:00
签名加时间,假设有效时间 10 分钟,那可以把 10 分钟内的请求 token 存到 redis 只要是存在的 token 就拒绝请求,超时也拒绝
guomuzz
2023-04-21 19:16:37 +08:00
@fbichijing 加个时间戳就行了 一般 client 到 server 5 分钟足够了 nonce + timestamp + signature(body+nonce+timestamp)
realpg
2023-04-21 19:27:15 +08:00
你自己调试这个接口用的啥?浏览器?

建议彻底干掉 GET/POST 请求,我这边的 API 都是 PUT/DELETE 请求起步 就会少很多事儿
server 也不 handle GET
humbass
316 天前
时间 加 密钥生成 md5 ,服务端可以很方便的控制时间有效性,简单可行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/934289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX