天天看點

實戰無線網絡分析(篇一)無線監聽

實戰無線網絡分析(篇一)無線監聽

我一直對無線技術很感興趣,記得大學裡的時候買過好多本《無線電》雜志在寝室裡研究,也幻想着搭建一個自己的無線電台,或者在茫茫的虛空中和另一個不知道躲在哪個角落中的家夥通訊。無線的魅力在于它的簡潔,不拖泥帶水,沒有任何多餘的部分。仔細想一想兩個裝置,它們之間不通過任何有形媒介進行通訊,這是一件多麼不可思議的事情。

那個時候的自己,對無線技術隻是感性的認識,僅僅停留在膚淺的表面,甚至完全不明白工作站(STA)和接入點(AP)之間是如何實作通信的。隻知道照着網上的教程,使用 BT3 的工具包,破解了隔壁宿舍的 Wifi 密碼,知其然,但不知其是以然。最近心血來潮,重溫了一遍很久之前寫的那篇破解 Wifi 密碼的部落格,又回過頭來将無線的知識重新梳理了一遍。僅以此部落格記錄之。

這個部落格共有三篇,第一篇介紹如何在我們的筆記本上監聽無線通信,第二篇對無線通信的協定和原理進行分析,第三篇通過執行個體學習我們日常生活中最常見的 WPA/WPA2-PSK 的工作原理,以及如何破解它。

一、無線監聽概述

當你使用筆記本在星巴克一邊喝咖啡一邊浏覽網頁時,或是使用手機聊着微信看着朋友圈時,你無時無刻不在無線通信。而你不知道的是,可能在不遠處的某個角落,某個人正在監聽着你的一舉一動,因為我們周邊的空氣中到處都彌漫着無線電磁波,你的無線通信可以被所有人看到。

可能上面的說法有些聳人聽聞,但事實就是這樣,而現實生活中的竊聽、攔截、篡改、釣魚等等,比這個更有甚者。無線網絡和有線網絡最大的差別在于它們使用的通信媒介,有線網絡使用的是實體的、實體存在的線纜作為傳輸的媒介,而無線網絡則通過不可見的電波進行通信。由于電波通信是廣播出去的,任何人都可以看到,是以如何確定無線通信的安全變得格外重要,也更困難。下面我們介紹如何監聽無線網絡。

二、無線網卡的監聽模式

2.1 無線網卡的工作模式

無線網絡的特性可能讓人聯想到古老的集線器(Hub)網絡,在集線器網絡中,所有通過集線器的資料都會被轉發給該集線器所有的接口,也就是說,隻要連接配接在該集線器上的機器,就可以監聽該網絡上的所有機器的網絡通信。預設情況下,網卡隻會接受發給自己的資料封包,将其他的封包統統丢棄。當然也可以讓網卡接受所有的封包,這就是所謂的混雜模式(promiscuous mode)。

無線網卡跟這個很類似,預設情況下無線網卡和無線接入點(Wireless Access Point,WAP)建立連接配接後,就處于托管模式(Managed mode),在這個模式下,無線網卡隻專注于接受從 WAP 發給自己的資料封包。如果想讓無線網卡監聽空氣中所有的無線通信,則可以将無線網卡設定成監聽模式(Monitor mode,也叫 RFMON 模式),然後再使用諸如 Wireshark 之類的軟體捕獲資料封包進行分析。

無線網卡除了 Managed mode 和 Monitor mode 這兩個模式之外,其實還支援好幾種其他的模式,譬如:Ad hoc(也叫 IBSS 模式) 和 Master mode ,Linux Wireless 站點上對此有詳細的介紹,也可以參考 Chris 的 《Wireshark 資料包分析實戰》第 11 章,下面附一張無線網卡的幾種工作模式的示意圖。

實戰無線網絡分析(篇一)無線監聽

在這裡我們最關心的自然是監聽模式,下面将介紹幾種方法來将無線網卡設定成監聽模式。當然,如果你想将無線網卡設定成監聽模式,首先你的無線網卡必須得支援,不同的無線網卡啟用監聽模式的方式可能也各不相同,是以進行後面的操作之前最好先 Google 一下你的網卡型号,參考官方的使用說明。我在上一篇部落格中講到了如何檢視自己網卡的型号,以及如何安裝無線網卡驅動,可以參考之。aircrack-ng 官網上也有一篇很好的文檔介紹如何安裝無線網卡驅動:Install drivers 。在确定自己的網卡型号和安裝的驅動之後,可以在 Linux wireless 上檢視下自己的網卡支援哪些模式。譬如我的無線網卡型号是 Atheros AR9280 ,安裝的驅動是 ath9k ,從表格中可以看出它支援監聽模式,另外還支援 cfg80211,AP 模式,IBSS 等等進階玩意,由于 ath9k 是一款完全免費并且開源(FOSS)的無線驅動,有時間可以去研究下它的源碼。

實戰無線網絡分析(篇一)無線監聽

2.2 使用 iwconfig 設定網卡的監聽模式

在 Linux 環境下,有一個指令估計大家都用過:

ifconfig

,它用來顯示或配置網絡裝置,譬如最常見的檢視網卡 IP 位址,或者啟用禁用某個網卡,修改網卡的 MAC 位址等等。如果要管理無線網卡,另一個指令是 

iwconfig

,可以用來檢視無線網卡的狀态,或修改無線網卡的模式。最簡單的用法是不帶任何參數,如下所示:

1

2

3

4

5

6

7

8

9

10

11

$ iwconfig

lo        no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:"defenceOTA" 

Mode:Managed  Frequency:2.412 GHz  Access Point: 6C:72:20:5D:7F:57  

Bit Rate=130 Mb/s   Tx-Power=16 dBm  

Retry short limit:7   RTS thr:off   Fragment thr:off

Power Management:off

Link Quality=50/70  Signal level=-60 dBm 

Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

Tx excessive retries:3  Invalid misc:4   Missed beacon:0

可以列出系統中目前正在使用的無線網卡,以及無線網卡的模式,支援的無線協定,ESSID(無線擴充服務設定 ID,Extended Service Set ID),信号強度等。從上面的例子中可以看出,wlan0 為無線網卡,目前網卡的運作模式為托管模式(Managed)。

大多數情況下,都可以使用下面的流程來啟用無線網卡的監聽模式(注意:必須以 root 身份運作):

1

2

3

4

$ su

# ifconfig wlan0 down

# iwconfig wlan0 mode monitor

# ifconfig wlan0 up

其中第一條指令将無線網卡 wlan0 停用,這一步有時不是必須的,但最好嘗試先停用無線網卡,否則很可能報下面這樣的錯誤:Device or resource busy 。

1

2

3

$ sudo iwconfig wlan0 mode monitor

Error for wireless request "Set Mode" (8B06) :

SET failed on device wlan0 ; Device or resource busy.

第二條指令設定 wlan0 的模式,這裡是将其設定成 monitor mode,當然也可以設定成其他的模式,譬如 

