有感于北理工的牛 X 专利,想做一个 tcp spoof 的检测程序

2019-10-09 09:29:55 +08:00
 asdfjkl
偶然看到 tcp spoof,https://github.com/urwqiak/tcp_spoof,有几个问题:

1. 这种方式能够建立双方的正常通信吗?

2. 这种方式能够达到隐藏通信一方或者双方的目的吗?

3. 如果以上两个都可以,那么这种方式有没有明显特征,可以用于识别呢?
5666 次点击
所在节点    奇思妙想
10 条回复
laminux29
2019-10-09 10:37:10 +08:00
它这个协议根本就是错的。

公网 ip <---> 公网 ip,这一条没问题,原理很简单,就像收发邮件一样。一般发邮件,发件人,会在邮件的发件人一栏,写上自己的名字、地址、电话。但是,发件人信息其实是可以不写的,因为只要有收件地址,对方就可以收到邮件。这个协议就是模拟了这个特性。就像很多淘宝发货商,在包裹的发件人信息一栏,不会写具体发件人的位置,而是用店铺名与手机号取代。



公网 IP <---> NAT 子网,这就全错了。

首先,它要求客户端与服务器进行正常通信,那就暴露了客户端的地址。

其次,这个协议的作者,没搞懂 [NAT 打洞] 是怎么回事。NAT 有多种模型,它提的这种方法只对于全锥形 NAT 才有效,但问题是,大部分民用以及低端商用路由器或 NAT 设备,是不支持全锥形 NAT 的。所以协议用全锥形 NAT,对于大部分民用设备是无法通信的。如果改为其他 NAT 模型又必须暴露服务端的地址。
ganymedenil590
2019-10-09 10:38:04 +08:00
真要查 总能识别到的
asdfjkl
2019-10-09 12:44:21 +08:00
@laminux29 对于公网 IP <---> NAT 子网,如果允许暴露服务端的地址,是不是其他 NAT 模型也可以正常通信?这种通信模型只能在部分数据包隐藏服务器端的地址?
asdfjkl
2019-10-09 12:47:24 +08:00
@ganymedenil590 感谢你的回答。人总是要死的,人类总是要灭绝的。这是个成本与收益的问题,我关心的是如何在可接受成本的前提下提高收益。
laminux29
2019-10-09 15:22:44 +08:00
@asdfjkl 公网 IP 与 NAT 子网通信,理论上来说,只要暴露了服务端地址,那么通信就能成立。但这只是理论上的,就看网络设备商的程序猿会不会偷懒。因为不偷懒的话,NAT 设备还需要涉及到一次地址记录与查找。如果程序猿偷懒,那仍然是无法通信。

而且其实这都不重要,重要的是,暴露了服务端地址,隐藏通信的想法在实际应用中,根本就不可靠。因为网安要求电信的上端仍然有记录设备,会记录当前链路发的包。所以无论包里如何填 IP head,被记录后都能查出是谁发的。具体来说:

家庭光纤或拨号上网用户,上级的 EPON 之类的设备会能够把数据库与线路记下来,存储到电信的网安设备里。
学校或大型单位用户,网安会要求在 NAT 设备与用户之间安装网安设备来记录这些东西。

总之,只要网安想查,这种协议是无法避免被查水表的。

真正想逃避这种检查,只能采用洋葱路由的思路,这种思路的本质是查证成本太高,导致实际上就没办法查。
cat9life
2019-10-09 15:58:40 +08:00
看起来不错...等待更新
gamexg
2019-10-09 16:26:06 +08:00
目前接触到的 isp 都做了防护,伪造的源 ip 的包会被 isp 丢弃掉。
asdfjkl
2019-10-09 18:57:22 +08:00
@laminux29 公网 IP 与 NAT 子网通信,感觉和 NAT 打洞一样,只要 NAT 打洞能成功,这样的通信也能成功。而正常的 NAT 打洞感觉还是需要的,比如微信视频之类的(我也不确定)。

网安查,不是我关注的。我想关注的是如果要在中间路由做阻断的话,该怎么识别出哪些是伪造的报文,哪些才是真正的报文。理论上可以伪造任何地址,那岂不是所有地址都有可能遭到阻断?
asdfjkl
2019-10-09 19:00:47 +08:00
@gamexg 这个要做也是很容易做的,不知道国外的 isp 会不会丢掉伪造源 ip 的包。
Themyth
2020-08-29 15:14:09 +08:00
现在无论是国内国外,家宽还是 ISP,99%都屏蔽了 ip spoof,就算它没屏蔽,它的上层路由也会屏蔽的。

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

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

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

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

© 2021 V2EX