V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JiPhone
V2EX  ›  程序员

arp 欺骗失败----所有的 ios 设备

  •  
  •   JiPhone · 2015-11-23 01:11:25 +08:00 · 5018 次点击
    这是一个创建于 3067 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么以前通用的 arp 欺骗在 windows 、安卓等完美 mitm
    到了 ios device 就不行了呢, wireshark 一个包都抓不到?
    苹果设备为何不感染,这是什么原理

    11 条回复    2015-11-24 11:47:21 +08:00
    NeoAtlantis
        1
    NeoAtlantis  
       2015-11-23 02:10:12 +08:00 via Android
    据说苹果的设备能在连 WiFi 时用随机的 MAC ,不知道有没有关系……
    sdc6882278
        2
    sdc6882278  
       2015-11-23 08:35:08 +08:00 via iPhone
    @NeoAtlantis 那是在探测广播阶段,防止被动纪录 mac 地址,实际网络交互的时候用的是正常地址。
    JiPhone
        3
    JiPhone  
    OP
       2015-11-23 09:01:39 +08:00
    随机 mac 地址?这是什么原理
    lyh3222
        4
    lyh3222  
       2015-11-23 09:50:58 +08:00
    不知道,只知道苹果和思科在网络上有合作
    salmon5
        5
    salmon5  
       2015-11-23 10:02:39 +08:00
    你还可以欺骗 交换机,搜个软件 switchsniffer
    honeycomb
        6
    honeycomb  
       2015-11-23 10:41:00 +08:00
    @JiPhone
    @sdc6882278

    iOS8+, Android 6.0+
    在探测广播阶段,都会使用随机的 MAC 地址
    所以应该和这个特性关系不大
    zjqzxc
        7
    zjqzxc  
       2015-11-23 11:45:41 +08:00
    楼主的意思是说,苹果的设备不能被 arp 欺骗?

    虽然我不清楚苹果设备具体是怎么实现 arp 协议的,那我就从协议本身来说吧
    arp 表记录的是 mac-ip 对照表,正常来说网关的 ip 对应网关的 mac , arp 欺骗就是让网关的 ip 对应到骗子的 mac 。
    过程是:我想和外网通讯,只知道网关 ip 并不知道网关的 mac ,我就需要广播一个 arp 请求,问问谁知道网关的 mac 是多少。正常来说网关计算机会回复我它的 mac ,在欺骗者存在时,欺骗者就会回复一个它的 mac 来骗我,一旦我接受了这个假 mac 地址,看似我发给网关的数据包其实全都发给了欺骗者。
    但通讯过程中并不是每一次通讯都要问问网关 ip 的 mac 是多少,,这太麻烦了。。所以 arp 缓存的作用就是记录获取到的 ip-mac 对照表。 arp 缓存分为动态缓存和静态缓存。动态缓存过一会儿就失效了如果想用还在再 arp 请求来获取,静态永远不失效。

    铺垫好了,开始说猜想:
    一般的网络设备(比如 Windows ,安卓等)并不把网关 ip-mac 对照写入静态缓存,当缓存到期了重新请求的时候就可能被欺骗。如果说苹果设备不会被欺骗,很好理解的一种情况就是这个 ip-mac 被写入成静态缓存,一旦通讯建立就把这个 ip-mac 对照关系固定下来。

    但是这并不意味着不能被欺骗。在通讯建立之初如果首先获得的 arp 响应就是欺骗者的话,从协议层面看完全无法辨别真伪。
    MrMario
        8
    MrMario  
       2015-11-23 14:55:45 +08:00
    可以的,前天刚刚做了测试, Mac 、 iPhone 、小米、华为设备统统沦陷
    JiPhone
        9
    JiPhone  
    OP
       2015-11-23 15:10:06 +08:00
    @Mrmario 为何我做的实验不成功?求告知
    jimzhong
        10
    jimzhong  
       2015-11-23 15:59:14 +08:00
    @zjqzxc 分析得很有道理
    zjqzxc
        11
    zjqzxc  
       2015-11-24 11:47:21 +08:00   ❤️ 1
    @JiPhone 不清楚你的实验具体步骤。

    arp 缓存存在有效期,有效期内可能不会再次进行 arp 请求,在此期间也就不会受到欺骗。一般来说这个有效期是 10~20 分钟。当然也有可能是我前一条回复的那种直接被设置为静态的那种情况,该缓存就永久有效不会受到欺骗了。

    尝试如下方法:
    s1:改路由名称, lan 口 IP 端,最好能把 LAN 口 mac 也改了(其实操作目的是清空苹果设备的 arp 表,但我不清楚操作,只能,,让路由器看起来像一个全新的。其实也许忘掉那个接入点,然后再重启就行)
    s2:开启欺骗
    s3 :把设备接入该无线网

    另:好像无线网和 HUB 一样,本身就是一个冲突域。只要位于同一个接入点,直接混乱模式应该就能抓到包(怎么理解呢:无线路由想和 A 设备通讯,此时B设备也接入了。它根本无法实现说我把信号指向A设备,让B收不到。它只能向外“广播”这个包,这样所有接入的设备都能收到了。一般来说 B 设备在 IP 层发现这个包的目的地址不是我就这几丢弃了,但事实上这个包的确到达了 B 设备这里。如果想监控:混乱模式一股脑把给自己的不给自己的都记录下来就好了。只是为了抓包在无线的情况下用不着 arp 欺骗)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3310 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:15 · PVG 21:15 · LAX 06:15 · JFK 09:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.