栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

网络攻防技术——嗅探与欺骗

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

网络攻防技术——嗅探与欺骗

一、题目

包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有许多包嗅探和欺骗工具,如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.
请展示,当有人在您正在监视的网络上使用电信网时,您可![以如何使用您的嗅探器程序来捕获密码。

使用telnet 10.0.2.5 ,并输入账户密码远程登录。嗅探到的密码如下

(二)Task 2.2: Spoofifing
Task 2.2A: Write a spoofifing program.
编辑代码,使用gcc -o task22A task22A.c spoof.c -lpcap编译,sudo ./task22A运行,查看后台wireshark,可以看到我们伪造的UDP包。

Task 2.2B: Spoof an ICMP Echo Request.
伪造ICMP Echo请求。伪造的代码其中源IP10.0.2.5是局域网内另一个虚拟机的IP。
使用gcc -o task22B task22B.c spoof.c checksum.c -lpcap 进行编译, sudo ./task22B运行,查看后台的wireshark,如下:
可以看到我们发送的源IP为10.0.2.5, 目的IP为8.8.8.8的ICMP包,并且还有回复。


• Question 4. 是否可以将IP包长度字段设置为任意值,而不管实际包有多大?
不可以,将代码中设置长度修改小后,wireshark没有捕捉到包,说明没有发出去。改大后成功发出。说明可以调大长度,不能调小长度。

• Question 5. 使用原始套接字编程,是否必须计算IP头的校验和?
不用计算IP头部的checksum,但是需要计算ICMP头部的checksum。

• Question 6. 为什么您需要根权限来运行使用原始套接字的程序?如果没有根权限执行,程序在哪里失败?
因为能任意读取发送包意味着很大的安全风险,所以需要root权限。

(三)Task 2.3: Sniff and then Spoof
结合嗅探和欺骗技术来实现以下嗅探和欺骗程序。需要在同一局域网上的两台机器。从机器A开始,你就可以得到一个IPX。这将生成一个ICMP回波请求包。如果X被激活,ping程序将收到一个回波响应,并打印出响应。您的嗅探和欺骗程序在攻击者机器上运行,它通过数据包嗅探监视局域网。每当它看到ICMP回波请求时,无论目标IP地址是什么,您的程序都应该立即使用数据包欺骗技术发送回波回复。因此,无论机器X是否活动,ping程序将始终收到回复,表明X激活。
使用 gcc -o task23 task23.c checksum.c spoof.c -lpcap编译程序,sudo ./task23运行。Ping 1.1.1.1,得到程序输出:


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/748106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号