包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有许多包嗅探和欺骗工具,如Wireshark、Tcpdump、Netwox等。其中一些工具被安全专家以及攻击者广泛使用。能够使用这些工具对学生来说很重要,但对于网络安全课程的学生来说,更重要的是了解这些工具是如何工作的,即包嗅探和欺骗是如何在软件中实现的。
本实验的目标是让学生掌握大多数嗅探和欺骗工具的基本技术。学生们将使用一些简单的嗅探和欺骗程序,阅读它们的源代码,修改它们,并最终对这些程序的技术方面有深入的了解。在本实验结束时,学生应该能够编写自己的嗅探和欺骗程序。
二、过程一、Lab Task Set 1: Using Scapy to Sniff and Spoof Packets
许多工具可以用来做嗅探和欺骗,但其中大多数只提供固定的功能。Scapy是不同的:它不仅可以作为一个工具,还可以作为一个构建块来构建其他的嗅探和欺骗工具,也就是说,我们可以将Scapy功能集成到我们自己的程序中。在这组任务中,我们将对每个任务使用Scapy。要使用Scapy,我们可以编写一个Python程序,然后使用Python执行这个程序。请参阅下面的示例。我们应该使用根权限运行Python,因为欺骗数据包需要该特权。
通过简单测试,构造了一个IP数据包并打印其的一些信息:
(一)Task 1.1: Sniffifing Packets
本任务的目的是学习如何在Python程序中使用Scapy进行包嗅探。
首先获取网络接口名称,当我们使用提供的组合文件为这个实验室创建容器时,将创建一个新的网络来连接虚拟机和容器。
以下内容中提供了一个示例代码:
Task 1.1A.
1.在执行sniffer.py同时,使用ping发出icmp数据包。使用chmod a+x sniffer.py 添加执行权限,root权限运行上面的程序 sudo ./sniffer.py。
结果如下,可以看到其成功嗅探到了不同协议的数据包。
2.使用普通权限运行该程序 ./sniffer.py。可以看到报错,提示无权限。
这说明嗅探包需要高权限。若没有高权限,系统不允许嗅探数据包。
Task 1.1B
可以通过在嗅探中设置过滤器来实现这一点。Scapy的过滤器使用BPF(伯克利数据包过滤器)语法。
1.只捕捉ICMP数据包
嗅探结果如下,可以看到得到包均是ICMP:
2.捕获来自特定IP和目标端口号为23的任何TCP数据包
嗅探代码:
发送包代码:
嗅探结果如下,可以看到得到包来自特定IP和目标端口号为23:
3.捕获数据包来自一个特定的子网128.230.0.0/16
嗅探代码:
发送包代码:
嗅探结果如下,可以看到得到发送给子网128.230.0.0/16 和 该子网发送过来的数据包:
(二)Task 1.2: Spoofifing ICMP Packets
作为一个数据包欺骗工具,Scapy允许我们将IP数据包的字段设置为任意值。此任务的目的是用任意的源IP地址来欺骗IP数据包。我们将欺骗ICMP回波请求包,并将它们发送到同一网络上的另一个虚拟机。我们将使用线鲨来观察我们的请求是否会被接收人接受。如果它被接受,一个回复包将被发送到欺骗的IP地址。
在wireshark中可以看到伪造的包有了回复。
(三)Task 1.3: Traceroute
此任务的目的是使用Scapy来估计虚拟机和选定目的地之间的路由器数量方面的距离。这基本上是由跟踪工具实现的。在这个任务中,我们将编写我们自己的工具。
(四)Task 1.4: Sniffifing and-then Spoofifing
结合嗅探和欺骗技术实现以下嗅探和欺骗程序。在同一局域网上的两台机器:虚拟机和用户容器。从用户容器中,您可以生成一个IPX。这将生成一个ICMP回波请求包。如果X被激活,ping程序将收到一个回波响应,并打印出响应。嗅探和欺骗程序运行在VM上,它通过数据包嗅探来监视局域网。每当它看到ICMP回波请求时,无论目标IP地址是什么,您的程序都应该立即使用数据包欺骗技术发送回波回复。因此,无论机器X是否活动,ping程序将始终收到回复,表明X激活。您需要使用Scapy来完成此任务。
1.首先测试ping baidu.com结果如下。ttl=64为我们伪造的回复包,ttl=49的为正常的包。
2.测试ping 8.8.8.8
二、Lab Task Set 2: Writing Programs to Sniff and Spoof Packets
(一)Task 2.1: Writing Packet Sniffifing Program
编译运行后,ping baidu.com,可以看到发送的包出现在结果中。
Task 2.1A: Understanding How a Sniffer Works
• Question 1. 请使用您自己的单词来描述对嗅探器程序至关重要的库调用的序列。
第一步启动pcap监听网卡,第二步编译BPF过滤器并设置过滤器,第三步设置嗅探的处理函数,最后关闭嗅探即可。
• Question 2. 为什么你需要根的特权来运行一个嗅探器程序?如果没有根权限,程序在哪里失败?
嗅探数据包是一个高权限的操作,涉及到隐私安全,所以需要根的特权来运行一个嗅探器程序。如果普通用户也能嗅探数据包,那么他就能窃取别人的隐私。若没有根权限运行该程序,可以发现在第一步监听网卡就失败。
• Question 3.这个模式在开启和关闭时的区别
使用混杂模式可以监听所在网段下其他机器的数据包,关闭则不能。打开混杂模式,监听到了本网段另一机器ping baidu.com的数据包,关闭后则嗅探不到。一般来说,非混杂模式的嗅探器中,主机仅嗅探那些跟它直接有关的通信,如发向它的,从它发出的,或经它路由的等都会被嗅探器捕捉。而在混杂模式中则嗅探传输线路上的所有通信。在非交换式网络中,这将是整个网络的通信。这样做最明显的优点就是使更多的包被嗅探到,它们因你嗅探网络的原因或者对你有帮助,或者没有。但是,混杂模式是可被探测到的。
Task 2.1B: Writing Filters.
为嗅探器程序编写过滤器表达式,以捕获以下每一个内容。
1.捕获两个特定主机之间的ICMP数据包。
使用2.1A代码,将其中过滤器修改,使用的过滤器为 icmp and src host 10.0.2.4 and dst host 6.6.6.6, 只捕捉从 10.0.2.4 发送到 6.6.6.6的ICMP包。
2.捕获目标端口号在10到100范围内的TCP数据包。
使用的过滤器为 tcp and dst portrange 10-100。
用浏览器访问baidu.com的包出现在结果中,用浏览器访问baidu.com:111的包没有出现在结果中。
Task 2.1C: Sniffifing Passwords.
请展示,当有人在您正在监视的网络上使用电信网时,您可


