非加密Wifi环境中,用Wireshark抓取其他主机的无线数据流

    大家都知道,在公共场所,连接非加密Wifi是不安全的,因为任何人都有机会看到自己上网的数据。这篇文章就是演示这种场景。

    初看文章标题,是不是它有点长?这是因为802.11无线协议的特殊性,所以我不得不给标题加了很多定语。先容我阐述特殊性:一般情况下,无线网卡工作在Client模式下。在这种模式下,当无线网卡驱动接收到无线Frame时,会把其中802.11无线协议头剥离并替换为以太网协议头,然后将Frame交给网络协议栈。当其他网络组件(含Wireshark)从网络协议栈中提取Frame时,它可以以处理以太网Frame的方式来无差别的处理无线Frame。读者可以用Wireshark尝试抓无线网卡上的Frame,看看是否带有802.11协议头,如下图:

    但是,这有个限制,很大的限制:无线网卡工作在Client模式下,只接受发送给本网卡的无线Frame,同时丢弃不发给自己的无线Frame。所以,尽管房间里充满了各种Wifi信号,运行Wireshark的主机(下文简称HOST)只能看到极小部分的Frame----只能看到HOST与已连接的AP之间的常规数据往来,其他的主机的无线Frame对于HOST而言是不可见的。

    为了突破该限制,需要将网卡从Client模式切换到Monitor模式。然而,并不是所有网卡都支持该模式;也并不是所有OS支持这种切换。据我所知,Linux(特指Kali Linux),可以使用aircrack-ng套件进行模式切换,我有一块ALFA的网卡,可以支持Monitor模式。而Windows并没有类似的套件,可用的网卡也少的可怜,只有AirPcap一款(贵!而且2017年就停产了,不过,淘宝上可以买到山寨货)。本文基于(山寨)AirPcap网卡,抓取其他主机的无线Frame。接下来正式开始。

Step1.从众多AP中选出目标AP:

    可以用Windows自带的无线管理工具,也可以选其他工具,如inSSIDer(它和Airpcap一样是MetaGeek的产品):

不过windows的无线管理工具信息并不算很全面,请注意到网络通道,图中显示的是Channel 1。你可能知道2.4GWifi支持20MHz带宽和40MHz带宽,按图中的显示,你可能会觉得AP用的是Channel 1 20MHz。但实际上AP使用Channel 1+5 40MHz。inSSIDer给出了相对全面的信息,除了AP提供的Channel,还提供无线信号的衰减(图中的Radio Signal:-17dBm),根据这个能推算出目标AP跟HOST的距离(距离越远,或者阻挡物越多,Radio Signal的绝对值越大。图上的信号衰减为-17dBm,衰减不多,因为无线路由就在我手边。我实测了若干次发现,隔一堵墙,信号衰减在-87dBm和-100dBm之间)。

Step2.Wireshark中设置无线捕获参数:

就像分析以太网Frame前,要选定捕获网卡接口一样,捕获无线Frame首先选择AirPcap接口(图中的AirPcap USB wireless capture adapter nr. 00):

为了捕获到无线Frame,需要根据inSSIDer给出的SSID的Channel信息,设置无线工具栏的参数(默认情况下,wireshark不显示该工具栏,可通过勾选"视图"--"无线工具栏"使之显示在Wireshark界面上)。如果没有正确的设置Channel参数,是无法捕获到需要的无线Frame的!

设置无线工具栏的参数前需要解释2.4G无线信号中20MHz/40MHz通道的概念。对于2.4G Wifi,一共有11个通道(有些路由能提供13个通道),每个通道提供20MHz的带宽,通道之间中心频率的间隔是5MHz(如,Ch1和Ch2之间的间隔是5MHz,Ch2和Ch3之间间隔是5MHz)。由于每个通道提供20MHz的带宽,而通道之间的间隔才5MHz,因此各个通道之间存在重叠部分,如下图:

读者可以把每个通道想象成一个矩形,每个矩形的宽为20cm。第一个矩形宽的中垂线标记为Ch1,第二个矩形宽的中垂线标记为Ch2,Ch1和Ch2中垂线之间间隔为5cm,以此类推。Ch3的左边长正好位于Ch1,Ch3的右边长位于Ch5。回到2.4G Wifi的通道上,Channel 1是指通道1的中心频率是2.412GHZ,通道的两个边缘占据了Ch -1和Ch 3的中心--其中心频率分别为2.402GHz和2.422GHz;同理Channel5 是指Ch5的中心频率是2.432GHz,Ch5的边缘占据了Ch 3和Ch 7的中心)。

部分路由为了增加带宽,将2个通道合并在一起,形成40MHz的带宽,如Channel 1+5就是一个40MHz的通道,它占用了Ch -1到Ch 7。Channel 11-7也是一个40MHz的通道,它占用了Ch 5到Ch 13。由于40MHz带宽使用了2个通道,就存在主次通道,主通道用来传输控制/管理信号,次通道用来传输数据信号。Channel 1+5中 Channel 1是主通道,Channel 5是次通道。另外,会用Channel 1,HT 40+ 指代在Ch 1通道上向上合并Ch 5,形成40MHz带宽;或者Channel 11, HT 40- 指代在Ch11上合并Ch7,形成40MHz带宽。

    有了上述预备知识,我们来设置Wireshark无线参数。根据inSSIDer给出的AP的信息,我们知道SSID TP-Link_EE1F使用Ch 1+5合成40MHz带宽,最终设置如下:

Step3.安静的等待无线Frame出现:

    现在,我用手机连接TP-Link_EE1F,并登入TP-Link路由管理页面tplogin.cn,同时在HOST上静静的捕获这一过程。

登陆后,路由管理页面上显示了我手机的IP/MAC。回到Wireshark,停止捕获,开始搜索http相关的流量:

嗯,还真不少...貌似TP-Link路由管理页面没有加密,我能读到不少内容,比如,手机登入时,请求了2张图片:

这么看来,公共场所非加密的AP还真不能随便连接,鬼知道边上坐的人在干啥。

发布了233 篇原创文章 · 获赞 106 · 访问量 56万+

猜你喜欢

转载自blog.csdn.net/lixiangminghate/article/details/101981953