iwconfig wlan0 mode master

 可以将無線網卡設定成主模式。最後再啟用無線網卡,這時無線網卡就是以監聽模式運作的了,可以使用 

iwconfig

 指令确認一下。

最後我們還可以使用下面的指令改變監聽的信道:

1

# iwconfig wlan0 channel 3

踩坑:為什麼使用 iwconfig 将無線網卡設定成監聽模式後,過幾秒又會自動變成托管模式?

這個問題出現在你的筆記本已經連接配接上 Wifi 這種情況下,大多數情況下罪魁禍首就是 

Network Manager

 服務。如果無線網卡已經連接配接了 AP,則 

Network Manager

 會檢測無線網卡的模式,自動将其設定為 managed mode。是以你可以嘗試斷開無線連接配接,或者使用下面的指令停止 

Network Manager

 服務。

1

# service network-manager stop

2.3 使用 airmon-ng 設定網卡的監聽模式

如果你隻是想将無線網卡設定成監聽模式,使用 

iwconfig

 指令足矣,這時你就可以使用諸如 Wireshark 之類的抓包工具截取無線網絡封包了。但是使用 

iwconfig

 有一點不爽的地方在于,抓包時網卡是處于監聽模式的,這時不能通過 Wifi 連接配接網際網路,否則網卡又會自動切換回托管模式,這在你想一邊抓包一邊上網時會非常不便。是以你有另一個選擇,也是更好的選擇:

airmon-ng

 。

相信很多學習無線破解的同學都是看着 

aircrack-ng

 的破解教程入門的,确實,在無線破解這個領域,

aircrack-ng

 的地位簡直是神一般的存在。

aircrack-ng

 提供了一整套無線工具,每一個都小巧精練,各有春秋,如瑞士軍刀一般,

airmon-ng

 就是其中之一。

首先不帶任何參數直接運作它(必須以 root 身份執行):

1

2

3

4

5

6

$ sudo airmon-ng

Interface   Chipset     Driver

wlan0       Atheros AR9280  ath9k - [phy0]

enx0        Unknown     rtl8812au

可以列出目前所有的無線網卡,每一行顯示出每個網卡接口的名字,晶片類型,以及安裝的驅動程式。然後使用下面的指令将網卡設定成監聽模式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$ sudo airmon-ng start wlan0

Found 3 processes that could cause trouble.

If airodump-ng, aireplay-ng or airtun-ng stops working after

a short period of time, you may want to kill (some of) them!

PID Name

12341   NetworkManager

12354   wpa_supplicant

12363   dhclient

Process with PID 12363 (dhclient) is running on interface wlan0

Interface   Chipset     Driver

wlan0       Atheros AR9280  ath9k - [phy0]

(monitor mode enabled on mon0)

和 

iwconfig

 不同的是,

airmon-ng

 建立了一個虛拟網卡 mon0,并在 mon0 上啟用了監聽模式,真實的無線網卡 wlan0 保持不變,還是運作在托管模式下,這樣你就可以上網抓包兩不誤了。這個指令還有一個有意思的地方在于,它會檢測系統中目前正在運作的程序,分析出哪些程序可能會對無線抓包有影響,并顯示出來。你可以單獨使用 

airmon-ng check

 指令來做檢測,還可以使用 

airmon-ng check kill

 直接 kill 掉那些可能有影響的程序。更多用法可以參考 airmon-ng 的官方文檔。

2.4 使用 iw 監聽無線網絡

iw

 是 Linux 系統上的另一款無線配置工具,它的出現是為了解決 

iwconfig

 的很多不足,或者說它完全是為了取代 iwconfig 而開發的。

之是以要新開發一套無線配置工具,還要從無線擴充(Wireless-Extensions)說起。Wireless-Extensions(簡稱 WE,或者 Wext) 是由 Jean Tourrilhes 1997 年開發并添加到 Linux 核心的,它通過 Linux 的系統調用 

ioctl()

 來實作使用者層和核心層之間的通信。由于設計的比較粗糙,使用 WE 開發的程式很難管理,并且由于它年代久遠,WE 除了一些基本的 bugfix 之外也無人維護了,是以亟需一種新的無線驅動架構來指導無線程式的開發。于是便出現了 cfg80211 和 nl80211 。需要特别指出的是 cfg80211 不再使用 ioctl 系統調用,而是使用 Netlink(基于 socket 通信)。iw 就是完全基于 cfg80211 架構重新設計并開發的。

使用 iw 不僅可以實作和 iwconfig 完全一樣的功能,而且它的用法要更豐富(當然也更複雜),可以先使用 

iw help

 檢視它的使用幫助(友情提醒:使用 iw 之前先得有個心理準備,iw 指令的輸出大多比較晦澀,而且你可能會被它大片大片的技術資訊所吓住,不用急,從上往下慢慢看)。下面的幾個指令可能是你想嘗試的:

1

# iw list

列出所有的無線裝置,以及每個無線裝置的詳細資訊,真的非常詳細,非常專業,可能會吓住你,如果要顯示的簡單點,可以使用:

1

2

3

4

5

6

7

8

9

# iw dev

# iw dev wlan0 info

phy#0

Interface wlan0

ifindex 3

wdev 0x1

addr 00:17:c4:e8:67:20

type managed

channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz

這個指令和 iwconfig 類似,顯示出無線接口的名稱,網卡模式,所處的頻道等,這些都是接口的屬性,無論有沒有連接配接 AP ,隻要你沒有修改過它,接口的屬性都是固定的,如果你連接配接了 AP ,還可以使用下面的指令檢視跟連接配接相關的資訊(SSID,頻率,信号強度等):

1

2

3

4

5

6

7

8

9

10

11

12

# iw dev wlan0 link

Connected to 6c:72:20:5d:7f:57 (on wlan0)

SSID: defenceOTA

freq: 2412

RX: 202000891 bytes (213176 packets)

TX: 11249479 bytes (110592 packets)

signal: -60 dBm

tx bitrate: 108.0 MBit/s MCS 5 40MHz

bss flags:  short-preamble short-slot-time

dtim period:    1

beacon int: 100

當然,我們最關心的,還是将網卡設定為監聽模式:

1

2

# iw dev wlan0 interface add mon0 type monitor

# ifconfig mon0 up

上面的指令新增了一個虛拟網卡接口 mon0 ,并将 mon0 設定為監聽模式。這個指令和上面的 

airmon-ng

 的效果幾乎是一樣的,wlan0 仍然保持 managed 模式不變,新增的 mon0 運作在 monitor 模式下。虛拟接口新增之後記得要使用 

ifconfig up

 啟用起來,再通過下面的指令設定頻率。

1

# iw dev mon0 set freq 2437

三、掃描無線網絡

