除ARP和DHCP請求外,在局域網中還有一些協議,會主動發送一些廣播或組播包,如BROWSER、SSDP和LLMNR等。此時通過監聽方式,可以了解到一些活動主機的信息。本文介紹對這些協議數據包進行監聽的方法。
1. 使用Wireshark工具
Wireshark是一款非常流行的網絡封包分析軟件,功能十分強大。使用該工具可以截取各種網絡封包,并顯示網絡封包的詳細信息。下面介紹使用Wireshark工具監聽局域網中的各種廣播數據包。
使用Wireshark進行數據包監聽。具體操作步驟如下:
1)關閉系統中運行的程序,以免產生流量影響對數據包的分析。然后啟動Wireshark工具。在圖形界面依次選擇“應用程序”|“嗅探/欺騙”|wireshark命令,將彈出如圖1所示對話框。或者,在命令行輸入如下命令:
root@daxueba:~# wireshark
執行以上命令后,將彈出如圖1所示對話框。
圖1 警告信息
2)該對話框中顯示的是一個警告信息,提示在init.lua文件中使用dofile函數禁用了使用超級用戶運行Wireshark。這是因為Wireshark工具是使用Lua語言編寫的,并且在Kali Linux中的init.lua文件中有一處語法錯誤,所以會提示Lua:Error during loading:。此時只需要將init.lua文件中倒數第二行代碼修改一下就可以了,原文件中倒數第一、二行代碼如下:
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”)
修改完該內容后,再次運行Wireshark將不會提示以上警告信息。
3)此時,單擊OK按鈕,即可啟動Wireshark工具,如圖2所示。
圖2 Wireshark的主界
4)在其中選擇eth0接口,并單擊按鈕,將開始捕獲數據包,如圖3所示。或者,直接雙擊選擇的網絡接口,也可以開始捕獲數據包。
圖3 監聽到的數據包
5)從圖3中可以看到監聽到的所有數據包。從Protocol(協議)列中可以看到每個數據包的協議。例如,監聽到的協議數據包有ICMPv6、BROWSER、SSDP、NBNS、LLMNR、ARP、DHCP。此時,通過分析源(Source)和目標地址(Destination),即可知道這些包是由哪個主機發送的,進而確定該主機的狀態。為了能夠快速找到廣播的數據包,可以使用顯示過濾器進行過濾。顯示過濾器的語法格式如下:
ip.dst==廣播地址
在本例中廣播地址為192.168.33.255,所以輸入的顯示過濾器為“ip.dst==192.168.33.255”。當過濾成功后,顯示如圖4所示。
圖4 廣播數據包
6)在圖4中顯示的數據包都是廣播數據包。發送這幾個廣播數據包的源IP地址分別是192.168.33.147和192.168.33.1。由此可以說明,當前局域網中IP地址為192.168.33.147和192.168.33.1的主機是活動的。
2. 使用Tcpdump工具
Tcpdump是一個命令行的嗅探工具,可以基于過濾表達式抓取網絡中的報文,分析報文,并且在包層面輸出報文內容以便于包層面的分析。其中,使用Tcpdump工具監聽數據包的語法格式如下:
tcpdump -i < interface >-w <file>
以上語法中的選項及含義如下:
-i:指定監聽的網絡接口。
-w:指定數據包保存的文件名。
使用Tcpdump工具監聽局域網(192.168.33.0/24)中的廣播數據包。執行命令如下:
root@daxueba:~# tcpdump -i eth0 'dst 192.168.33.255'
執行以上命令后,將顯示如下信息:
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
從以上輸出信息中可以看到監聽到的數據包。從顯示的包信息中,可以看到數據包的源和目標IP地址、使用的協議及包長度。如果想停止監聽數據包的話,按Ctrl+C組合鍵后,將顯示如下信息:
^C
10 packets captured
10 packets received by filter
0 packets dropped by kernel
從輸出的信息中可以看到,捕獲到了10個數據包。在以上命令中,沒有指定將輸出結果寫入到一個文件中,所以是標準輸出。如果使用-w選項指定捕獲文件的話,將不會是標準輸出。此外,還可以使用Wireshark工具,以圖形界面分析捕獲到的包。