嗅探与欺诈实验

news/2025/1/18 16:02:10/文章来源:https://www.cnblogs.com/wxrwajiez/p/18516132

 

 

 

作业题目

包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有许多包嗅探和欺骗工具,如Wireshark、Tcpdump、Netwox等。其中一些工具被安全专家以及攻击者广泛使用。能够使用这些工具对学生来说很重要,但对于网络安全课程的学生来说,更重要的是了解这些工具是如何工作的,即包嗅探和欺骗是如何在软件中实现的。

本实验的目标是让学生掌握大多数嗅探和欺骗工具的基本技术。学生们将使用一些简单的嗅探和欺骗程序,阅读它们的源代码,修改它们,并最终对这些程序的技术方面有深入的了解。在本实验结束时,学生应该能够编写自己的嗅探和欺骗程序。

实验步骤及结果

0 :Environment Setup using Container

目的:创建实验需要环境。

在本次实验中,我们使用三个容器(seed-attacker,host A,host B)来充当三台连接到同一局域网的计算机。

进入实验给的Labsetup文件夹,创建docker:

1.1

出现错误,因为上次实验的容器和这次实验的用了重复的地址。

删除所有容器,再重新创建docker,这次成功开启docker:

1.2

1.3

1.4

当我们创建容器时就创建了一个新的网络来连接虚拟机和容器,这个网络的IP前缀是10.9.0.0/24,查看这个网络接口的ID(后面实验会用到):

1.4

Lab Task Set 1: Using Scapy to Sniff and Spoof Packets

目的:尝试使用Scapy。

Scapy是一个强大的交互式数据包处理程序,能够伪造或解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等,需要在root权限下运行。我们可以将Scapy函数集成到我们自己的程序中。

尝试使用Scapy:

1.5

我们导入了Scapy包,创建了一个没有设置任何参数的IP数据包,再把数据包中的内容打印了出来。

Task 1.1: Sniffing Packets

目的:使用Scapy嗅探网络接口。

通过上面的实验,我们已经得到docker创建的网络的接口是br-cceebc63acaf,我们创建Python代码嗅探此接口:

2.0

2.1

在这段代码中,sniff函数用于抓取网络上的数据包,iface=

'br-cceebc63acaf'指定要嗅探的网络接口,filter='icmp'指定要抓取的协议类型为ICMP;prn指定回调函数是print_pkt(),该函数打印pkt。

Task 1.1A.

使用root权限运行task1.1.py:

2.3

同时,使用虚拟机ping容器host A(ping命令会发送ICMP包):

2.2

Scapy嗅探到数据包:2.42.5

在非root权限下执行:

运行出错,提示我们操作不被允许,只有在root权限下网卡才会设置成为‘混杂模式’;所以在普通用户的权限下嗅探程序不能运行。

Task 1.1B.

目的:使用Scapy捕获特定类型的包

• 只捕获ICMP 包

Task1.1A中已完成

• 捕获来自特定IP以及目的端口是23的TCP包

Telnet是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式,它的默认端口号是23.

为了捕获到特定IP且目标端口号为23的TCP数据包,我们可以使用telnet命令远程登录host A。

构造嗅探程序taak1.1B.py(特定IP为本虚拟机IP10.9.0.1):

1.4

执行程序:

1.2

远程连接host A:

1.3

成功捕捉数据包:

1.5 1.6

• 捕获来自或进入一个特定的子网的数据包(非容器在的子网)

选择子网128.230.0.0/16。

编写发送包程序sendpacket.py:

该程序向特定子网(128.230.0.0/16)发送一个包,再从这个子网发送一个包回来。为了避免广播,我们指定一个特定子网中的主机(128.230.0.1)。

2.2

同时需要注意,向128.230.0.1发送数据包时使用的网络接口和之前的不同,因此源IP为10.0.2.15.

2.1

编写捕捉包程序catchpacket.py:

2.7

使用summar()只展示一行摘要。

执行程序:

2.3

执行发送包程序:

2.4

捕捉到数据包:

  1. 向子网发送:

2.5

  1. 子网返回:

2.6

Task 1.2: Spoofing ICMP Packets

目的:伪造虚假源IP的ICMP包(同一子网)。