至此,我們已經準備就緒,網卡已經具備了監聽周圍無線信号的能力,這個時候你可以啟動 Wireshark 開始資料分析之路了。但是直接分析,可能會完全沒有頭緒,找不到方向,因為 Wireshark 會捕獲所有流經網卡的資料,如果你周圍的無線熱點很多,将是一場資料報災難。是以,我們決定有的放矢,先掃描周圍都有哪些無線熱點,以及哪些無線裝置,然後再有針對性的抓取指定熱點的封包。

3.1 iw 和 iwlist

上節中介紹的 

iw

 指令,以及 Linux 自帶的另一個無線指令 

iwlist

 可以實作簡單的掃描功能,譬如 iw 的掃描指令如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

$ sudo iw dev wlan0 scan

BSS 6c:72:20:5d:7f:57(on wlan0) -- associated

TSF: 1060538844661 usec (12d, 06:35:38)

freq: 2412

beacon interval: 100 TUs

capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)

signal: -61.00 dBm

last seen: 184 ms ago

Information elements from Probe Response frame:

SSID: defenceOTA

Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0

DS Parameter set: channel 1

ERP: <no flags>

Extended supported rates: 6.0 12.0 24.0 48.0

HT capabilities:

Capabilities: 0x11ee

HT20/HT40

SM Power Save disabled

RX HT20 SGI

RX HT40 SGI

TX STBC

RX STBC 1-stream

Max AMSDU length: 3839 bytes

DSSS/CCK HT40

Maximum RX AMPDU length 65535 bytes (exponent: 0x003)

Minimum RX AMPDU time spacing: 4 usec (0x05)

HT RX MCS rate indexes supported: 0-15, 32

HT TX MCS rate indexes are undefined

HT operation:

* primary channel: 1

* secondary channel offset: above

* STA channel width: any

* RIFS: 0

* HT protection: 20 MHz

* non-GF present: 1

* OBSS non-GF present: 0

* dual beacon: 0

* dual CTS protection: 0

* STBC beacon: 0

* L-SIG TXOP Prot: 0

* PCO active: 0

* PCO phase: 0

WPA:     * Version: 1

* Group cipher: TKIP

* Pairwise ciphers: TKIP CCMP

* Authentication suites: PSK

RSN:     * Version: 1

* Group cipher: TKIP

* Pairwise ciphers: TKIP CCMP

* Authentication suites: PSK

* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

WMM:     * Parameter version 1

* BE: CW 15-1023, AIFSN 3

* BK: CW 15-1023, AIFSN 7

* VI: CW 7-15, AIFSN 2, TXOP 3008 usec

* VO: CW 3-7, AIFSN 2, TXOP 1504 usec

BSS Load:

* station count: 4

* channel utilisation: 164/255

* available admission capacity: 31250 [*32us]

Overlapping BSS scan params:

* passive dwell: 20 TUs

* active dwell: 10 TUs

* channel width trigger scan interval: 300 s

* scan passive total per channel: 200 TUs

* scan active total per channel: 20 TUs

* BSS width channel transition delay factor: 5

* OBSS Scan Activity Threshold: 0.25 %

Extended capabilities: HT Information Exchange Supported

Country: CN Environment: Indoor/Outdoor

Channels [1 - 13] @ 16 dBm

WPS:     * Version: 1.0

* Wi-Fi Protected Setup State: 1 (Unconfigured)

* Response Type: 3 (AP)

* UUID: 28802880-2880-1880-a880-6c72205d7f57

* Manufacturer: Ralink Technology, Corp.

* Model: Ralink Wireless Access Point

* Model Number: RT2860

* Serial Number: 12345678

* Primary Device Type: 6-0050f204-1

* Device name: DIR-816

* Config methods: Label, Display

* RF Bands: 0x1

* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20

該指令會列印出大量的資訊,每個無線熱點以及它的詳細資訊都會被展示出來,可以使用下面的技巧隻顯示 SSID 和 BSS:

1

2

3

4

5

6

7

$ sudo iw dev wlan0 scan | egrep "^BSS|SSID"

BSS 6c:72:20:5d:7f:57(on wlan0) -- associated

SSID: defenceOTA

BSS 14:75:90:ac:96:98(on wlan0)

SSID: ak

BSS b0:48:7a:77:28:ee(on wlan0)

SSID: TP-LINK_7728EE

使用 

iwlist

 的指令格式如下:

1

$ sudo iwlist wlan0 scan

同樣的,這個指令會列印大量的資訊。可以使用下面的技巧顯示精簡資訊:

1

2

3

4

5

6

7

8

9

10

11

12

13

$ sudo iwlist wlan0 scan | egrep "Cell|ESSID|Channel"

Cell 01 - Address: 6C:72:20:5D:7F:57

Channel:1

Frequency:2.412 GHz (Channel 1)

ESSID:"defenceOTA"

Cell 02 - Address: 80:89:17:B9:2C:C2

Channel:1

Frequency:2.412 GHz (Channel 1)

ESSID:"wangshiyuan"

Cell 03 - Address: EC:26:CA:CC:9B:9A

Channel:1

Frequency:2.412 GHz (Channel 1)

ESSID:"XIANGLAN\'S FAMILY"

3.2 kismet

雖然 

iw

 和 

iwlist

 指令的輸出都不是很友好,但是在缺少其他選擇的時候,這兩個指令都可以幫上不少忙。當然,如果有更好的選擇,我還是推薦使用下面的 

kismet

 和 

airodump-ng

,他們不僅界面上很酷,而且功能上也更強大。我們先介紹 kismet 。

kismet 是一款 Linux 下的無線掃描程式,它的功能非常強大,不僅可以用來掃描周邊的無線網絡,也支援無線資料包的嗅探和破解,它還可以掃描出周圍隐藏的無線熱點,更厲害的是,它還内置了 IDS(Intrusion Detection System,入侵檢測系統)功能,可以檢測出周圍是否有無線嗅探器(比如 NetStumbler)。此外,它的插件功能也很優秀,可以支援 GPS和藍牙的掃描。它被收錄在 Kali Tool 裡。

在 Ubuntu 系統下可以直接使用 

apt-get install kismet

 來安裝,安裝完成之後,以 root 身份運作即可(kismet 也可以以非 root 身份運作,但功能會非常有限)。運作 kismet 之後,會彈出幾個框框,使用 Tab 鍵移動焦點位置,選擇 OK 一路往下。其中有一步會提供輸入網卡接口的名稱,上一節的幾個指令都可以檢視你的無線網卡接口名稱,一般來說名稱就叫 wlan0 或 ath0 之類的(特别注意的是,kismet 會自動将網卡設定成監聽模式,如果你輸入 wlan0,會建立出一個 wlan0mon 的監聽網卡,是以如果你已經啟用了監聽模式,譬如使用上面的例子建立了一個 mon0 的監聽網卡,可以直接填 mon0)。

完全配置好之後,我們就可以體驗 kismet 的強大功能了。在這裡我們隻關心它的無線掃描功能,kismet 不僅可以掃描出周邊所有的無線接入點,而且還可以掃描出每個無線接入點的用戶端,這在我們有針對性的嗅探和攻擊時非常有用。kismet 的使用界面如下圖所示(very cool),具體的使用方法和快捷鍵參考 kismet 文檔。

