网络扫描:监听数据包
2021-07-10
来源:计算机与网络安全
除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工具,以图形界面分析捕获到的包。