请问如何防范中间人攻击 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
copriwolf

请问如何防范中间人攻击

  •  
  •   copriwolf 2015 年 1 月 12 日 11037 次点击
    这是一个创建于 4120 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为一个局域网的普通用户,没有路由管理权,请问各位,如何能够识别中间人攻击(ip重复冲突?看arp表?),并防范阻止?

    32 条回复    2015-01-14 19:44:06 +08:00
    samueldeng
        1
    samueldeng  
       2015 年 1 月 12 日 via iPad   1
    攻击者如果有交换机权限,没有办法防范吧?
    如果没有权限,通常用arp sproofing吧,这时,除了arp绑定就没有其他办法了吧?
    mengzhuo
        2
    mengzhuo  
       2015 年 1 月 12 日
    TLS
    kiritoalex
        3
    kiritoalex  
       2015 年 1 月 12 日 via iPhone
    HSTS
    copriwolf
        4
    copriwolf  
    OP
       2015 年 1 月 12 日
    @mengzhuo 那么请问除了建立在SSL/TLS协议以外的协议都是不安全无法防范的?
    msg7086
        5
    msg7086  
       2015 年 1 月 12 日 via iPhone
    Ssl也可以中间人,只要有一个可信ca的签发权就行了
    copriwolf
        6
    copriwolf  
    OP
       2015 年 1 月 12 日   1
    @msg7086 这个似乎是之前新闻里微软一个下属软件开发的伪造了可信证书。。。似乎一般ssl中间人是通过SSLStrip这类软件降级处理吧
    msg7086
        7
    msg7086  
       2015 年 1 月 12 日 via iPhone   1
    @copriwolf 我随便举个栗子。
    CNNIC就可以拿来做中间人。(做没做我们不讨论。
    billlee
        8
    billlee  
       2015 年 1 月 12 日   2
    @copriwolf IPSec, ssh 这些也是可以抵抗 MITM 攻击的,有可靠的消息认证就行。
    futursolo
        9
    futursolo  
       2015 年 1 月 12 日   3
    @billlee

    同意楼上,一般能防MITM的要具有以下特征:

    1、握手加密而且具有可信CA(SSL、TLS之类,CNNIC和WoSign就不点评了)或拥有预协商密钥(L2TP)
    2、加密方法足够强大(AES、CHACHA20之类,RC4和SM2就不点评了)

    综上,一般情况下,以下的协议是安全的:
    1、HTTPS(排除RC4、3DES算法,排除CNNIC、WoSign的CA证书)
    2、OpenVPN(基于TLS,只要你能连上就是安全的)
    3、L2TP *Over IPSec*(必须要Over IPSec,没了就没加密了)
    4、IKEv2(基于TLS和可信CA发的证书,安全性比OpenVPN还好)
    5、SSTP(基于TLS和可信CA发的证书,安全性和IKEv2相同,稳定性加强,用443端口)
    6、ShadowSocks(基于N+1种加密算法,只要你不选RC4或RC4-MD5算法就是安全的)
    7、任何用SSL Stream过又验证CA甚至客户端证书的TCP连接(UDP大家都懂,DNS什么的)
    futursolo
        10
    futursolo  
       2015 年 1 月 12 日
    当然,SSH也算一个
    copriwolf
        11
    copriwolf  
    OP
       2015 年 1 月 12 日
    Halry
        12
    Halry  
       2015 年 1 月 12 日 via Android
    @futursolo 谢谢提醒没关手机里面的cnnic和wosign
    为什么rc4-md5还不安全呢?
    kiritoalex
        13
    kiritoalex  
       2015 年 1 月 12 日 via iPhone
    @copriwolf SSLstrip能使通信失去证书,加了HSTS特性的网站会报错(chrome根本不给你打开网页的机会,即使你想继续也不行)
    Mrun
        14
    Mrun  
       2015 年 1 月 12 日
    @futursolo RC4_MD5为什么不安全?
    futursolo
        15
    futursolo  
       2015 年 1 月 12 日
    @Halry
    嘛,简单点说好了。
    ShadowSocks的RC4不安全是因为Key复用的问题,也就是算法有问题,RC4-MD5上已经修复了这个问题了。

    RC4-MD5不安全的原因是因为加密强度太弱,主要是给ARM或MIPS架构的CPU(也就是手机和路由器)准备的,正常情况下使用是没问题的(因为当年clowwindy说过ShadowSocks的加密是为了模糊流量,不是为了加密而加密),但是要遇上曙光4000暴解的话估计也就数分钟的事(不过估计也要等到你干了什么不惜动用曙光4000也要把快递送到你家门口的事再说)。
    20140930
        16
    20140930  
       2015 年 1 月 12 日
    现在浏览器增加的Public Key Pinning 功能也可以应对这种攻击吧?
    billlee
        17
    billlee  
       2015 年 1 月 12 日
    @futursolo 不能认为 shadowsocks 是安全的. shadowsocks 只有加密,没有认证。中间人可以篡改数据,在使用流加密算法时这个问题尤其严重。
    Halry
        18
    Halry  
       2015 年 1 月 12 日 via Android
    @futursolo 那chacha20在mips上面的性能如何?
    jecvay
        19
    jecvay  
       2015 年 1 月 12 日
    @billlee 中间人如何知道shadowsocks的密钥
    deepurple
        20
    deepurple  
       2015 年 1 月 12 日
    @samueldeng 似乎看到了熟人
    xiaoks
        21
    xiaoks  
       2015 年 1 月 13 日
    这是啥上网环境啊。遇到这种环境,我一般把设备wifi功能关了。然后看看书。
    就算你是大侠,也不应该在这种环境里凑热闹。熟话说的好,乱棍打死老师傅。
    别以为自己做了某些措施就安全了。
    copriwolf
        22
    copriwolf  
    OP
       2015 年 1 月 13 日   1
    @xiaoks 可是现实也有很多这样的环境,街边的麦当劳,甜品店的wifi很有可能就是这样的环境,所以有时候重视讨论一下还是挺好的。。。。。
    cnnblike
        23
    cnnblike  
       2015 年 1 月 13 日
    @futursolo 曙光4000暴解根本是一件不用担心的事情了……与其花大笔计算费用,还不如一个快递让你进去交代。除非你在国外,但如果在国外,翻墙干啥?
    intosec
        24
    intosec  
       2015 年 1 月 13 日 via Android
    一是防范路由链路不被中间人劫持,静态arp绑定,静态路由,关闭代理自动发现功能等等。不过要是人家直接控制了路由器,这些都没用了。
    二是防范流量被中间人解密和篡改,那就是上面的各种办法了。https不算安全,它可以被降级成http或者被中间人替换证书。
    关于gfw能解密哪些协议的问题,大家可以找些敏感词去测试一下。
    xiaoks
        25
    xiaoks  
       2015 年 1 月 13 日
    @copriwolf 这里交代一下,我并不是对网络安全不重视。其实我就是做网络安全的。
    我给出上面的答案,是因为我对安全更加敏感。对小白用户说,也是最好的选择。

    既然你说到这样的问题了,我就说说逼不得已的时候我是怎么处理的。

    首先在开机之后,静止几秒。因为这时候很多软件都开始尝试联网,获取ip,获取dns。你现在着急联网,秒被路由“下毒”。等1-2分钟,数据请求不密集时,登录wifi,并且秒登录vpn。注意:一定要全局加密。用shadowsocks这种,你的QQ等还是暴漏在外面的。vpn的加密等级最好高一点,推荐openvpn。

    接下来你的所有数据都走vpn,路由上可以抓到的数据都是你的笔记本与vpn的加密信息。目前这种加密无解,你可以放心了吧。
    billlee
        26
    billlee  
       2015 年 1 月 13 日   1
    @jecvay 修改数据不需要密钥。对于任意的流加密算法,记明文为 P, 密钥流为 KS, 密文为 E. 有
    E = P Xor KS

    假设攻击者知道密文 E, 明文中某个字段的位置和值 P[begin:end], 想要把明文中的对应字段篡改为 M[begin:end], 只要计算出差异

    DIFF = M[begin:end] Xor P[begin:end]

    就可以再计算一个
    ME = E
    ME[begin:end] = E[begin:end] Xor DIFF

    这样生成的 ME 就能够被解密成篡改后的明文,达到了在不知道密钥的情况下破坏数据完整性的目的。

    就针对 shadowsocks 来说,攻击者可以猜测协议中的目的地址字段,将它修改成攻击者控制的服务器,然后 ssserver 就把解密的数据发送给攻击者了。

    shadowsocks 只是一个混淆协议,不是安全协议。
    jecvay
        27
    jecvay  
       2015 年 1 月 13 日
    @billlee orz吊吊吊
    threezhiwang
        28
    threezhiwang  
       2015 年 1 月 13 日
    @futursolo 点评下SM2
    futursolo
        29
    futursolo  
       2015 年 1 月 13 日
    @billlee
    根据偶的印象,为了避免探测,ShadowSocks会把无法解密的数据拿去扔掉,根本不会理会(但会把连接失败写到系统日志里)。而且每一个连接的密钥都是基于初始向量单独生成的,不同的链接之间也不会共用密码,即使猜到了密码也没用,只能暴解但个连接的实际密码。密码方面,采用和L2TP预协商密钥类似的密码方法是可以达到加密的效果的,只要加密强度足够大,解密也是需要时间的,何况还要把密码给md5一遍以增加长度。
    参见:[](https://github.com/shadowsocks/shadowsocks/blob/master/shadowsocks/encrypt.py)

    @Halry
    很遗憾,手头没有可以测试MIPS设备。(唯一的TP-LINK也被母上大人命令不准破坏,目前智能路由之类的功能都是用开发板充当网关实现的)但是ChaCha20对于精简指令集的CPU有优化是真的,性能虽不及RC4,但是比AES是好多了。而且主要是因为安全性有保障,要不Google也不会在移动端HTTPS用CHACHA20-POLY1305。(使用移动版Chrome开google.com,注意是Chrome,其余浏览器无效)

    @cnnblike
    嘛,这个,法庭上要讲证据。
    至于为什么身在人间也要翻墙回天朝的原因其实也很简单,大家要上B站看番。

    @threezhiwang
    目前的应用情况太少,实际的加密强度尚不明确(与AES的使用范围相比真是冰山一角),且算法持有人略坑,不排除持有某些未公开漏洞的可能。如果属实那查水表就太方便了。
    threezhiwang
        30
    threezhiwang  
       2015 年 1 月 14 日
    @futursolo 不知你所述的SM2是否为商密2号算法,此算法为非对称算法,基于ECC,曲线已公开,SM1未公开
    futursolo
        31
    futursolo  
       2015 年 1 月 14 日
    @threezhiwang
    就是那个东西,论文看过了,感觉也不怎么样,和ECDSA差不多的感觉,但并未明确指出解密年限。而且,由于应用范围过窄,不知道是否会出现魔数。这种东西必须要大量验证以后才可以被信任,而且发明者偶觉得完全不可信。建议目前还是用ECDSA或者RSA。
    threezhiwang
        32
    threezhiwang  
       2015 年 1 月 14 日
    @futursolo SM2就是选了条ECC 256的曲线,然后运算中掺杂了点SM3进来。SM2是定长签名算法,就好像RSA1024,解密年限这东西,参见ECC强度吧。既然是开源的,就没有可信不可信的说法了吧,而且算法这东西,不是大量验证,而是长时间的开源审计吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     987 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 102ms UTC 22:52 PVG 06:52 LAX 15:52 JFK 18:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86