實戰無線網絡分析(篇一)無線監聽

3.3 airodump-ng

我們要介紹的另一個無線掃描程式是 airodump-ng,看名字就知道,它也和 airmon-ng 一樣,是 aircrack-ng 套件中的一個,而且它常常和 airmon-ng 配合使用,像下面這樣:

1

2

# airmon-ng start wlan0

# airodump mon0

airodump-ng 的運作界面如下圖所示:

實戰無線網絡分析(篇一)無線監聽

可以看到,airodump-ng 的功能和 kismet 可以說是不相上下,在掃描網絡這一方面,兩個工具都可以掃描到周圍所有的無線接入點(包括隐藏的接入點),以及正在連接配接接入點的工作站(比如手機等)。圖中資訊量比較大,下面簡單總結一下每一行每一列的意義,詳細資訊可以參考 airodump-ng 的文檔。

  • BSSID:表示無線 AP 的 Mac 位址。
  • PWR:信号強度,值越大,表示信号越強。它的值一般都是一個負數,是以上圖中除了 -1, -57 是最大的,表示該接入點離的最近,信号最好。PWR 值為 -1,說明不支援信号強度的檢視。
  • Beacons:Beacon 是無線資料包中最有用的一種,叫做信号資料包。802.11 的資料包按類型可以分成三類:管理、控制和資料。管理類資料包又可以分為三種子類型:認證(authentication)、關聯(association)和信号(beacon)資料包。Beacon 由 WAP 發送,穿過無線信道通知所有無線用戶端存在這個 WAP,并定義了連接配接它必須設定的一些參數。
  • #Data:捕獲到的資料分組的數量,包括廣播分組。
  • CH:信道号。
  • MB:WAP 所支援的最大速率。
  • ENC:使用的加密算法體系。

    OPN

     表示無加密,

    WEP?

     表示 WEP 或者 WPA/WPA2,

    WEP

     表示靜态的或者動态的 WEP,當然,WEP 加密很早就已經遭淘汰了,目前最常見的是 

    WPA

     和 

    WPA2

  • CIPHER:使用的加密算法。常見的算法有:CCMP、WRAAP、TKIP、WEP 等。
  • AUTH:使用的認證協定。常用的有:MGT(WPA/WPA2 使用獨立的認證伺服器,譬如 802.1x、RADIUS、EAP 等),SKA(WEP 的共享密鑰),PSK(WPA/WPA2 的預共享密鑰)和 OPN(開放式)。
  • ESSID:所謂的 SSID 号,如果啟用隐藏的話,ESSID 可以為空,或者顯示為 <length: 0>。
  • STATION:用戶端的 Mac 位址,包括連上的和想要連的用戶端。如果用戶端沒有連上 AP,ESSID 列顯示成 (not associated)。
  • Probe:被用戶端查探的 ESSID,如果用戶端正在試圖連接配接一個 AP,但是沒有連接配接上,将會顯示在這裡。

四、抓包

到這裡,萬事具備,隻欠東風。我們具備了監聽無線通信的能力,也可以掃描出周圍的無線接入點和用戶端資訊,下一步就是挑選一個你感興趣的接入點,開始抓包吧。

4.1 使用 kismet 和 airodump-ng 抓包

上面在介紹 kismet 和 airodump-ng 的時候,都隻是展示了它們掃描網絡的功能,實際上,從 airodump-ng 的名字也可以看出來,它不僅可以掃描網絡,還可以捕獲無線資料封包。

譬如在啟動 kismet 的時候,kismet 就會在啟動目錄生成好幾個檔案,如下。

1

2

3

4

5

6

$ ls -l Kis*

-rw-r--r-- 1 root root       0 8月  15 22:32 Kismet-20160815-22-32-05-1.alert

-rw-r--r-- 1 root root     264 8月  15 22:32 Kismet-20160815-22-32-05-1.gpsxml

-rw-r--r-- 1 root root   25111 8月  15 22:32 Kismet-20160815-22-32-05-1.nettxt

-rw-r--r-- 1 root root   57768 8月  15 22:32 Kismet-20160815-22-32-05-1.netxml

-rw-r--r-- 1 root root 1822733 8月  15 22:32 Kismet-20160815-22-32-05-1.pcapdump

其中,Kismet-***.pcapdump 就是捕獲的資料包,可以使用 Wireshark 等資料包分析工具打開。預設情況下,kismet 會捕獲所有的無線通信,資料包會變得非常大,可以通過指定 

filter_tracker

 參數來限制 kismet 隻捕獲特定 BSSID 的資料包,譬如下面這樣:

1

$ sudo kismet --filter-tracker BSSID\(6C:72:20:5D:7F:57\)

而 airodump-ng 預設資料包是不存檔案的,可以通過 

--write

 或 

-w

 參數将資料包儲存到指定檔案中:

1

2

3

4

5

6

$ sudo airodump-ng -w pack mon0

$ ls -l pack*

-rw-r--r-- 1 root root  5645 8月  15 23:48 pack-01.cap

-rw-r--r-- 1 root root  1651 8月  15 23:48 pack-01.csv

-rw-r--r-- 1 root root  2457 8月  15 23:48 pack-01.kismet.csv

-rw-r--r-- 1 root root 13460 8月  15 23:48 pack-01.kismet.netxml

其中,xxx-01.cap 就是捕獲的資料封包件,可以使用 Wireshark 打開分析。同樣的,這個檔案也有可能會很大,因為儲存了所有的無線資料封包,如果隻需要監聽某一個接入點,可以通過 

--bssid

 或 

--essid

 等參數指定:

1

$ sudo airodump-ng mon0 --bssid 6C:72:20:5D:7F:57

4.2 使用 Wireshark 和 tcpdump 抓包

通過上面的方法抓包完成之後,我們就可以使用 Wireshark 打開資料封包件來分析了。其實 Wireshark 除了可以分析資料封包件之外,也可以進行抓包。使用 Wireshark 抓包之前,首先将網卡設定為監聽模式,然後在 Wireshark 啟動界面中選擇處于監聽模式的網卡接口,這樣就可以了。

使用這種方式,界面上沒有 kismet 和 airodump-ng 直覺,你将會看到大量的資料包迎面襲來,密集恐懼症患者慎用。好在 Wireshark 具有強大的過濾器功能,可以通過設定下面的過濾器來減少那些我們不感興趣的資料。

實戰無線網絡分析(篇一)無線監聽

我們這裡隻關心抓包的方法,關于資料包的分析,我們将在下一篇部落格中介紹。最後要介紹的一個抓包工具是大名鼎鼎的 

tcpdump

,它可以說是抓包工具的鼻祖,指令如下:

1

$ sudo tcpdump -i mon0 -n -w wireless.cap

同樣的,抓封包件可以使用 Wireshark 打開進行分析,這裡不再贅述。

