Showing Posts From
Wireshark
- 21 Jan, 2021
Wireshark抓包环境的工作原理与使用技巧总结
Wireshark基本介绍 - Wireshark是全球使用最广泛的开源抓包软件(其前身为Ethereal),是一个通用的网络数据嗅探器和协议分析工具。1998年开始以GPL开源许可证发布。 - 主要功能: - 分析网络底层协议; - 解决网络故障问题; - 找寻网络安全问题; - 跨平台支持很好,可以在Windows、MACOS、Linux/Unix系统上运行; - 官方网站:www.wireshark.org; - 与Wireshark相关/类似的其他软件: - Sniffer - Omnipeek - Fiddler,HTTPWatch,这两个工具主要用来抓包分析HTTP协议; - 科来网络分析系统 - Wireshark中的抓包数据可以支持保存为很多种其他类型的抓包文件,这样这些抓包数据保存后就可以在其他的抓包工具软件中打开并分析。此外还可以使用wireshark提供的导出功能,对抓包序列/文件中的数据进行过滤以后,导出到一个新的抓包文件中; 有线网卡的混杂工作模式 - 有线网卡包含两种工作模式:正常工作模式,混杂模式。 - 在设备网卡正常的工作模式下,当网卡收到的数据包中所包含的MAC地址与自己的MAC地址不一致的话(除了广播包,广播包的MAC地址是固定的FF:FF:FF:FF:FF:FF),就会选择把这个数据包丢弃掉,这样对于网卡的驱动以及驱动更上层的操作系统内核、应用程序而言,根本就看不到不属于自己的网络数据包;因此对于网卡的正常工作模式,网卡只会把属于自己的网络包以及网卡收到的广播包向上提交,把其他的网络包直接丢弃; - 这样的处理可以显著的提升设备系统和应用的处理性能,试想如果网卡收到大量不属于自己的网络包,全部提交给系统内核和应用程序来处理的话,大量的CPU计算周期会浪费在这些没有意义的事情上,严重影响系统本身处理正常工作的性能; - 在这种工作模式下,使用wireshark对网卡收到的数据包进行抓包的话,自然也就只会抓到发给自己的包和当前网络下收到的广播包; - 如果希望能够在wireshark上抓到网络上其他设备的数据包,就需要能够让网卡进入混杂模式。 - 并非所有的网卡都能够支持混杂模式。 - Windows系统中提供了libpcap和winPcap驱动,能够通过这个驱动很方便的在wireshark的软件界面上把网卡的工作模式切换为混杂模式。 - 在网卡的混杂工作模式下,网卡能够捕获到达其网络端口的所有数据流量。无论这些流量是否发给自己的(即无论这些流量的目的地址是什么),都不会丢弃,而是直接发给系统内核和应用层来做进一步的处理,这样运行在系统应用层的wireshark上就可以抓取并显示出来不属于自己的网络包。 - 因此结论就是:如果想要wireshark上抓取到不属于自己的网络包,就必须要有一个能够支持混杂模式的网卡。 无线网卡的监听工作模式 - 无线网卡有四种工作模式: - Master Mode:主要用于无线接入点AP对外提供无线接入以及路由管理的功能服务,可以简单地理解为我们的无线路由器就工作在Master模式下。 - Managed Mode:当无线客户端与无线接入点AP之间连接的时候,无线客户端就工作在Manged mode下。 - Ad Hoc Mode:用于两台无线设备之间建立P2P直连的情况。 - Monitor Mode:用于监控无线网络的流量。在这种工作模式下,无线客户端自身停止收发数据,专心监听在空气中某个信道上正常传输的数据包。 - 如果想要使用Wireshark来监听空气中传输的无线数据包时,就必须要使自己的无线网卡工作在这种模式下。当然并非所有的无线网卡都能够支持Monitor Mode。 - 也称为RFMON Mode。 - 如上所述,如果要通过wireshark来监听空气中传输的WiFi无线包,必须要有一个能够支持Monitor Mode的无线网卡,然后设置该网卡为Monitor Mode,并指定要监听的wifi信道,无线网卡将会开始专心的监听该信道中正在传输的所有数据包,解析后推送给wireshark显示出来。 - 无线网卡的Monitor模式与有线网卡的混杂模式比较: - 有线网卡设置为混杂模式后,只能监听到自己所加入的网络中传输的数据包; - 而无线网卡的Monitor模式,根本就不需要无线网卡加入网络就能够进行监听,而且可以监听到指定信道所有网络中正在传输的无线包,因此无线网络相比有线网络,要不安全的多; - 无线网卡的混杂模式?理论上无线网卡在加入某个AP以后,也应该可以监听到这个AP网络中的所有流量,但是实际上无线网卡根本就没有必要加入AP,就能够监听到这个信道中所有网络的流量,权限要大得多,所以无线网卡的混杂模式就没有太大意义了。 抓包环境分类及其工作原理 - 有线网络下的抓包环境分类 - 本机环境:即对发给本机网卡的所有网络流量或者本机网卡发出的所有流量进行抓包分析; - 即只对自己的流量进行抓包分析,这是最基本最简单的一种流量监控和分析的方式; - 集线器环境:同一冲突域,可以对所有连接到同一集线器上的所有设备的进出流量进行抓包; - 流经集线器的所有网络包都会被发送到集线器上的每一个端口上,因此这种情况下对网络流量进行嗅探实施起来最方便,只需要把网络嗅探器连接到集线器上的任意一个空闲端口上即可; - 但因为集线器的半双工通信模式,连接到集线器的设备只能有一个设备在发送数据,传输效率比较低,现在已经很少见使用集线器的网络环境了;所以这种环境现在基本上只存在于理论分析中; - 交换机环境 - 交换机是当前网络环境中应用最常见的连接设备类型。 - 交换机工作在物理链路层,因此可以通过MAC地址来唯一的标识连接到其上的设备节点,交换机内部维护有一个MAC地址寻址表CAM(其中保存在MAC地址和端口的映射信息),交换机在收到一个数据包以后,通过读取这个数据包的头部信息中包含的MAC地址,然后查CAM来决定把这个包发到哪个连接端口上。 - 因此当把网络嗅探器连接到交换机上的某个端口,将会只能收到发给自己的数据包和广播类型的数据包。 - 那么对于在一个交换机环境中如果要对这个网络中的流量进行嗅探的话,主要有以下几种方法: - 端口镜像 - 前提条件: - 交换机能够支持端口镜像设置; - 有权限设置交换机的端口镜像功能; - 交换机上有空闲的端口接入网络嗅探器; - 在交换机上设置端口镜像后,交换机在转发流量的时候就会把这个流量拷贝一份同时转发给网络嗅探器所在的端口; - 各个交换机的端口镜像支持以及设置方式均不同; - 集线器接出 - 使用网络分流器 - ARP欺骗攻击 - 不需要特殊的交换机设置的权限; - ARP攻击软件:Cain&Abel; - 通过在嗅探机上安装ARP欺骗/攻击工具, 通过发送ARP应答伪装自己为流量接收机器的MAC地址,这样原本发给目标机的流量就会被发给嗅探机,借此接收到本不属于自己的流量。 - MAC泛洪 - 不需要特殊的交换机设置的权限; - 在嗅探机上发送包含有大量MAC地址的包出去,交换机接收到以后会把新的MAC地址填写到CAM表中,但是CAM表的长度是有限的,如果MAC地址太多的话就会把原先正常的MAC表项冲掉。这样这些机器的流量因为在CAM标志找不到对应的对应项,就会被转发到所有的端口上,从而到达监听流量的目的。 Wireshark使用的一些技巧总结 - 可使用工具栏上的放大镜按钮对抓包窗口显示内容进行放大缩小的控制。 - 增加/修改列: - 给抓包窗口增加列:在具体要增加的信息项上点击右键,选择“应用为列”,就可以把这个选型增加到新的列上; - 修改列的信息:在抓包列表窗口对应列的Header上点击右键,选择Edit Column,就可以修改指定列的信息,例如列的名称; - Packet Time相关设置 - 修改抓包创建的时间显示格式:视图---时间显示格式; - 修改抓包窗口中的time base,即在抓包的序列中,选择一个包作为起始包,其他包的时间都以这个包的时间作为参考:在需要设置作为参考的包上点击右键--设置/取消设置时间参考; - 在同一个抓包序列中可以设置多个时间参考; - 名字解析的功能 - wireshark在MAC、IP地址、端口的各个层次都提供了名字解析的功能,名字解析的功能开启后,显示在抓包窗口中的地址就不再是简单的MAC或者IP地址,以及端口号,而是可以直接自动识别为对应的厂商字符串(MAC地址)、公网服务器名称(IP地址)和传输层协议名称(端口号),这样查看抓包列表就会更方便简洁一些; - 名字解析功能默认情况下只打开了MAC层的解析,如果需要开启IP地址和传输层协议名称的解析,可以在捕获---选项---选项---Name Resolution或者编辑---首选项--Name Resolution中开启IP地址和传输层名称的解析; - 数据包的标记 - 为方便对数据包进行分析,可以使用mark/unmark的功能对选择的数据包进行高亮显示和取消高亮显示; - 还可以通过对话着色功能对不同类型的协议使用不同的颜色来自动标记; - 多个数据包文件的合并操作 - 如果多次抓包得到多个抓包文件,可以使用wireshark的文件---合并功能把多个抓包文件做合并处理,显示在一起进行分析; - wireshark的抓包自动保存设置 - 可以通过设置捕获---选项---output来设置抓包数据自动保存到文件的设置,这样在wireshark中捕获到的抓包数据就会自动的写入参数指定的文件中;并且可以支持按照固定抓包文件大小、抓包时间长度、抓包数量等设置来自动创建新的抓包文件; - 过滤器 - wireshark有两种过滤器设置,两种过滤器的语法还不一样: - 抓包过滤器:在捕获---选项---Capture Filter中进行设置;这种情况下设置的过滤器会自动把不符合过滤器的包直接丢弃; - 抓包过滤器使用的是基于libpcap/wincap库的BPF(Berkley Packet Filter)语法; - 类型Type:host,net,port; - 方向Dir:src,dst; - 协议Proto:ether,ip,tcp,udp,http,ftp - 逻辑运算符:&&,||,!,==; - 显示过滤器:也就是在抓包列表显示窗口上方的过滤器设置;这种情况下设置的过滤器不会针对丢弃掉不符合过滤规则的包,而只是会隐藏显示; - 比较操作符:==,!=,>,=,
- 18 Jan, 2021
基于Wireshark+Acrylic WiFi Sniffer的WiFi空口抓包环境
前提条件: - 安装好wireshark和Acrylic WiFi Sniffer软件; - 一个能够支持Monitor工作模式的无线网卡; - 提前知道要抓包的AP信道; - (如果需要对数据链路层以上的数据进行解密的话,需要)提前知道要抓包的AP SSID和密码; 安装Wireshark和Acrylic WiFi Sniffer - 在www.wireshark.org上下载wireshark的最新版本并安装即可; - Acrylic WiFi sniffer - 下载地址:https://www.acrylicwifi.com/en/downloads-free-license-wifi-wireless-network-software-tools/download-acrylic-wi-fi-sniffer/#; - 免License的Acrylic WiFi Sniffer软件在进行抓包的时候,每次执行抓包只能抓1min的包,并且抓包5min后才能执行第二次抓包。如果要去掉以上限制,就需要购买License:1年期的软件使用授权费用是100美元,永久授权是220美元; - 安装后打开软件,Acrylic WiFi Sniffer软件就开始扫描连接到电脑上的无线网卡,并检测是否能够Monitor工作模式,并把能够支持Monitor模式的无线网卡列表罗列出来: !Untitled.png - 如果以上Compatible WiFi Devices中显示的结果是No WiFi devices found,就需要另外找一个能够支持Monitor工作模式的无线网卡; Acrylic WiFi Sniffer支持的无线网卡 - Acrylic WiFi Sniffer软件对无线网卡的支持情况在以下链接中查看:https://www.acrylicwifi.com/en/wlan-wifi-wireless-network-software-tools/sniffer-wifi-for-windows/acrylic-wi-fi-sniffer-requirements-and-compatibility/; - 实际上以上连接中只是罗列出来一部分,例如可以确定磊科的NW392 USB无线网卡可以支持; 抓包前提前扫描AP所在的信道 可以提前在手机上安装AP扫描软件对周围的AP状况进行扫描,例如Android平台的《WiFi分析助手》: !Untitled.jpeg 使用Wireshark进行WiFi空口包的抓包 打开Wireshark后,在Wireshark捕获设备列表中选择Acrylic WiFi Sniffer软件找到的无线网卡: !Untitled.png 点击前面的齿轮按钮选择正确的wifi信道,确认开始后即启动WiFi空口包抓包: !Untitled.png - 在Channel位置选择使用WiFi信道扫描工具扫描到的AP信道; WiFi空口包的解密 - 默认情况下,通过以上WiFi空口包抓包环境抓取的数据包的Protocol都是802.11,因此只能看到数据链路层包头部分的內容,之前的部分都以QoS Data的形式进行加密。这样我们在进行抓包分析的时候就没法知道其上层协议、端口等信息的具体內容。 - 这是因为在空中传输的WiFi packet都是经过加密的,密钥在AP与STA进行Association操作的时候进行协商,此后的通信过程中,会使用协商的密钥对数据链路层以上的数据进行加密,只有这个packet的接收方才有正确的密钥来进行解密。 - 如果要实现对WiFi空口包抓包数据的解密操作,即能够看到802.11数据链路层以上的协议、数据、端口等內容,需要: - 提前知道抓包AP的SSID和Key,并在wireshark中设置:Edit -> Preferences -> Protocols -> IEEE802.11 -> Edit,设置选择wps-pwd,key填:KEY:SSID;例如SSID是R8000,Key是88888888: !Untitled.png - 能够抓取到一次完整的STA到AP的Association过程,这样才能够获取到这次STA与AP连接过程协商的加密密钥: !Untitled.png - 最重要的就是能够拿到以上完整密钥协商过程的四个key,只有四个key都监听到的情况下,后续这个STA与AP之间的通信包才能得到正确的解密。 - 从以上完整的Association过程的抓包过程来看,如果要能够对后续的通信包正确解密成功,需要在wireshark中抓包到以下序列: - STA向AP发出Authentication,并接收到应答Acknowledge; - AP向STA发出Authentication,并接收到应答Acknowledge; - STA向AP发出Association Request,接收到应答Acknowledge; - AP向STA发出Association Response,接收到应答Acknowledge; - AP向STA发出Key Message 1,接收到应答Acknowledge; - STA向AP发出Key Message 2,接收到应答Acknowledge; - AP向STA发出Key Message 3,接收到应答Acknowledge; - STA向AP发出Key Message 4,接收到应答Acknowledge; - 而实际的抓包测试中,可能会漏掉其中的某个key message,这样就会导致无法解密成功; - 在遇到无法解密成功的情况下,需要检查一下: - 是否在802.11包解密设置中填写正确了SSID和Key信息; - 是否监听到一次完整的Association过程,即能够在抓包数据中看到完整的Key1-Key4的完整过程; - 如果仍然无法解密成功,尝试修改802.11包解密设置中的Assume Packets have FCS和Ignore the protection bit设置选项;