V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
asdfjkl
V2EX  ›  奇思妙想

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

  •  1
     
  •   asdfjkl · 2019-10-09 09:29:55 +08:00 · 5655 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。
    偶然看到 tcp spoof,https://github.com/urwqiak/tcp_spoof,有几个问题:

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

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

    3. 如果以上两个都可以,那么这种方式有没有明显特征,可以用于识别呢?
    10 条回复    2020-08-29 15:14:09 +08:00
    laminux29
        1
    laminux29  
       2019-10-09 10:37:10 +08:00   ❤️ 1
    它这个协议根本就是错的。

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



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

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

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

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

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

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

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

    网安查,不是我关注的。我想关注的是如果要在中间路由做阻断的话,该怎么识别出哪些是伪造的报文,哪些才是真正的报文。理论上可以伪造任何地址,那岂不是所有地址都有可能遭到阻断?
    asdfjkl
        9
    asdfjkl  
    OP
       2019-10-09 19:00:47 +08:00
    @gamexg 这个要做也是很容易做的,不知道国外的 isp 会不会丢掉伪造源 ip 的包。
    Themyth
        10
    Themyth  
       2020-08-29 15:14:09 +08:00
    现在无论是国内国外,家宽还是 ISP,99%都屏蔽了 ip spoof,就算它没屏蔽,它的上层路由也会屏蔽的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2714 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:03 · PVG 10:03 · LAX 19:03 · JFK 22:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.