编写代码task1.2.py,伪造虚假源IP(host A)发送ICMP数据包到host B,让host B回复host A:

3.5

运行代码:

3.3

使用wireshark查看:

3.6

成功欺骗。

Task 1.3: Traceroute

目的:估算从虚拟机到特定IP之间的路由器距离。

特定的IP选为103.235.47.103(www.baidu.com)

编写两个代码文件,task1.3.py用于一遍遍发送ttl递增的ICMP数据包:

4.4

task1.3B.py用于捕获返回的ICMP数据包:

每收到一个ICMP数据包,ttl就加1,直到ICMP数据包的type为0(回显回答),输出最后的路径结果,程序结束。

4.2

执行task1.3B.py:

4.3

发送数据包:

4.6

多次尝试得到结果:

4.5

Task 1.4: Sniffing and-then Spoofing

目的:欺骗主机让它觉得自己ping通了。

正常ping host A:

用wireshark查看:

5.5

5.35.4

可以发现,我们在构造ICMP回复时,要注意:id要相同,seq为报文序列号,用于标记报文顺序,也要相同,源目的IP地址交换,源目的MAC地址交换,type为0(reply).

使用host A作为被欺骗者,虚拟机充当它的网络接口,可以在虚拟机上运行嗅探和欺骗程序。

编写嗅探和欺骗程序sniff_spoof.py:

5.6

添加Raw作为应用层的数据,否则即使被欺骗的主机能收到了欺骗包,ping程序无法识别是响应包。

运行程序:

5.7

启动host A的shell,开始实验:

  1. ping互联网中不存在的主机1.2.3.4:

6.1

收到回复。

  1. ping局域网中不存在的主机10.9.0.99:

6.2

不可达。

hostA向局域网内的主机发包不会经过网关,因此攻击程序不会收到ICMP包,也就不会返回欺骗包。

  1. ping互联网中存在的主机8.8.8.8:

6.3

收到冗余包。

目标主机和攻击机都能收到ICMP包并做出响应,所以出现了冗余包。

Lab Task Set 2: Writing Programs to Sniff and Spoof Packets

Task 2.1: Writing Packet Sniffing Program

目的:编写一个嗅探程序来打印出每个捕获的数据包的源和目标IP地址。

分析实验给的示例代码。

1.1

1.2

代码首先使用pcap_open_live()开启了一个有效的pcap会话,用pcap_compile()编译过滤表达式后,将编译好的过滤器用pcap_setfilter()与pcap会话绑定。使用pcap_loop()进入永不停止的循环捕获数据包,一经捕获,使用回调函数got_packet()处理,最后使用pcap_close()关闭会话。

我们可以在示例代码的基础上修改got_packet()函数来完成任务功能。

编写程序sniff.c:

  1. 导入新包

1.4

  1. 修改got_packet()

在网络数据包中,以太网头之后就是IP头,在packet(指向以太网帧的指针)上加上sizeof(struct ether_header)(以太网头的大小)后,指针iph就是指向IP头的指针,再使用print_ip()函数打印IP地址。

1.3

  1. 修改网络接口

1.4

编译并运行sniff.c:

1.6

从host A ping host B:

1.7

得到结果:

1.8

Question 1:对嗅探程序至关重要的库调用的序列。

pcap_open_live():开启一个有效的pcap会话;

pcap_compile():编译过滤表达式;

pcap_setfilter():将编译好的过滤器与pcap会话绑定;

pcap_loop():永不停止地循环捕获数据包;

pcap_close():关闭会话。

Question 2:为什么需要root权限来运行一个嗅探器程序?如果没有root特权,程序在哪里失败?

不在root权限下运行程序:

1.5

报错segment fault。

通常在程序试图访问的内存区域它没有被授权访问,或者试图执行某些不允许的操作时,操作系统就会产生一个segment fault。

程序需要访问网络接口,这就需要root权限,如果没有root权限,那在第一步pcap_open_live()开启pcap会话就会失败。

Question 3:演示混杂模式在开启和关闭时的区别。

混杂模式开启时

2.5

2.2

用host A ping host B,

2.3

成功捕获数据包:

2.4

混杂模式关闭时