我一直對無線技術很感興趣,記得大學裡的時候買過好多本《無線電》雜志在寝室裡研究,也幻想着搭建一個自己的無線電台,或者在茫茫的虛空中和另一個不知道躲在哪個角落中的家夥通訊。無線的魅力在于它的簡潔,不拖泥帶水,沒有任何多餘的部分。仔細想一想兩個裝置,它們之間不通過任何有形媒介進行通訊,這是一件多麼不可思議的事情。

那個時候的自己,對無線技術隻是感性的認識,僅僅停留在膚淺的表面,甚至完全不明白工作站(STA)和接入點(AP)之間是如何實作通信的。隻知道照着網上的教程,使用 BT3 的工具包,破解了隔壁宿舍的 Wifi 密碼,知其然,但不知其是以然。最近心血來潮,重溫了一遍很久之前寫的那篇破解 Wifi 密碼的部落格,又回過頭來将無線的知識重新梳理了一遍。僅以此部落格記錄之。

這個部落格共有三篇,第一篇介紹如何在我們的筆記本上監聽無線通信,第二篇對無線通信的協定和原理進行分析,第三篇通過執行個體學習我們日常生活中最常見的 WPA/WPA2-PSK 的工作原理,以及如何破解它。

一、無線監聽概述

當你使用筆記本在星巴克一邊喝咖啡一邊浏覽網頁時,或是使用手機聊着微信看着朋友圈時,你無時無刻不在無線通信。而你不知道的是,可能在不遠處的某個角落,某個人正在監聽着你的一舉一動,因為我們周邊的空氣中到處都彌漫着無線電磁波,你的無線通信可以被所有人看到。

可能上面的說法有些聳人聽聞,但事實就是這樣,而現實生活中的竊聽、攔截、篡改、釣魚等等,比這個更有甚者。無線網絡和有線網絡最大的差別在于它們使用的通信媒介,有線網絡使用的是實體的、實體存在的線纜作為傳輸的媒介,而無線網絡則通過不可見的電波進行通信。由于電波通信是廣播出去的,任何人都可以看到,是以如何確定無線通信的安全變得格外重要,也更困難。下面我們介紹如何監聽無線網絡。

二、無線網卡的監聽模式

2.1 無線網卡的工作模式

無線網絡的特性可能讓人聯想到古老的集線器(Hub)網絡,在集線器網絡中,所有通過集線器的資料都會被轉發給該集線器所有的接口,也就是說,隻要連接配接在該集線器上的機器,就可以監聽該網絡上的所有機器的網絡通信。預設情況下,網卡隻會接受發給自己的資料封包,将其他的封包統統丢棄。當然也可以讓網卡接受所有的封包,這就是所謂的混雜模式(promiscuous mode)。

無線網卡跟這個很類似,預設情況下無線網卡和無線接入點(Wireless Access Point,WAP)建立連接配接後,就處于托管模式(Managed mode),在這個模式下,無線網卡隻專注于接受從 WAP 發給自己的資料封包。如果想讓無線網卡監聽空氣中所有的無線通信,則可以将無線網卡設定成監聽模式(Monitor mode,也叫 RFMON 模式),然後再使用諸如 Wireshark 之類的軟體捕獲資料封包進行分析。

無線網卡除了 Managed mode 和 Monitor mode 這兩個模式之外,其實還支援好幾種其他的模式,譬如:Ad hoc(也叫 IBSS 模式) 和 Master mode ,Linux Wireless 站點上對此有詳細的介紹,也可以參考 Chris 的 《Wireshark 資料包分析實戰》第 11 章,下面附一張無線網卡的幾種工作模式的示意圖。

實戰無線網絡分析(篇一)無線監聽

在這裡我們最關心的自然是監聽模式,下面将介紹幾種方法來将無線網卡設定成監聽模式。當然,如果你想将無線網卡設定成監聽模式,首先你的無線網卡必須得支援,不同的無線網卡啟用監聽模式的方式可能也各不相同,是以進行後面的操作之前最好先 Google 一下你的網卡型号,參考官方的使用說明。我在上一篇部落格中講到了如何檢視自己網卡的型号,以及如何安裝無線網卡驅動,可以參考之。aircrack-ng 官網上也有一篇很好的文檔介紹如何安裝無線網卡驅動:Install drivers 。在确定自己的網卡型号和安裝的驅動之後,可以在 Linux wireless 上檢視下自己的網卡支援哪些模式。譬如我的無線網卡型号是 Atheros AR9280 ,安裝的驅動是 ath9k ,從表格中可以看出它支援監聽模式,另外還支援 cfg80211,AP 模式,IBSS 等等進階玩意,由于 ath9k 是一款完全免費并且開源(FOSS)的無線驅動,有時間可以去研究下它的源碼。

實戰無線網絡分析(篇一)無線監聽

2.2 使用 iwconfig 設定網卡的監聽模式

在 Linux 環境下,有一個指令估計大家都用過:

ifconfig

,它用來顯示或配置網絡裝置,譬如最常見的檢視網卡 IP 位址,或者啟用禁用某個網卡,修改網卡的 MAC 位址等等。如果要管理無線網卡,另一個指令是 

iwconfig

,可以用來檢視無線網卡的狀态,或修改無線網卡的模式。最簡單的用法是不帶任何參數,如下所示:

1

2

3

4

5

6

7

8

9

10

11

$ iwconfig

lo        no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:"defenceOTA" 

Mode:Managed  Frequency:2.412 GHz  Access Point: 6C:72:20:5D:7F:57  

Bit Rate=130 Mb/s   Tx-Power=16 dBm  

Retry short limit:7   RTS thr:off   Fragment thr:off

Power Management:off

Link Quality=50/70  Signal level=-60 dBm 

Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

Tx excessive retries:3  Invalid misc:4   Missed beacon:0

可以列出系統中目前正在使用的無線網卡,以及無線網卡的模式,支援的無線協定,ESSID(無線擴充服務設定 ID,Extended Service Set ID),信号強度等。從上面的例子中可以看出,wlan0 為無線網卡,目前網卡的運作模式為托管模式(Managed)。

大多數情況下,都可以使用下面的流程來啟用無線網卡的監聽模式(注意:必須以 root 身份運作):

1

2

3

4

$ su

# ifconfig wlan0 down

# iwconfig wlan0 mode monitor

# ifconfig wlan0 up

其中第一條指令将無線網卡 wlan0 停用,這一步有時不是必須的,但最好嘗試先停用無線網卡,否則很可能報下面這樣的錯誤:Device or resource busy 。

1

2

3

$ sudo iwconfig wlan0 mode monitor

Error for wireless request "Set Mode" (8B06) :

SET failed on device wlan0 ; Device or resource busy.

第二條指令設定 wlan0 的模式,這裡是将其設定成 monitor mode,當然也可以設定成其他的模式,譬如 

iwconfig wlan0 mode master

 可以将無線網卡設定成主模式。最後再啟用無線網卡,這時無線網卡就是以監聽模式運作的了,可以使用 

