zoukankan      html  css  js  c++  java
  • WPA简单抓包分析

    实验环境

    kali,因为我的是虚拟机,需要再外接一块网卡

    无线网卡的四种工作模式

    • 被管理模式:当无线客户端直接与无线接入点连接时,就是用这个模式
    • ad hoc模式:当网络有相互直连的设备组成时,使用这个模式
    • 主模式:这个模式永续无线网卡使用特制的驱动程序和软件工作
    • 监听模式:使得网卡专心监听空气中的数据包
      下图是四种模式的图示,来自《wireshark 数据包分析实战 第二版》

    WPA—PSK破解原理

    我们都知道破解 WPA-PSK 不是和 WEP 一样抓很多包就能破解的,这跟抓多少数据包一点关系也没有。破解的关键是要获取握手包,这个握手包叫4way-handshake四次握手包。
    WPA 四次握手过程:
      WPA-PSK 初始化工作:
      使用SSID和passphares使用以下算法产生PSK。
      在WPA-PSK中PMK=PSK,PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)
      第一次握手:
      AP广播SSID,AP_MAC(AA)→STATION
      STATION 端使用接受到的SSID,AP_MAC(AA)和passphares使用同样算法产生PSK
      第二次握手:
      STATION 发送一个随机数SNonce,STATION_MAC(SA)→AP
      AP端接受到SNonce,STATION_MAC(SA)后产生一个随机数Anonce,然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下算法产生PTK
      PTK=SHA1_PRF(PMK, Len(PMK), "Pairwise key expansion",MIN(AA,SA) ||Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))
      提取这个PTK 前16 个字节组成一个MIC KEY
      第三次握手:
      AP发送上面产生的ANonce→STATION
      STATION 端用接收到ANonce 和以前产生PMK,SNonce,AP_MAC(AA), STATION_MAC(SA),用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MIC KEY,使用以下算法产生MIC值,用这个MIC KEY 和一个802.1x data 数据帧使用以下算法得到MIC值。
      MIC = HMAC_MD5(MIC Key,16,802.1x data)
      第四次握手:
      STATION 发送802.1x data ,MIC→AP
      STATION 端用上面那个准备好的802.1x 数据帧在最后填充上MIC值和两个字节的0(十六进制)让后发送这个数据帧到AP。
      AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1x data 数据帧,和用上面AP产生的MIC KEY 使用同样的算法得出MIC’。如果MIC’等于STATION 发送过来的MIC。那么第四次握手成功。若不等说明则AP 和STATION 的密钥不相同,或STATION 发过来的数据帧受到过中间人攻击,原数据被篡改过。握手失败了。
      综上所述:
      WPA-PSK安全体系是十分强大和完善的。但他始终是用一个密码保护的,对于这种用密码保护的安全体系,一般情况下我们都可以用一种叫字典攻击的常规攻击手段。针对WPA-PSK的破解,目前也就只有字典攻击这一种方式了。原理是通过截取WPA-PSK的四次握手包中包含的和密码有联系的信息,再依靠这个信息进行字典暴破。
      总之,想要破解WPA-PSK这种强大的加密算法,必须符合以下条件:
      须要有合法客户端,并且存在合法的通信流量,通过抓取数据包进行破解的几率为0,唯一的破解方法是抓取WPA-PSK的四次握手包然后进行字典破解。抓到四次握手包之后,最后破解的关键是字典的好坏程度,有一定的运气成分了。如果碰到强口令时千万不要钻牛角尖,趁早放弃,因为WPA-PSK的破解目前唯一有实际价值的只有弱密码字典攻击。

    抓取无线数据的方法

    也可以参考
    https://www.cnblogs.com/linkr/p/4502161.html
    https://blog.csdn.net/xundh/article/details/50352391
    其实在Linux下按照第一个连接中的linux的方法简单可行,但我想抓取特定的包,便于我自己分析查看,所以还用到了Aircrack-ng这个工具,工具的使用可以参照https://www.jianshu.com/p/fd16236057df下面是我的步骤

    步骤

    查看我的网卡

    airmon-ng start wlan0使用工具将我的网卡激活至监听模式

    airodump-ng wlan0mon,探测周围的wifi,其中IRM为我们宿舍的wifi,它的mac为50:FA:84:3E:05:AC,信道为13

    用wireshark开始抓包,根据上步得到的bssid进行过滤

    802.11包有3种类型,分别为管理、控制、数据
    Beacon是一种管理数据包,选择一个进行分析

    可以看到:
    路由器的物理地址和厂商
    timestamp为该包发送的时间戳
    ssid parameter set wap广播的ssid,这里为IRM确实是我们宿舍的
    supported rates wap支持的数据传输率
    ds parameter wap广播使用的信道,这里为13与开始工具探测的一致

    并能看到wpa,rsn的版本,采用加密方式等属性信息
    接着我让我的手机连接wifi
    开始我的手机发送了请求包,接着wifi进行了回应

    接着进行了认证与关联

    接下来是四次握手过程





    之后就可以进行数据传输

  • 相关阅读:
    hibernate事务管理
    oracle的中文排序问题
    hibernate一级缓存
    Hibernate的实体规则、主键生成策略、对象状态
    【SVN】命令行忽略不必要的文件和文件夹
    【SVN】SVN的trunk、branches、tag的使用以及分支的概念
    hibernate介绍及环境搭建
    敏捷实践:比每日会议更疯狂的半日会议!
    Android开发之有效获取状态栏(StatusBar)高度
    jquery判断输入文字个数的统计代码
  • 原文地址:https://www.cnblogs.com/Qi-Lin/p/12222171.html
Copyright © 2011-2022 走看看