非加密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還真不能隨便連接,鬼知道邊上坐的人在幹啥。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章