除ARP和DHCP請求外,在局域網(wǎng)中還有一些協(xié)議,會(huì)主動(dòng)發(fā)送一些廣播或組播包,,如BROWSER、SSDP和LLMNR等,。此時(shí)通過監(jiān)聽方式,可以了解到一些活動(dòng)主機(jī)的信息,。本文介紹對(duì)這些協(xié)議數(shù)據(jù)包進(jìn)行監(jiān)聽的方法,。
1. 使用Wireshark工具
Wireshark是一款非常流行的網(wǎng)絡(luò)封包分析軟件,功能十分強(qiáng)大,。使用該工具可以截取各種網(wǎng)絡(luò)封包,,并顯示網(wǎng)絡(luò)封包的詳細(xì)信息。下面介紹使用Wireshark工具監(jiān)聽局域網(wǎng)中的各種廣播數(shù)據(jù)包,。
使用Wireshark進(jìn)行數(shù)據(jù)包監(jiān)聽,。具體操作步驟如下:
1)關(guān)閉系統(tǒng)中運(yùn)行的程序,以免產(chǎn)生流量影響對(duì)數(shù)據(jù)包的分析,。然后啟動(dòng)Wireshark工具。在圖形界面依次選擇“應(yīng)用程序”|“嗅探/欺騙”|wireshark命令,,將彈出如圖1所示對(duì)話框,。或者,,在命令行輸入如下命令:
root@daxueba:~# wireshark
執(zhí)行以上命令后,,將彈出如圖1所示對(duì)話框。
圖1 警告信息
2)該對(duì)話框中顯示的是一個(gè)警告信息,,提示在init.lua文件中使用dofile函數(shù)禁用了使用超級(jí)用戶運(yùn)行Wireshark,。這是因?yàn)閃ireshark工具是使用Lua語言編寫的,并且在Kali Linux中的init.lua文件中有一處語法錯(cuò)誤,,所以會(huì)提示Lua:Error during loading:,。此時(shí)只需要將init.lua文件中倒數(shù)第二行代碼修改一下就可以了,,原文件中倒數(shù)第一、二行代碼如下:
root@daxueba:~# vi /usr/share/wireshark/init.lua
dofile(DATA_DIR“console.lua”)
--dofile(DATA_DIR“dtd_gen.lua”)
將以上第1行修改如下:
--dofile(DATA_DIR“console.lua”)
--dofile(DATA_DIR“dtd_gen.lua”)
修改完該內(nèi)容后,,再次運(yùn)行Wireshark將不會(huì)提示以上警告信息,。
3)此時(shí),單擊OK按鈕,,即可啟動(dòng)Wireshark工具,,如圖2所示。
圖2 Wireshark的主界
4)在其中選擇eth0接口,,并單擊按鈕,,將開始捕獲數(shù)據(jù)包,如圖3所示,?;蛘撸苯与p擊選擇的網(wǎng)絡(luò)接口,,也可以開始捕獲數(shù)據(jù)包,。
圖3 監(jiān)聽到的數(shù)據(jù)包
5)從圖3中可以看到監(jiān)聽到的所有數(shù)據(jù)包。從Protocol(協(xié)議)列中可以看到每個(gè)數(shù)據(jù)包的協(xié)議,。例如,,監(jiān)聽到的協(xié)議數(shù)據(jù)包有ICMPv6、BROWSER,、SSDP,、NBNS、LLMNR,、ARP,、DHCP。此時(shí),,通過分析源(Source)和目標(biāo)地址(Destination),,即可知道這些包是由哪個(gè)主機(jī)發(fā)送的,進(jìn)而確定該主機(jī)的狀態(tài),。為了能夠快速找到廣播的數(shù)據(jù)包,,可以使用顯示過濾器進(jìn)行過濾。顯示過濾器的語法格式如下:
ip.dst==廣播地址
在本例中廣播地址為192.168.33.255,,所以輸入的顯示過濾器為“ip.dst==192.168.33.255”,。當(dāng)過濾成功后,顯示如圖4所示,。
圖4 廣播數(shù)據(jù)包
6)在圖4中顯示的數(shù)據(jù)包都是廣播數(shù)據(jù)包,。發(fā)送這幾個(gè)廣播數(shù)據(jù)包的源IP地址分別是192.168.33.147和192.168.33.1。由此可以說明,,當(dāng)前局域網(wǎng)中IP地址為192.168.33.147和192.168.33.1的主機(jī)是活動(dòng)的,。
2. 使用Tcpdump工具
Tcpdump是一個(gè)命令行的嗅探工具,,可以基于過濾表達(dá)式抓取網(wǎng)絡(luò)中的報(bào)文,分析報(bào)文,,并且在包層面輸出報(bào)文內(nèi)容以便于包層面的分析,。其中,使用Tcpdump工具監(jiān)聽數(shù)據(jù)包的語法格式如下:
tcpdump -i < interface >-w <file>
以上語法中的選項(xiàng)及含義如下:
-i:指定監(jiān)聽的網(wǎng)絡(luò)接口,。
-w:指定數(shù)據(jù)包保存的文件名,。
使用Tcpdump工具監(jiān)聽局域網(wǎng)(192.168.33.0/24)中的廣播數(shù)據(jù)包。執(zhí)行命令如下:
root@daxueba:~# tcpdump -i eth0 'dst 192.168.33.255'
執(zhí)行以上命令后,,將顯示如下信息:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet),, capture size 262144 bytes
16:42:08.253592 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns:
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
16:42:09.003718 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns:
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
16:42:09.753975 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns:
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
16:43:40.623859 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
NBT UDP PACKET(138)
16:43:40.623967 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
NBT UDP PACKET(138)
16:55:47.618389 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
NBT UDP PACKET(138)
16:55:47.618562 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
NBT UDP PACKET(138)
16:58:20.188490 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns:
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
16:58:20.939089 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns:
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
16:58:21.689402 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns:
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
從以上輸出信息中可以看到監(jiān)聽到的數(shù)據(jù)包。從顯示的包信息中,,可以看到數(shù)據(jù)包的源和目標(biāo)IP地址,、使用的協(xié)議及包長度。如果想停止監(jiān)聽數(shù)據(jù)包的話,,按Ctrl+C組合鍵后,,將顯示如下信息:
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel
從輸出的信息中可以看到,捕獲到了10個(gè)數(shù)據(jù)包,。在以上命令中,,沒有指定將輸出結(jié)果寫入到一個(gè)文件中,所以是標(biāo)準(zhǔn)輸出,。如果使用-w選項(xiàng)指定捕獲文件的話,,將不會(huì)是標(biāo)準(zhǔn)輸出。此外,,還可以使用Wireshark工具,,以圖形界面分析捕獲到的包。