@[TOC]Packet Sniffing and Spoofing Lab
实验网站连接link

1.准备工作

1.先在虚拟机上导入 SEED VM并完成相应的配置。配置可以参考:link

2.使用准备好的docker-compose.yml去配置虚拟机环境

2.1先把docker-compose.yml放到虚拟机的某个文件夹下。

2.2 然后再文件所在的目录下输入命令运行 docker-compose up -d就能直接配置并在后台运行。

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

2.1 Task 1.1: Sniffing Packets

Task 1.1A

1.编写python代码进行嗅探数据包。

2.找到自己的interface。

3.给sniffer文件赋予权限,并以管理员身份运行文件。在运行时要再启动一个终端进行ping10.9.0.5,来获取10.9.0.5发来的icmp报文。

4.使用seed用户去运行sniffer

说明普通用户没有权限去运行sniffer。

Task 1.1B

1.只捕获ICMP包。


2.只捕捉来自特定IP,且目标端口号为23的TCP数据包


3.捕捉来自或发送到特定子网的数据包,这里我们使用的子网为128.230.0.0/16。

Task 1.2 欺骗ICMP数据包

作为数据包欺骗工具,Scapy允许我们将IP数据包的字段设置为任意值。此任务的目标是利用任意源IP地址欺骗IP数据包。我们将欺骗ICMP回应请求数据包,并将它们发送到同一网络上的另一个虚拟机。我们将使用Wireshark观察我们的请求是否会被接收者接受。如果它被接受,一个回应应答包将被发送到欺骗的IP地址。
1.启动wireshark

2.创建抓包程序,并用wireshark进行查看。

Task1.3追踪路线

1.此任务的目的是使用Scapy来估计虚拟机和选定目的地之间的路由器数量方面的距离。这基本上是由跟踪工具实现的。在这个任务中,我们将编写我们自己的工具。这个想法非常简单:只需发送一个数据包(任何类型)到目的地,首先将其实时时间(TTL)字段设置为1。这个数据包将被第一个路由器丢弃,该路由器将向我们发送一个ICMP错误消息,告诉我们它的运行时间已经超过。这就是我们如何得到第一个路由器的IP地址。然后,我们将TTL字段增加到2,发送另一个数据包,并获得第二个路由器的IP地址。我们将重复此过程,直到我们的数据包最终到达目的地。需要注意的是,这个实验只得到一个估计结果,因为理论上,不是所有这些包采取相同的路径(但在实际中,它们可能在短时间内)。
2.编写追踪文件。

3.打印结果。

Task1.4 嗅探和欺骗

在此任务中,您将结合嗅探和欺骗技术来实现以下嗅探和欺骗程序。您需要在同一局域网上的两台机器:虚拟机和用户容器 。从用户容器中,您可以生成一个IPX。这将生成一个ICMP回波请求包。如果X被激活,ping程序将收到一个回波响应,并打印出响应。您的嗅探和欺骗程序运行在VM上,它通过数据包嗅探来监视局域网。每当它看到ICMP回波请求时,无论目标IP地址是什么,您的程序都应该立即使用数据包欺骗技术发送回波回复。因此,无论机器X是否活动,ping程序将始终收到回复,表明X激活。您需要使用Scapy来完成此任务。在您的报告中,您需要提供证据来证明您的技术有效的。在您的实验中,您应该从用户容器中获取以下三个IP地址。报告你的观察结果,并解释这些结果。

1.首先需要启动用户容器,需要使用到Docker exec 命令。


2.编写代码。

3.测试结果


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

3.1 Task 2.1: Writing Packet Sniffing Program

Task 2.1A: Understanding How a Sniffer Works

这部分主要是写一个打印捕获的包的源IP和目的IP地址。
1.编写代码。