2.6

2.1

用host A ping host B,

2.7

没有捕获数据包:

2.8

用本虚拟机ping host B:

2.9

捕获到数据包:

2.91

网络中的每个网卡都能听到所有广播的数据帧,但网卡会检查数据帧目的地址是否与该网卡的MAC地址吻合,只有吻合的数据帧才会进入到操作系统的内核中。开启了混杂模式后,所有的数据帧都会传递给内核。所以,没有开启混杂模式时,只能捕获源目的IP是自己的包。

Task 2.1B: Writing Filters.

目的:编写过滤器

  • 捕获两个特定主机(host A,host B)之间的ICMP数据包

在之前代码的基础上,更改过滤器表达式字符串:

3.1

编译并执行代码:

3.3

用host A ping host B:

3.2

可以捕获:

3.4

用本虚拟机ping host B:

3.5

没有捕获:

3.6

  • 捕获目标端口号在10到100的TCP数据包

更改过滤器表达式字符串:

3.7

编译并执行代码:

3.8

用curl对host A的15端口发起请求:

3.9

捕获成功:

3.91

用curl对host A的1端口发起请求:

3.9

没有捕获:

3.91

Task 2.1C: Sniffing Passwords.

目的:telnet远程连接,捕获其登录名和密码。

telnet发送的数据固定在报文第66字节。

编写代码tel.c:

捕获3

运行代码:

捕获4

远程连接host A:

捕获2

得到密码:

捕获

Task 2.2: Spoofing

Task 2.2A: Write a spoofing program.

目的:编写数据包欺骗程序

使用raw socket编写数据包欺骗程序。

raw socket会在缓冲区创建整个数据包,然后发送,所以使用raw socket编写数据包欺骗程序分为两步:在缓冲区中构造数据包和发送数据包。

编写代码spoofing.c。

  1. 构造发送数据包的代码:

在raw socket编程中,数据包已经包含了目的信息,因此,除了设置协议族信息和目的IP地址之外,没有必要设置sockaddr_in的其他字段。

1.1

  1. 在缓冲区中构造数据包:

函数in_cksum()实现生成校验和的功能:

1.2

在缓冲区构造数据包并调用send_raw_ip_packet()发送欺骗包:1.3

程序欺骗host A 一个IP为1.2.3.4的主机向它发送了ICMP回应请求。

4.3

编译并执行:

2.22.3

用wireshark抓包检验代码效果。

2.1

10.9.0.5回复了这个不存在的IP,欺骗成功。

Task 2.2B: Spoof an ICMP Echo Request.

目的:代表互联网上的远程主机发送ICMP回应请求。

代表www.baidu.com发送ICMP回应请求。

修改源IP为220.181.38.150

3.2

编译执行代码:

3.4

3.3

欺骗成功。

Question 4:是否可以将IP数据包长度字段设置为任意值,而不管实际的数据包有多大?

不能,按照IP协议的规定,这个字段的值应该是整个IP数据包的字节数的正确值。如果尝试设置一个非法的值,那么大多数的操作系统和网络设备将会丢弃这个数据包,或者产生一个错误通知。

Question 5:使用原始套接字编程,是否需要计算IP报头的校验和?

不需要,在数据包发送过程中,操作系统会设置该字段。

Question 6:为什么需要root权限来运行使用原始套接字的程序?如果没有root权限执行,程序在哪里失败?

因为原始套接字提供了更低级别的网络访问,使得应用程序可以直接处理和修改网络数据包。

如果没有root权限,会在第一步,创建原始套接字就失败。

Task 2.3: Sniff and then Spoof

目的:嗅探并欺骗

将之前的两个代码进行整合,编写代码sniff_sp.c:

嗅探网络接口br-cceebc63acaf:

6.2

将回调函数got_packet()改为发送欺诈包:

6.1

设置源目的IP时交换嗅探到的包的源目的IP。

在本虚拟机编译并运行代码:

4.1

用host A ping 一个不存在的IP1.2.3.4:

4.3

得到回复:

4.2

欺骗成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824210.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强势建议收藏!2024年工程项目管理平台上的10个高效工具