iwconfig

 指令确認一下。

最後我們還可以使用下面的指令改變監聽的信道:

1

# iwconfig wlan0 channel 3

踩坑:為什麼使用 iwconfig 将無線網卡設定成監聽模式後,過幾秒又會自動變成托管模式?

這個問題出現在你的筆記本已經連接配接上 Wifi 這種情況下,大多數情況下罪魁禍首就是 

Network Manager

 服務。如果無線網卡已經連接配接了 AP,則 

Network Manager

 會檢測無線網卡的模式,自動将其設定為 managed mode。是以你可以嘗試斷開無線連接配接,或者使用下面的指令停止 

Network Manager

 服務。

1

# service network-manager stop

2.3 使用 airmon-ng 設定網卡的監聽模式

如果你隻是想将無線網卡設定成監聽模式,使用 

iwconfig

 指令足矣,這時你就可以使用諸如 Wireshark 之類的抓包工具截取無線網絡封包了。但是使用 

iwconfig

 有一點不爽的地方在于,抓包時網卡是處于監聽模式的,這時不能通過 Wifi 連接配接網際網路,否則網卡又會自動切換回托管模式,這在你想一邊抓包一邊上網時會非常不便。是以你有另一個選擇,也是更好的選擇:

airmon-ng

 。

相信很多學習無線破解的同學都是看着 

aircrack-ng

 的破解教程入門的,确實,在無線破解這個領域,

aircrack-ng

 的地位簡直是神一般的存在。

aircrack-ng

 提供了一整套無線工具,每一個都小巧精練,各有春秋,如瑞士軍刀一般,

airmon-ng

 就是其中之一。

首先不帶任何參數直接運作它(必須以 root 身份執行):

1

2

3

4

5

6

$ sudo airmon-ng

Interface   Chipset     Driver

wlan0       Atheros AR9280  ath9k - [phy0]

enx0        Unknown     rtl8812au

可以列出目前所有的無線網卡,每一行顯示出每個網卡接口的名字,晶片類型,以及安裝的驅動程式。然後使用下面的指令将網卡設定成監聽模式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$ sudo airmon-ng start wlan0

Found 3 processes that could cause trouble.

If airodump-ng, aireplay-ng or airtun-ng stops working after

a short period of time, you may want to kill (some of) them!

PID Name

12341   NetworkManager

12354   wpa_supplicant

12363   dhclient

Process with PID 12363 (dhclient) is running on interface wlan0

Interface   Chipset     Driver

wlan0       Atheros AR9280  ath9k - [phy0]

(monitor mode enabled on mon0)

和 

iwconfig

 不同的是,

airmon-ng

 建立了一個虛拟網卡 mon0,并在 mon0 上啟用了監聽模式,真實的無線網卡 wlan0 保持不變,還是運作在托管模式下,這樣你就可以上網抓包兩不誤了。這個指令還有一個有意思的地方在于,它會檢測系統中目前正在運作的程序,分析出哪些程序可能會對無線抓包有影響,并顯示出來。你可以單獨使用 

airmon-ng check

 指令來做檢測,還可以使用 

airmon-ng check kill

 直接 kill 掉那些可能有影響的程序。更多用法可以參考 airmon-ng 的官方文檔。

2.4 使用 iw 監聽無線網絡

iw

 是 Linux 系統上的另一款無線配置工具,它的出現是為了解決 

iwconfig

 的很多不足,或者說它完全是為了取代 iwconfig 而開發的。

之是以要新開發一套無線配置工具,還要從無線擴充(Wireless-Extensions)說起。Wireless-Extensions(簡稱 WE,或者 Wext) 是由 Jean Tourrilhes 1997 年開發并添加到 Linux 核心的,它通過 Linux 的系統調用 

ioctl()

 來實作使用者層和核心層之間的通信。由于設計的比較粗糙,使用 WE 開發的程式很難管理,并且由于它年代久遠,WE 除了一些基本的 bugfix 之外也無人維護了,是以亟需一種新的無線驅動架構來指導無線程式的開發。于是便出現了 cfg80211 和 nl80211 。需要特别指出的是 cfg80211 不再使用 ioctl 系統調用,而是使用 Netlink(基于 socket 通信)。iw 就是完全基于 cfg80211 架構重新設計并開發的。

使用 iw 不僅可以實作和 iwconfig 完全一樣的功能,而且它的用法要更豐富(當然也更複雜),可以先使用 

iw help

 檢視它的使用幫助(友情提醒:使用 iw 之前先得有個心理準備,iw 指令的輸出大多比較晦澀,而且你可能會被它大片大片的技術資訊所吓住,不用急,從上往下慢慢看)。下面的幾個指令可能是你想嘗試的:

1

# iw list

列出所有的無線裝置,以及每個無線裝置的詳細資訊,真的非常詳細,非常專業,可能會吓住你,如果要顯示的簡單點,可以使用:

1

2

3

4

5

6

7

8

9

# iw dev

# iw dev wlan0 info

phy#0

Interface wlan0

ifindex 3

wdev 0x1

addr 00:17:c4:e8:67:20

type managed

channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz

這個指令和 iwconfig 類似,顯示出無線接口的名稱,網卡模式,所處的頻道等,這些都是接口的屬性,無論有沒有連接配接 AP ,隻要你沒有修改過它,接口的屬性都是固定的,如果你連接配接了 AP ,還可以使用下面的指令檢視跟連接配接相關的資訊(SSID,頻率,信号強度等):

1

2

3

4

5

6

7

8

9

10

11

12

# iw dev wlan0 link

Connected to 6c:72:20:5d:7f:57 (on wlan0)

SSID: defenceOTA

freq: 2412

RX: 202000891 bytes (213176 packets)

TX: 11249479 bytes (110592 packets)

signal: -60 dBm

tx bitrate: 108.0 MBit/s MCS 5 40MHz

bss flags:  short-preamble short-slot-time

dtim period:    1

beacon int: 100

當然,我們最關心的,還是将網卡設定為監聽模式:

1

2

# iw dev wlan0 interface add mon0 type monitor

# ifconfig mon0 up

上面的指令新增了一個虛拟網卡接口 mon0 ,并将 mon0 設定為監聽模式。這個指令和上面的 

airmon-ng

 的效果幾乎是一樣的,wlan0 仍然保持 managed 模式不變,新增的 mon0 運作在 monitor 模式下。虛拟接口新增之後記得要使用 

ifconfig up

 啟用起來,再通過下面的指令設定頻率。

1

# iw dev mon0 set freq 2437

三、掃描無線網絡

至此,我們已經準備就緒,網卡已經具備了監聽周圍無線信号的能力,這個時候你可以啟動 Wireshark 開始資料分析之路了。但是直接分析,可能會完全沒有頭緒,找不到方向,因為 Wireshark 會捕獲所有流經網卡的資料,如果你周圍的無線熱點很多,将是一場資料報災難。是以,我們決定有的放矢,先掃描周圍都有哪些無線熱點,以及哪些無線裝置,然後再有針對性的抓取指定熱點的封包。