#include <pcap.h>
#include <stdio.h>
#include <arpa/inet.h>/* IP Header */
struct ipheader {unsigned char      iph_ihl:4, //IP header lengthiph_ver:4; //IP versionunsigned char      iph_tos; //Type of serviceunsigned short int iph_len; //IP Packet length (data + header)unsigned short int iph_ident; //Identificationunsigned short int iph_flag:3, //Fragmentation flagsiph_offset:13; //Flags offsetunsigned char      iph_ttl; //Time to Liveunsigned char      iph_protocol; //Protocol typeunsigned short int iph_chksum; //IP datagram checksumstruct  in_addr    iph_sourceip; //Source IP address struct  in_addr    iph_destip;   //Destination IP address
};
struct ethheader {u_char  ether_dhost[6]; /* destination host address */u_char  ether_shost[6]; /* source host address */u_short ether_type;                  /* IP? ARP? RARP? etc */
};void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{struct ethheader *eth = (struct ethheader *)packet;if (ntohs(eth->ether_type) == 0x0800) { // 0x0800 is IP typestruct ipheader * ip = (struct ipheader *)(packet + sizeof(struct ethheader)); printf("       From: %s\n", inet_ntoa(ip->iph_sourceip));  printf("         To: %s\n", inet_ntoa(ip->iph_destip));   /* determine protocol */switch(ip->iph_protocol) {                               case IPPROTO_TCP:printf("   Protocol: TCP\n");return;case IPPROTO_UDP:printf("   Protocol: UDP\n");return;case IPPROTO_ICMP:printf("   Protocol: ICMP\n");return;default:printf("   Protocol: others\n");return;}}
}
int main()
{pcap_t *handle;
char errbuf[PCAP_ERRBUF_SIZE];
struct bpf_program fp;
char filter_exp[] = "icmp";
bpf_u_int32 net;
handle = pcap_open_live("enp0s3", BUFSIZ, 1, 1000, errbuf);
// Step 2: Compile filter_exp into BPF psuedo-code
pcap_compile(handle, &fp, filter_exp, 0, net);
if (pcap_setfilter(handle, &fp) !=0) {pcap_perror(handle, "Error:");}
// Step 3: Capture packets
pcap_loop(handle, -1, got_packet, NULL);
pcap_close(handle); //Close the handle
return 0;
}

2.测试运行结果。
运行c程序的命令要注意一下(


Question1:描述在sniff程序中的调用序列。
主要就是第一步,启动pcap监听网卡,第二步就是编译BPF过滤器并设置过滤器,第三步就是设置嗅探的处理函数,最后关闭嗅探即可。
Quesion2: 嗅探过程为什么需要root权限?没有root的话哪里出错?
嗅探数据包是一个高权限的操作,因为涉及到隐私,安全相关问题。如果普通用户也能嗅探数据包,那么他就能窃取别人的隐私,甚至盗取账号密码等等。
Question3: 打开嗅探程序的混杂模式,打开和关闭这个模式的区别是什么?
使用混杂模式可以监听所在网段下其他机器的数据包,关闭则不能。

Task 2.1B: Writing Filters

这部分主要是写一些过滤器。这部分还是复用 task 2.1A的代码,只是修改其中的过滤器而已
1.只捕捉两个特定主机之间的ICMP包
使用的过滤器为 icmp and src host 10.9.0.6 and dst host 10.9.0.1, 只捕捉从 10.9.0.6 发送到 10.9.0.1的ICMP包。结果如下,可以看到全是从 10.9.0.6 发送到 10.9.0.1的ICMP包,没有其他类型的包。
使用 attacker 和 host B两个容器(10.9.0.1 和 10.9.0.6)。


2.捕捉目的端口在10到100之间的TCP包
过滤器条件改为:tcp and dst portrange 10-100。

Task 2.1C: Sniffing Passwords.

这部分是用嗅探去捕捉telent协议中的密码。






我们最后可以得到密码为dees。同时用这种方法也可以得到用户名。

Task 2.2A: Write a spoofing program.



Lab1 Packet Sniffing and Spoofing Lab相关推荐

  1. 【SEED Labs 2.0】Packet Sniffing and Spoofing Lab

    本文为 SEED Labs 2.0 - Packet Sniffing and Spoofing Lab 的实验记录. 文章目录 实验原理 Lab Task Set 1: Using Scapy to ...

  2. Packet Sniffing and Spoofing Lab(报文嗅探欺骗SEED 实验)

    Packet Sniffing and Spoofing Lab 本次实验的目的有两点:学习使用报文嗅探&欺骗的工具.理解其背后的原理. 实验配置 本次实验使用处在同一局域网下的三台机器,使用 ...

  3. 【SeedLab】Packet Sniffing and Spoofing Lab

    实验环境 Lab Task Set 1: Using Scapy to Sniff and Spoof Packets 本节实验要求:借助Scapy库,实现网络流量的捕获与伪造. Task 1.1: ...

  4. 信息安全 SEED Lab10 Packet Sniffing and Spoofing Lab

    这个实验是关于数据包的嗅探与伪造 1. Task Set 1 这部分主要是利用工具来嗅探数据包,这里用的是 scapy. 可以用下面的命令进行安装. sudo pip3 install scapy 简 ...

  5. seed lab 2020 packet sniffing and spoofing lab

    本实验均使用 python3 scapy 完成 本文可能使用到的同时发包和收包的程序如下: 1. import subprocess 2. from time import * 3. from sys ...

  6. 【科软课程-信息安全】Lab13 Packet Sniffing and Spoofing

    1.0 概述 数据包嗅探和欺骗是网络安全中的两个重要概念:它们是网络通信中的两大威胁.能够理解这两种威胁对于理解网络中的安全措施至关重要.有很多包嗅探和欺骗工具,如Wireshark.Tcpdump. ...

  7. 数据包嗅探 Packet Sniffing

    实验前言 数据包嗅探(packet sniffing)和数据包欺骗(packet spoofing) 在网络安全中两个非常重要的部分.他们是网络通讯中两个主要的威胁.了解这两个威胁对于了解网络安全理论 ...

  8. Unit 1: Packet Sniffing 1.1 Packet Sniffing Introduction to Packet Sniffing

    >> Some people like to sniff glue. 有些人喜欢闻胶水. Some people like to sniff paint. 有些人喜欢闻油漆. Some p ...

  9. SeedLab1: Sniffing Spoofing Lab

    本学期开始两门课的SeedLab之旅- 网上能参考的资料比较少-要自己加油鸭

最新文章

  1. iOS开发系列--让你的应用“动”起来
  2. 【Codeforces】659B Qualifying Contest (sort)
  3. 【Markdown】如何在微信公众号上写markdown的文章
  4. oracle引号的嵌套,3.4.2 在一个直接量字符串中嵌入单引号
  5. ListView setOnItemClickListener无效原因分析
  6. 鸟哥的Linux私房菜(基础篇)- Red Hat 6.x旧文件
  7. python可变类型做默认参数
  8. 联发科MT8377 MT8389 MT6589 MT6577等芯片详细解析
  9. LXReorderableCollectionViewFlowLayout
  10. 边框border(HTML、CSS)
  11. 地理空间数据云下载的dem数据(xxxdem.tif格式)中的栅格大小从度(0.000002)改成米(30)
  12. 【知识整理】Nmap与Masscan
  13. Ubuntu18.04安装百度网盘客户端
  14. 速读原著-TCP/IP(Archie、WAIS、Gopher、Veronica和WWW)
  15. LintCode 1256. 第n个数位 JavaScript算法
  16. No matter how well thought out it is
  17. C++风格指南(Google版)
  18. linux打开文件脚本,linux脚本文件实现的功能有哪些剧本用工具打开
  19. 1t硬盘怎么分区最好_1t硬盘怎么分区合理
  20. 使用Vmware虚拟机装载Linux系统如何联网

热门文章

  1. 利用Python从字幕网上下载自己所需要的字幕(热门电影、美剧等)
  2. 用友U8案例实验应收管理后台配置
  3. Color Banding的个人记录
  4. Mysql基础篇(8)—— 变量、流程控制和游标
  5. 一次培训机构的Java面试
  6. 批量压缩图片软件 JAVA
  7. 高防服务器有哪些优势
  8. python数据分析中data_dict={h:v for h,v in zip(header,zip(header,zip(*value)}的含义
  9. 怕扫描王泄露数据?5分钟自建一个文档扫描器。——基于opencv
  10. Python 安装包环境小问题:WARNING: The repository located at pypi.douban.com is not a trusted or secure host a