Lab1 Packet Sniffing and Spoofing Lab

这篇具有很好参考价值的文章主要介绍了Lab1 Packet Sniffing and Spoofing Lab。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1.准备工作

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

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

2.1先把docker-compose.yml放到虚拟机的某个文件夹下。
packet sniffing and spoofing lab,docker,linux

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

packet sniffing and spoofing lab,docker,linux

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

2.1 Task 1.1: Sniffing Packets

Task 1.1A

1.编写python代码进行嗅探数据包。
packet sniffing and spoofing lab,docker,linux
2.找到自己的interface。
packet sniffing and spoofing lab,docker,linux
3.给sniffer文件赋予权限,并以管理员身份运行文件。在运行时要再启动一个终端进行ping10.9.0.5,来获取10.9.0.5发来的icmp报文。
packet sniffing and spoofing lab,docker,linux
4.使用seed用户去运行sniffer
packet sniffing and spoofing lab,docker,linux
说明普通用户没有权限去运行sniffer。

Task 1.1B

1.只捕获ICMP包。
packet sniffing and spoofing lab,docker,linux

packet sniffing and spoofing lab,docker,linux
2.只捕捉来自特定IP,且目标端口号为23的TCP数据包
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux

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

Task 1.2 欺骗ICMP数据包

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

Task1.3追踪路线

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

Task1.4 嗅探和欺骗

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

1.首先需要启动用户容器,需要使用到Docker exec 命令。
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
2.编写代码。
packet sniffing and spoofing lab,docker,linux
3.测试结果
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux

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 length
                     iph_ver:4; //IP version
  unsigned char      iph_tos; //Type of service
  unsigned short int iph_len; //IP Packet length (data + header)
  unsigned short int iph_ident; //Identification
  unsigned short int iph_flag:3, //Fragmentation flags
                     iph_offset:13; //Flags offset
  unsigned char      iph_ttl; //Time to Live
  unsigned char      iph_protocol; //Protocol type
  unsigned short int iph_chksum; //IP datagram checksum
  struct  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 type
    struct 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程序的命令要注意一下(packet sniffing and spoofing lab,docker,linux

packet sniffing and spoofing lab,docker,linux
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)。
packet sniffing and spoofing lab,docker,linux

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

Task 2.1C: Sniffing Passwords.

这部分是用嗅探去捕捉telent协议中的密码。
packet sniffing and spoofing lab,docker,linux

packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
我们最后可以得到密码为dees。同时用这种方法也可以得到用户名。

Task 2.2A: Write a spoofing program.

packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux
packet sniffing and spoofing lab,docker,linux文章来源地址https://www.toymoban.com/news/detail-732394.html

到了这里,关于Lab1 Packet Sniffing and Spoofing Lab的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSAPP lab1 Data Lab

    前言: 本系列文章用于记录开始学习csapp的过程,奈何感觉自己基础实在太渣渣,系统好好学习一下这本神书以及其对应的lab 这一张的lab是真的干,好几道题卡的我脑壳都卡秃噜了,好歹终于凭借着面向用例编程完成了这一张的lab 很多很多测试用例哦,再也不用担心绞尽脑

    2024年02月10日
    浏览(40)
  • CS144--Lab1笔记

    CS144——Lab1笔记 作为使用了版本管理的项目,开始新的开发,当然先要新建一个开发分支啦,可以用命令或者直接在IDE中GIT的图形控制界面操作,太简单就不细说。(我习惯命名:dev-lab1) 首先要从原始仓库合并Lab1的相关文件到本地仓库,接着在build目录下编译。执行下面的

    2024年02月20日
    浏览(54)
  • mit 6.824 lab1分析

    略 map阶段每个worker应该把中间文件分成nReduce份,nReduce是reduce任务的数量 worker完成reduce任务后生成文件名 mr-out-X mr-out-X 文件每行应该是 \\\"%v %v\\\" 格式,参考 main/mrsequential.go worker处理完map任务,应该把生成的中间文件放到当前目录中,便于worker执行reduce任务时读取中间文件 当所

    2023年04月10日
    浏览(50)
  • MySQL数据库操作 Lab1

    掌握MySQL安装、配置与登录方法,使用MySQL客户创建数据库及对数据库表完成各种操作 1、安装MySQL数据库管理系统,5.7.X(建议5.7.23及以上)或8.X版本都可以。客户端不限。 2、使用MySQL客户端创建数据库,并且在库中按照设计创建数据库表,并把数据插入各表中。 1、学习并掌

    2024年02月08日
    浏览(33)
  • 北京大学计算机网络lab1——MyFTP

    目录 Lab目标 一、知识补充 二、具体实现 1.数据报文格式和字符串处理 2.open函数 3.auth 4.ls 5.get和put 三、总结 ps:本人靠着计网lab几乎就足够在就业行情并不好的23年找到自己满意的工作了,计网lab的教程也非常给力,对我这种恐惧写lab的菜狗都非常友好(本人写lab3确实比较

    2024年02月07日
    浏览(54)
  • CS144 计算机网络 Lab1:Stream Reassembler

    上一篇博客中我们完成了 Lab0,使用双端队列实现了一个字节流类 ByteStream ,可以向字节流中写入数据并按写入顺序读出数据。由于网络环境的变化,发送端滑动窗口内的数据包到达接收端时可能失序,所以接收端收到数据之后不能直接写入 ByteStream 中,而是应该缓存下来并

    2023年04月20日
    浏览(38)
  • MIT6.5830 Lab1-GoDB实验记录(四)

    标签:Golang 读写缓冲区我是一点思路都没有,所以得单独开篇文章记录。 实验补充 了解buffer、序列化与反序列化 这里的序列化,简单来说类似于把一个很长的字符串拆成一个个字符;反序列化就是把这一个个字符拼回成完整的字符串。此处我们需要根据所给的Tuple,转换为

    2024年02月06日
    浏览(51)
  • MIT6.5830 Lab1-GoDB实验记录(五)

    完成了Exercise 1,还有四个Exercise在等着我,慢慢来吧。 实验准备 了解缓冲池 缓冲池,俗称BP。相关的概念还有数据页和缓存页。页(Pages)的概念和操作系统中“分页”的概念是一样的,指的都是把逻辑地址空间分为若干同等大小的页,并从0开始编号。 而缓冲池(Buffer Po

    2024年02月05日
    浏览(47)
  • 【SeedLab】BGP Exploration and Attack Lab

            本实验需要使用SEED互联网仿真器(已集成到docker配置文件)。         启动docker容器,配置文件在/Labsetup/outputs/目录下。由于要配置很多docker容器,所以构建+启动过程会比较漫长。.随着docker启动,仿真器也随之运行,仿真器所用到的设备均为docker容器。        

    2024年02月04日
    浏览(40)
  • Packet Tracer - Configure Cisco Routers for Syslog, NTP, and SSH Operations

    配置OSPF MD5身份验证。 配置NTP服务。 设置路由器将消息记录到syslog服务器。 配置R3路由器以支持SSH连接。 在本练习中,您将配置OSPF MD5身份验证以实现安全的路由更新。 NTP服务器是本次活动中主NTP服务器。您需要在NTP服务器和路由器上配置身份验证,并设置路由器允许软件

    2024年02月01日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包