3.1 iw 和 iwlist

上節中介紹的 

iw

 指令,以及 Linux 自帶的另一個無線指令 

iwlist

 可以實作簡單的掃描功能,譬如 iw 的掃描指令如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

$ sudo iw dev wlan0 scan

BSS 6c:72:20:5d:7f:57(on wlan0) -- associated

TSF: 1060538844661 usec (12d, 06:35:38)

freq: 2412

beacon interval: 100 TUs

capability: ESS Privacy ShortPreamble ShortSlotTime (0x0431)

signal: -61.00 dBm

last seen: 184 ms ago

Information elements from Probe Response frame:

SSID: defenceOTA

Supported rates: 1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0

DS Parameter set: channel 1

ERP: <no flags>

Extended supported rates: 6.0 12.0 24.0 48.0

HT capabilities:

Capabilities: 0x11ee

HT20/HT40

SM Power Save disabled

RX HT20 SGI

RX HT40 SGI

TX STBC

RX STBC 1-stream

Max AMSDU length: 3839 bytes

DSSS/CCK HT40

Maximum RX AMPDU length 65535 bytes (exponent: 0x003)

Minimum RX AMPDU time spacing: 4 usec (0x05)

HT RX MCS rate indexes supported: 0-15, 32

HT TX MCS rate indexes are undefined

HT operation:

* primary channel: 1

* secondary channel offset: above

* STA channel width: any

* RIFS: 0

* HT protection: 20 MHz

* non-GF present: 1

* OBSS non-GF present: 0

* dual beacon: 0

* dual CTS protection: 0

* STBC beacon: 0

* L-SIG TXOP Prot: 0

* PCO active: 0

* PCO phase: 0

WPA:     * Version: 1

* Group cipher: TKIP

* Pairwise ciphers: TKIP CCMP

* Authentication suites: PSK

RSN:     * Version: 1

* Group cipher: TKIP

* Pairwise ciphers: TKIP CCMP

* Authentication suites: PSK

* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

WMM:     * Parameter version 1

* BE: CW 15-1023, AIFSN 3

* BK: CW 15-1023, AIFSN 7

* VI: CW 7-15, AIFSN 2, TXOP 3008 usec

* VO: CW 3-7, AIFSN 2, TXOP 1504 usec

BSS Load:

* station count: 4

* channel utilisation: 164/255

* available admission capacity: 31250 [*32us]

Overlapping BSS scan params:

* passive dwell: 20 TUs

* active dwell: 10 TUs

* channel width trigger scan interval: 300 s

* scan passive total per channel: 200 TUs

* scan active total per channel: 20 TUs

* BSS width channel transition delay factor: 5

* OBSS Scan Activity Threshold: 0.25 %

Extended capabilities: HT Information Exchange Supported

Country: CN Environment: Indoor/Outdoor

Channels [1 - 13] @ 16 dBm

WPS:     * Version: 1.0

* Wi-Fi Protected Setup State: 1 (Unconfigured)

* Response Type: 3 (AP)

* UUID: 28802880-2880-1880-a880-6c72205d7f57

* Manufacturer: Ralink Technology, Corp.

* Model: Ralink Wireless Access Point

* Model Number: RT2860

* Serial Number: 12345678

* Primary Device Type: 6-0050f204-1

* Device name: DIR-816

* Config methods: Label, Display

* RF Bands: 0x1

* Unknown TLV (0x1049, 6 bytes): 00 37 2a 00 01 20

該指令會列印出大量的資訊,每個無線熱點以及它的詳細資訊都會被展示出來,可以使用下面的技巧隻顯示 SSID 和 BSS:

1

2

3

4

5

6

7

$ sudo iw dev wlan0 scan | egrep "^BSS|SSID"

BSS 6c:72:20:5d:7f:57(on wlan0) -- associated

SSID: defenceOTA

BSS 14:75:90:ac:96:98(on wlan0)

SSID: ak

BSS b0:48:7a:77:28:ee(on wlan0)

SSID: TP-LINK_7728EE

使用 

iwlist

 的指令格式如下:

1

$ sudo iwlist wlan0 scan

同樣的,這個指令會列印大量的資訊。可以使用下面的技巧顯示精簡資訊:

1

2

3

4

5

6

7

8

9

10

11

12

13

$ sudo iwlist wlan0 scan | egrep "Cell|ESSID|Channel"

Cell 01 - Address: 6C:72:20:5D:7F:57

Channel:1

Frequency:2.412 GHz (Channel 1)

ESSID:"defenceOTA"

Cell 02 - Address: 80:89:17:B9:2C:C2

Channel:1

Frequency:2.412 GHz (Channel 1)

ESSID:"wangshiyuan"

Cell 03 - Address: EC:26:CA:CC:9B:9A

Channel:1

Frequency:2.412 GHz (Channel 1)

ESSID:"XIANGLAN\'S FAMILY"

3.2 kismet

雖然 

iw

 和 

iwlist

 指令的輸出都不是很友好,但是在缺少其他選擇的時候,這兩個指令都可以幫上不少忙。當然,如果有更好的選擇,我還是推薦使用下面的 

kismet

 和 

airodump-ng

,他們不僅界面上很酷,而且功能上也更強大。我們先介紹 kismet 。

kismet 是一款 Linux 下的無線掃描程式,它的功能非常強大,不僅可以用來掃描周邊的無線網絡,也支援無線資料包的嗅探和破解,它還可以掃描出周圍隐藏的無線熱點,更厲害的是,它還内置了 IDS(Intrusion Detection System,入侵檢測系統)功能,可以檢測出周圍是否有無線嗅探器(比如 NetStumbler)。此外,它的插件功能也很優秀,可以支援 GPS和藍牙的掃描。它被收錄在 Kali Tool 裡。

在 Ubuntu 系統下可以直接使用 

apt-get install kismet

 來安裝,安裝完成之後,以 root 身份運作即可(kismet 也可以以非 root 身份運作,但功能會非常有限)。運作 kismet 之後,會彈出幾個框框,使用 Tab 鍵移動焦點位置,選擇 OK 一路往下。其中有一步會提供輸入網卡接口的名稱,上一節的幾個指令都可以檢視你的無線網卡接口名稱,一般來說名稱就叫 wlan0 或 ath0 之類的(特别注意的是,kismet 會自動将網卡設定成監聽模式,如果你輸入 wlan0,會建立出一個 wlan0mon 的監聽網卡,是以如果你已經啟用了監聽模式,譬如使用上面的例子建立了一個 mon0 的監聽網卡,可以直接填 mon0)。

完全配置好之後,我們就可以體驗 kismet 的強大功能了。在這裡我們隻關心它的無線掃描功能,kismet 不僅可以掃描出周邊所有的無線接入點,而且還可以掃描出每個無線接入點的用戶端,這在我們有針對性的嗅探和攻擊時非常有用。kismet 的使用界面如下圖所示(very cool),具體的使用方法和快捷鍵參考 kismet 文檔。

