除ARP和DHCP請求外,在局域網(wǎng)中還有一些協(xié)議,會主動發(fā)送一些廣播或組播包,如BROWSER、SSDP和LLMNR等。此時通過監(jiān)聽方式,可以了解到一些活動主機的信息。本文介紹對這些協(xié)議數(shù)據(jù)包進(jìn)行監(jiān)聽的方法。
1. 使用Wireshark工具
Wireshark是一款非常流行的網(wǎng)絡(luò)封包分析軟件,功能十分強大。使用該工具可以截取各種網(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)中運行的程序,以免產(chǎn)生流量影響對數(shù)據(jù)包的分析。然后啟動Wireshark工具。在圖形界面依次選擇“應(yīng)用程序”|“嗅探/欺騙”|wireshark命令,將彈出如圖1所示對話框。或者,在命令行輸入如下命令:
root@daxueba:~# wireshark
執(zhí)行以上命令后,將彈出如圖1所示對話框。
圖1 警告信息
2)該對話框中顯示的是一個警告信息,提示在init.lua文件中使用dofile函數(shù)禁用了使用超級用戶運行Wireshark。這是因為Wireshark工具是使用Lua語言編寫的,并且在Kali Linux中的init.lua文件中有一處語法錯誤,所以會提示Lua:Error during loading:。此時只需要將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)容后,再次運行Wireshark將不會提示以上警告信息。
3)此時,單擊OK按鈕,即可啟動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é)議)列中可以看到每個數(shù)據(jù)包的協(xié)議。例如,監(jiān)聽到的協(xié)議數(shù)據(jù)包有ICMPv6、BROWSER、SSDP、NBNS、LLMNR、ARP、DHCP。此時,通過分析源(Source)和目標(biāo)地址(Destination),即可知道這些包是由哪個主機發(fā)送的,進(jìn)而確定該主機的狀態(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ā)送這幾個廣播數(shù)據(jù)包的源IP地址分別是192.168.33.147和192.168.33.1。由此可以說明,當(dāng)前局域網(wǎng)中IP地址為192.168.33.147和192.168.33.1的主機是活動的。
2. 使用Tcpdump工具
Tcpdump是一個命令行的嗅探工具,可以基于過濾表達(dá)式抓取網(wǎng)絡(luò)中的報文,分析報文,并且在包層面輸出報文內(nèi)容以便于包層面的分析。其中,使用Tcpdump工具監(jiān)聽數(shù)據(jù)包的語法格式如下:
tcpdump -i < interface >-w <file>
以上語法中的選項及含義如下:
-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個數(shù)據(jù)包。在以上命令中,沒有指定將輸出結(jié)果寫入到一個文件中,所以是標(biāo)準(zhǔn)輸出。如果使用-w選項指定捕獲文件的話,將不會是標(biāo)準(zhǔn)輸出。此外,還可以使用Wireshark工具,以圖形界面分析捕獲到的包。