一、多功能的禅道 禅道作为工程项目管理平台,拥有众多强大功能。 在项目管理和协作方面,禅道集成了产品管理、项目管理、质量管理、文档管理、组织管理和事务管理等多方面功能,完整覆盖了工程项目管理的核心流程。通过禅道,团队成员可以清晰地了解项目的各个环节,从需求收…

TCP攻击实验

作业题目 本实验的学习目标是让学生获得有关漏洞以及针对这些漏洞的攻击的第一手经验。聪明人从错误中学习。在安全教育中,我们研究导致软件漏洞的错误。研究过去的错误不仅有助于学生理解为什么系统容易受到攻击,为什么“看似良性”的错误会变成灾难,以及为什么需要许多安全…

环境变量与set-uid实验

作业题目 本实验室的学习目标是让学生了解环境变量如何影响程序以及系统行为。环境变量是一组动态命名值,可以影响正在运行的进程将在计算机上运行。大多数操作系统都使用它们,因为它们是1979年引入Unix。尽管环境变量会影响程序行为,但它们是如何实现的这一点很多程序员都不…

XSS攻击实验(Elgg)

作业题目 跨站点脚本(XSS)是一种常见于web应用程序中的计算机安全漏洞。此漏洞使攻击者有可能将恶意代码(如JavaScripts)注入受害者的web浏览器。 为了演示攻击者可以做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的web应用程序。我们已经注释掉了Elgg的一些…

USB E-Maker用途

E-Marker 是“Electronically Marked Cable”的缩写,是封装在 USB-C端口中的芯片。通过这个芯片,可以得到电缆的各种参数,包括功率、数据、视频传输、ID等信息。由于 Type-C 设备之间的功能差异很大,因此在决策过程中考虑电缆至关重要。例如,如果源和接收设备都需要 100W …

ENVI6.1新功能

ENVI 6.1于2024年10月正式发布,ENVI6.1此版本包括以下新增功能和改进功能:添加了对新的数据类型的支持 空间和光谱裁剪功能增强 新的基于BandMax和SAM的目标探测工作流工具 ENVI API和Modeler中增强的光谱处理 新的光谱指数 新的黑暗模式主题 新增和更新ENVI Toolbox工具 新增…

制作游戏加载进度条

首先,我们需要有一个背景进度条,然后在背景下面添加显示百分比的进度条图片,再创建一个Text,用于显示具体的百分比数字 大致结构如下:然后就是通过代码实现这个功能了:[SerializeField] private Image ProcessBar; [SerializeField] private Text ProcessText; private f…

【Unity】Addressables下的图集(SpriteAtlas)内存优化

前言:资源管理系统:AddressablesUI:模拟NGUI图集Sprite,在UGUI下继承Image增加UIImage组件,实现将SpriteAtlas组件拖拽到属性面板上,切换选择里面的小图问题:在检查项目内存占用过高问题时,发现直接拖拽上去的资源不受Addressables系统的自动引用管理,导致部分资源虽然…

O(∩_∩)O哈哈~

本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/18516047

我用这个 AI 工具生成单元测试,简直不要太爽!

本文分享如何使用驭码CodeRider 的单元测试功能生成单元测试文件。 在之前的文章如何用 Python 手撸一个 GitLab 代码安全审查工具?中,我用 Python 写了一个接受极狐GitLab 代码安全审计事件流并且将消息推送到钉钉群的脚本,完整的 python 代码为:from fastapi import Fast…

Ansible原理和安装

一.概念 简介 Ansible是一个IT自动化工具。它能配置系统、部署软件、编排更复杂的IT任务,如连续部署或零停机时间滚动更新。连接其他主机(管理节点)默认使用ssh协议 特性 Agentless:不需要在被管理节点上安装客户端,只要有sshd即可Serverless:在服务端不需要启动任何服务,…

明火识别视频分析服务器区域入侵智慧园区安防视频监控及动态布控预警方案

智慧园区安防视频监控及动态布控预警方案是一种综合性的安全管理解决方案,它通过结合视频监控技术、人工智能算法、大数据分析等技术,实现视频分析服务器对工厂区域内人、车、物的全面监控和管理。一、需求和目标系统建设目标:搭建重点部位人脸识别动态布控系统平台,建立动…