實戰無線網絡分析(篇一)無線監聽

3.3 airodump-ng

我們要介紹的另一個無線掃描程式是 airodump-ng,看名字就知道,它也和 airmon-ng 一樣,是 aircrack-ng 套件中的一個,而且它常常和 airmon-ng 配合使用,像下面這樣:

1

2

# airmon-ng start wlan0

# airodump mon0

airodump-ng 的運作界面如下圖所示:

實戰無線網絡分析(篇一)無線監聽

可以看到,airodump-ng 的功能和 kismet 可以說是不相上下,在掃描網絡這一方面,兩個工具都可以掃描到周圍所有的無線接入點(包括隐藏的接入點),以及正在連接配接接入點的工作站(比如手機等)。圖中資訊量比較大,下面簡單總結一下每一行每一列的意義,詳細資訊可以參考 airodump-ng 的文檔。

  • BSSID:表示無線 AP 的 Mac 位址。
  • PWR:信号強度,值越大,表示信号越強。它的值一般都是一個負數,是以上圖中除了 -1, -57 是最大的,表示該接入點離的最近,信号最好。PWR 值為 -1,說明不支援信号強度的檢視。
  • Beacons:Beacon 是無線資料包中最有用的一種,叫做信号資料包。802.11 的資料包按類型可以分成三類:管理、控制和資料。管理類資料包又可以分為三種子類型:認證(authentication)、關聯(association)和信号(beacon)資料包。Beacon 由 WAP 發送,穿過無線信道通知所有無線用戶端存在這個 WAP,并定義了連接配接它必須設定的一些參數。
  • #Data:捕獲到的資料分組的數量,包括廣播分組。
  • CH:信道号。
  • MB:WAP 所支援的最大速率。
  • ENC:使用的加密算法體系。

    OPN

     表示無加密,

    WEP?

     表示 WEP 或者 WPA/WPA2,

    WEP

     表示靜态的或者動态的 WEP,當然,WEP 加密很早就已經遭淘汰了,目前最常見的是 

    WPA

     和 

    WPA2

  • CIPHER:使用的加密算法。常見的算法有:CCMP、WRAAP、TKIP、WEP 等。
  • AUTH:使用的認證協定。常用的有:MGT(WPA/WPA2 使用獨立的認證伺服器,譬如 802.1x、RADIUS、EAP 等),SKA(WEP 的共享密鑰),PSK(WPA/WPA2 的預共享密鑰)和 OPN(開放式)。
  • ESSID:所謂的 SSID 号,如果啟用隐藏的話,ESSID 可以為空,或者顯示為 <length: 0>。
  • STATION:用戶端的 Mac 位址,包括連上的和想要連的用戶端。如果用戶端沒有連上 AP,ESSID 列顯示成 (not associated)。
  • Probe:被用戶端查探的 ESSID,如果用戶端正在試圖連接配接一個 AP,但是沒有連接配接上,将會顯示在這裡。

四、抓包

到這裡,萬事具備,隻欠東風。我們具備了監聽無線通信的能力,也可以掃描出周圍的無線接入點和用戶端資訊,下一步就是挑選一個你感興趣的接入點,開始抓包吧。

4.1 使用 kismet 和 airodump-ng 抓包

上面在介紹 kismet 和 airodump-ng 的時候,都隻是展示了它們掃描網絡的功能,實際上,從 airodump-ng 的名字也可以看出來,它不僅可以掃描網絡,還可以捕獲無線資料封包。

譬如在啟動 kismet 的時候,kismet 就會在啟動目錄生成好幾個檔案,如下。

1

2

3

4

5

6

$ ls -l Kis*

-rw-r--r-- 1 root root       0 8月  15 22:32 Kismet-20160815-22-32-05-1.alert

-rw-r--r-- 1 root root     264 8月  15 22:32 Kismet-20160815-22-32-05-1.gpsxml

-rw-r--r-- 1 root root   25111 8月  15 22:32 Kismet-20160815-22-32-05-1.nettxt

-rw-r--r-- 1 root root   57768 8月  15 22:32 Kismet-20160815-22-32-05-1.netxml

-rw-r--r-- 1 root root 1822733 8月  15 22:32 Kismet-20160815-22-32-05-1.pcapdump

其中,Kismet-***.pcapdump 就是捕獲的資料包,可以使用 Wireshark 等資料包分析工具打開。預設情況下,kismet 會捕獲所有的無線通信,資料包會變得非常大,可以通過指定 

filter_tracker

 參數來限制 kismet 隻捕獲特定 BSSID 的資料包,譬如下面這樣:

1

$ sudo kismet --filter-tracker BSSID\(6C:72:20:5D:7F:57\)

而 airodump-ng 預設資料包是不存檔案的,可以通過 

--write

 或 

-w

 參數将資料包儲存到指定檔案中:

1

2

3

4

5

6

$ sudo airodump-ng -w pack mon0

$ ls -l pack*

-rw-r--r-- 1 root root  5645 8月  15 23:48 pack-01.cap

-rw-r--r-- 1 root root  1651 8月  15 23:48 pack-01.csv

-rw-r--r-- 1 root root  2457 8月  15 23:48 pack-01.kismet.csv

-rw-r--r-- 1 root root 13460 8月  15 23:48 pack-01.kismet.netxml

其中,xxx-01.cap 就是捕獲的資料封包件,可以使用 Wireshark 打開分析。同樣的,這個檔案也有可能會很大,因為儲存了所有的無線資料封包,如果隻需要監聽某一個接入點,可以通過 

--bssid

 或 

--essid

 等參數指定:

1

$ sudo airodump-ng mon0 --bssid 6C:72:20:5D:7F:57

4.2 使用 Wireshark 和 tcpdump 抓包

通過上面的方法抓包完成之後,我們就可以使用 Wireshark 打開資料封包件來分析了。其實 Wireshark 除了可以分析資料封包件之外,也可以進行抓包。使用 Wireshark 抓包之前,首先将網卡設定為監聽模式,然後在 Wireshark 啟動界面中選擇處于監聽模式的網卡接口,這樣就可以了。

使用這種方式,界面上沒有 kismet 和 airodump-ng 直覺,你将會看到大量的資料包迎面襲來,密集恐懼症患者慎用。好在 Wireshark 具有強大的過濾器功能,可以通過設定下面的過濾器來減少那些我們不感興趣的資料。

實戰無線網絡分析(篇一)無線監聽

我們這裡隻關心抓包的方法,關于資料包的分析,我們将在下一篇部落格中介紹。最後要介紹的一個抓包工具是大名鼎鼎的 

tcpdump

,它可以說是抓包工具的鼻祖,指令如下:

1

$ sudo tcpdump -i mon0 -n -w wireless.cap

同樣的,抓封包件可以使用 Wireshark 打開進行分析,這裡不再贅述。