(SEED-Lab) Sniffing_Spoofing

欢迎大家访问我的GitHub博客

https://lunan0320.cn

文章目录

  • (SEED-Lab) Sniffing_Spoofing
  • 一、实验目标
  • 二、实验原理
    • 2.1 Sniffing原理
    • 2.2 Spoofing原理
  • 三、实验器材
  • 四、Lab Task Set 1: Using Tools to Sniff and Spoof Packets
    • 4.1 Task1.1 Sniffing Packets
      • 4.1.1 Task1.1A
      • 4.1.2 Task1.1B
    • 4.2 Task 1.2: Spoofing ICMP Packets
    • 4.3 Task 1.3: Traceroute
    • 4.4 Task 1.4: Sniffing and-then Spoofing
  • 五、Lab Task Set 2: Writing Programs to Sniff and Spoof Packets
    • 5.1 Task 2.1: Writing Packet Sniffing Program
      • 5.1.1 Task 2.1A: Understanding How a Sniffer Works
        • Question1:描述在sniff程序中的调用序列
        • Quesion2: 嗅探过程为什么需要root权限?没有root的话哪里出错?
        • Question3: 打开嗅探程序的混杂模式,打开和关闭这个模式的区别是什么?
      • 5.1.2 Task 2.1B: Writing Filters
      • 5.1.3 Task 2.1C: Sniffing Passwords
    • 5.2 Task 2.2: Spoofing
      • 5.2.1 Task 2.2A: Write a spoofing program
      • 5.2.2 Task 2.2B: Spoof an ICMP Echo Request
    • 5.3 Task 2.3: Sniff and then Spoof

一、实验目标

1、掌握基本嗅探sniff程序的使用方法
2、对spoof过程有较为清晰的认识
3、在sniff_spoof的过程中学会使用python库函数调用
4、可以尝试使用C语言完成sniffing_spoofing过程

二、实验原理

2.1 Sniffing原理

OS内核 为嗅探程序 提供了 一个Raw Socket API ,当数据包到达链路层驱动位置,会进行复制,经过raw socket 交给嗅探程序,若是有多个嗅探程序,会复制多份,分别交付。
Sniffer程序并不须要得到全部的报文,可能只须要得到其中的一小部分报文,好比UDP报文,这里就须要进行过滤,UNIX系统添加了一个BSD 数据包过滤器(BSD packet filter,BPF)
在数据包复制以前进行过滤,以后进行复制的数据包相应大大减小

2.2 Spoofing原理

正常的应用程序仅仅向OS内核提供数据,目的IP地址,目的端口等信息,其余构造数据包的过程都交给OS内核去完成,而不能随意的去构造各个包头。与嗅探同样,这也可用raw socket API,进行数据包的构造,而后交给下层,发送出去。
本次实验就是基于以上原理,在Seed Ubuntu16.04下模拟整个过程。

三、实验器材

1.Seed Ubuntu16.04
2.Wireshark等常用捕包工具。

四、Lab Task Set 1: Using Tools to Sniff and Spoof Packets

4.1 Task1.1 Sniffing Packets

使用Scapy工具Sniff and Spoof packets测试scapy的使用

4.1.1 Task1.1A

在VMA上root权限下,运行嗅探程序
嗅探程序sniffer.py,抓取icmp类型的包,并将相关信息通过pkt.show()打印出来。Snifer.py程序如下

此时,另一台VMB对VMA执行ping IP 的命令,向VMA发送ICMP包。过程如下:
可以看到,共发送了两个ICMP包,并且均得到VMA的回送包。

在VMA上可以看到sniffer.py抓取到的包的详细信息:



其中第一个和第三个ICMP包为request类型即请求包,src地址是VMB的IP地址,发往VMA。第二个和第四个ICMP包类型为reply回复包,src为VMA的IP地址,发往VMB。
在VMA上普通用户seed条件下运行sniffer.py

可以看到没有成功运行,原因是Operation not permitted 操作不被允许,也就是用户的权限不够。

4.1.2 Task1.1B

通过设置filter的不同模式来运行sniffer.py程序。
Capture only the ICMP packet

在Task1.1A钟就是采用的过滤ICMP类型
Capture TCP packet,特定IP,指定端口23
根据端口要求,修改filter限制条件

在VMA中运行sniffer.py程序:

在VMB中使用telnet IP命令连接VMA,并输入VMA登录的用户名seed以及密码dees:

在VMA中可以看到已经成功嗅探到了TCP包:

同时,在这个过程中在VMA使用wireshark工具成功捕获到了一系列的tcp包:

点开其中的某个数据包,追踪TCP流,可以看到在这个过程中VMB中输入的登录用户名和密码:

捕获从特定子网发送的数据包
设置网络IP 202.108.0.0

在VMA上运行sniffer.py程序

在VMA上执行ping 202.108.22.5 ,均得到了回送reply

查看此时的嗅探程序,成功捕获到了来自子网202.108.0.0/16的回送包。说明嗅探程序可以通过改变filter的设置来捕获不同需求的数据包

4.2 Task 1.2: Spoofing ICMP Packets

冒充一个ICMP数据包

略微修改后,得到的VMA中的spoofing.py程序如下:
VMA的IP地址为:10.0.2.4,此时我们spoofing时候需要修改src地址,VMB的IP地址为:10.0.2.5 也就是此时的src地址

此时在VMA中运行spoofing程序,成功send

在VMB中通过wireshark捕获到VMA中发送的spoofing的数据包
显示src的IP地址为:10.0.2.9,而实际src的IP地址为:10.0.2.4,spoofing成功!

4.3 Task 1.3: Traceroute

写python程序自动更新数据包,重发
设置目标dst 的IP地址为202.182.118.135,设置跳数的上限为25。

执行此程序


在VMA中通过wireshark工具观察流量信息:

可以看到,黑色部分均为时间超过,不可达的数据包,直到最后才得到了目的主机的reply信息,说明此时数据包可以route到目的主机上去。

4.4 Task 1.4: Sniffing and-then Spoofing

首先根据例题得到,Sniffing程序


在VMA中启动sniffing3.4

在VMB中使用ping IP 命令,ping值定 IP地址

可以看到,在VMA中的程序运行中,成功sent packets,达到Sniffing and Spoofing的目的
在VMB中即使ping的是一个不存在的ip地址1.2.3.4,但是均得到了reply

查看VMB中wireshark工具中截获的流量信息:


可以看到,此时ping命令reply包的src地址为1.2.3.4,但是这个reply包实际则是VMA伪造的,而VMA的IP地址为10.0.2.4,成功达到了Sniffing and Spoofing的目的。
查看VMA中wireshark工具在伪造发送packets时候的流量信息:

可以看到,此时在VMA中是以1.2.3.4为srcIP地址来发送数据包的,在这个过程中隐瞒了真实的VMA的IP地址10.0.2.4
Ping一个在LAN中不存在的IP地址:10.9.0.99
在VMB中同样可以成功ping通

在VMB中同样可以看到,src地址来源是10.9.0.99

Ping一个在Internet上存在的host IP
在VMB中也是可以成功ping通

VMB中通过wireshark抓包看到reply的源头也是8.8.8.8

三种情况下都可以成功达到Spoofing的目的
此即在一个LAN中能够完成对其他主机的嗅探和欺骗功能

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

5.1 Task 2.1: Writing Packet Sniffing Program

根据提供的sample code,尝试运行sniff程序,学习嗅探过程

在VMB中执行ping命令ping VMA的IP地址,在VMA中执行sniffer程序,可以看到,VMB中发出去的ICMP包都得到了有效的会应,此时VMA中也嗅探到了这些数据包,Got a packet即捕获到了数据包。

5.1.1 Task 2.1A: Understanding How a Sniffer Works

Sniffer程序需要对每个捕获到的数据包将其源IP地址和目的IP地址打印出来。
可知,源地址和目的IP地址是位于IP数据包的头部部分的,在接收到数据包的时候需要将数据帧类型转换为以太网头部,继而去判断以太网头部的类型字段是否是0x800,是的话需要将数据交付IP协议处理。
判断是否需要IP协议处理采用以太网头部的类型字段是因为查阅资料后得知,当数据包采用IP协议时,以太网的头部类型字段是0x800

由此分析以太网头部结构,6字节的dst IP,6字节的src IP,以及2字节的type类型字段组成。

定义以太网头部结构如下:

从数据链路层上交网络层IP协议时,需要创建IP数据包的大小,总大小即为pkt的大小与以太网头部的大小之和。之后打印出IP头部的src_IP与dst_IP即可。

构造IP头部时候,需要考虑头部的组成,查阅资料后得知组成部分分为4bits版本号、4bits头部长度、8bits服务类型、16bits总长度、16bits标识、3bits标识、13bits位偏移、8bitsTTL、8bits协议、16bits头部校验和、32bits源IP和目的IP。总共20bytes构成(不考虑选项字段)

由此,可以构造出如下的IP首部:

起初,IP_head中的src_ip与dst_ip,设置为int类型,但是在程序运行的时候不建议使用int作为ip地址32位的类型,根据提示,修改了ip的类型,改为struct in_addr。

最后的main函数则与sample code类似

在VMA中先运行IP_sniff程序,在VMB中去ping VMA的IP地址,可以在VMA中看到打印出了src以及dst的IP地址。

Question1:描述在sniff程序中的调用序列

1.打开pcap session,设置设备为当前设备enp0s3
2.编译filter
3.抓包:handle_loop以及handle_close

Quesion2: 嗅探过程为什么需要root权限?没有root的话哪里出错?

Sniff的过程是安全级别比较高的,需要有较高的优先级方可使用,并不代表普通用户也可随意sniff过程,使用普通用户时候将会出现如下情况。提示出错而不允许执行sniff过程。
没用root权限则无法执行混杂模式下的操作。

Question3: 打开嗅探程序的混杂模式,打开和关闭这个模式的区别是什么?

混杂模式下可以受到同网段下的其他主机发送出去的数据包,但是关闭混杂模式之后,则只能收到发送给自己的数据包。

5.1.2 Task 2.1B: Writing Filters

ICMP packets:
抓取两台特定主机间的ICMP包,设置过滤器filter条件

此时在VMA中捕获到的数据包只有10.0.2.4发往10.0.2.5的数据包,而10.0.2.5发往10.0.2.4的数据包则被过滤掉。成功嗅探到两台特定主机的数据包。

TCP packets:
先telnet IP的方式 嗅探,此时默认port为23。可以看到,方法可行,嗅探成功

打开VMA的8080端口,在VMB中通过telnet IP 8080 的方式去探测VMA的8080端口

可以看到,此时VMB可以对VMA的8080端口访问到,但是VMA并没有sniff这个过程发送来的数据包。

这是因为我们设置了filter条件 端口的模式为10-100之间的port,8080端口被过滤掉。

5.1.3 Task 2.1C: Sniffing Passwords

此时需要对sniff程序进行修改,使其能够sniff到输入的password。考虑到password是属于传输层TCP协议中的payload中,因此需要构造tcp的首部。
分别为端口号、序号、确认号、偏移、保留、字符、窗口、校验和紧急指针。

TCP包的结构部分参考了网上
SEED-Labs-Packet-Sniffing-and-Spoofing-Lab的实验代码,如下。

读取payload,按字符读取



在VMA中运行sniff pwd的程序

在VMB中telnet 10.0.2.4
在VMA中嗅探到了如下数据包的payload
右图所示即为嗅探到的password

5.2 Task 2.2: Spoofing

5.2.1 Task 2.2A: Write a spoofing program

题目要求 写一个spoofing 程序,能够成功发送IP数据包。
首先需要了解数据包报文的整体结构,需要关注的是IP头部以及TCP还有数据部分。
由于TCP是面向连接的,伪造包采用UDP数据包的格式。
此时需要构造的伪造报文结构有三部分:IP、UDP、Data

而构造数据包必然用到一些头部结构,因此将其定义为了”headers.h”这个头文件。里面包括了Ethernet头部、IP头部、ICMP头部、TCP头部、UDP头部。
其中在本题中需要新定义的是UDP头部结构。

从图中可以看出UDP头部的定义由四部分组成:16bits的源端口号、16bits目的端口号、16bits的长度、16bits的校验和。
据此可以定义UDP的头部结构体。(8bytes的头部)

Send_rawsocket()参考指导手册以及查阅相关资料后学习到
rawsocket的发送过程主要由四部分组成:
1、创建socket
2、设置socket的option选项
3、组织socket结构
4、发送socket包

在此基础上,组织数据包结构并自定义数据部分

设置UDP、IP包结构部分
此处伪造设置了源地址6.6.6.6,目的地址9.9.9.9
源端口6666,目的端口9999

在VMA中运行spoofing程序,查看到可以成功spoofing UDP数据包。

抓包分析

追踪UDP流可以看到数据包中的数据就是之前在代码中自定义好的”HACKED Successfully”,可以看到Src地址和Dst地址也均是之前数据包中设置好的。
成功伪造了6.6.6.6主机给9.9.9.9主机发送的UDP数据包。Src端口:6666,Dst端口9999,捕捉字节也可以看到具体信息。数据包伪造成功!

5.2.2 Task 2.2B: Spoof an ICMP Echo Request

本题中需要伪造一个ICMP的发送包,此时需要攻击机伪装成另一台主机,给其他主机发送ICMP数据请求包,查看其他主机是否会成功reply回显内容。
需要伪造基于ICMP协议的数据包,即数据包结构主要由两部分组成:IP、ICMP。

定义IP、ICMP数据包结构如下。

其中ip数据包的版本号、头部长度、以及IP包长度、源地址和目的地址、使用协议。
IP包的长度主要是包括IP头部和ICMP头部长度。其中icmp数据包类型字段设置为8,表示是回显请求request的数据包。校验和字段也需要另外设置。根据icmp数据包的头部部分,计算其校验和。

校验和计算
查阅资料并参考RFC文档之后,了解到校验和的计算主要分为4个部分:
1、将校验和字段置为0。
2、将每两个字节(16位)相加(二进制求和)直到最后得出结果,若出现最后还剩一个字节继续与前面结果相加。
3、(溢出)将高16位与低16位相加,直到高16位为0为止。
4、将最后的结果(二进制)取反。

在VMA中运行该spoofing程序,因为伪造的数据包目的地址是VMB的IP地址,因此
在VMB中适用wireshark进行抓包,查看是否VMB收到是了回显请求的数据包,并且是否成功回显回复的数据包。

在VMB中wireshark抓包情况:

可以看到,ICMP request成功伪造,VMA10.0.2.4代表了6.6.6.6主机发送了伪造的Echo request数据包,并且成功欺骗了VMB 10.0.2.5主机,发送了Echo reply数据包。说明伪造成功!
Question4. Can you set the IP packet length field to an arbitrary value, regardless of how big the actual packet is?
Answer:不能设置IP数据包的长度为任意数值,因为规定了最大数据单元MTU,限制了IP数据包的长度
Question 5 Using the raw socket programming, do you have to calculate the checksum for the IP header?
Answer:没有,计算校验和字段是对于ICMP的头部计算的,不需要计算IP部分。
Question 6. Why do you need the root privilege to run the programs that use raw sockets? Where does the program fail if executed without the root privilege?
Answer:因为对包的嗅探和伪造是高安全级别的,不允许普通用户有权利执行此操作。在普通用户情况下的运行是会出错的,如图所示。

5.3 Task 2.3: Sniff and then Spoof

根据题目要求,在本题中需要在VMB中运行程序,当VMA去ping任意ip地址时(包括错误地址),VMB的程序可以sniff到echo request请求,并立刻发送spoof的icmp echo reply数据包。
整体过程与之前的任务大同小异,无非就是sniff和spoof的结合技术。
主要过程就是分为:sniff->echo_reply->spoofing。此时需要额外做的就是echo_reply的过程,对数据包如何构造reply包。
构造reply数据包
在构造过程中,将抓到的ip数据包的内容复制进buffer。构造一个回显reply包的过程类似于2.2B中构造ICMP Request的过程,不同的是此时需要对I原P包的源地址和目的地址更换。
除此之外,对构造的ICMP数据包的还需要定义气type字段。需要注意的是,ICMP中类型字段为8表示的是Echo Request,类型字段为0表示Echo Reply数据包。
其余过程即是sniff技术与spoofing技术的结合使用。

在VMB上运行程序。
可以看到,在嗅探阶段,会打开pcap、BPF编译等工作。

VMA上ping 任意IP地址
此处,为了观察方便,设置了发送的icmp包的数量是3
可以看到,在VMA上显示,三个包均收到了回显回复,没有包的丢失。在VMA上看来是1.2.3.4的主机回复来的数据包。实则收到的是VMB伪造的数据包。

VMB上显示收到了数据包,并成功Spoofing,对于收到的三个ICMP数据包,均伪造成功,并回送给了源IP地址。

在VMA上适用wireshark抓包查看,可以看到,确实收到了从1.2.3.4主机发送来的reply数据包(显然,这已经达到了伪造数据包并成功欺骗的目的)

(SEED-Lab) Sniffing_Spoofing相关推荐

  1. ARP Cache Poisoning Attack Lab(SEED实验)

    ARP Cache Poisoning Attack Lab(SEED实验) ARP缓存中毒攻击可以诱使受害者主机将报文发向攻击者指定的路由方向,并由此完成诸如中间人攻击等攻击手段.本实验使用scap ...

  2. 数据分析——1.环境搭建(Jupyter Lab安装教程)

    数据分析--1.环境搭建(Jupyter Lab安装教程) 1. 安装Jupyter Lab pip install jupyterlab 2. 运行Jupyter Lab 打开cmd,运行命令,浏览 ...

  3. CSAPP实验二:二进制炸弹(Bomb Lab)

    本系列文章为中国科学技术大学计算机专业学科基础课<计算机系统>布置的实验,上课所用教材和内容为黑书CSAPP,当时花费很大精力和弯路,现来总结下各个实验,本文章为第二个实验--二进制炸弹( ...

  4. 【游戏】金融帝国2:金融帝国实验室(Capitalism Lab)市长模式DLC+简单教程

    游戏:金融帝国2:金融帝国实验室(Capitalism Lab)市长模式DLC+简单教程 只放出补丁包和翻译文件----解压到游戏根目录即可 (翻译还未完善,没翻译到的可以给我留言或者截图到群里) ...

  5. 〔金融帝国实验室〕(Capitalism Lab)v9.0.00官方重大版本更新!

    [金融帝国实验室](Capitalism Lab)v9.0.00正式发布! ◎制作发行:Enlight Software ◎发布时间:2023年04月28日 -------------  ※v9.0. ...

  6. 金融帝国实验室(Capitalism Lab)官方正版销售指引

    「金融帝国实验室」(Capitalism Lab)Enlight 官方正版游戏「双11特卖」 ■时间:2022.11.01-11.30       ■游戏开发商:Enlight Software Lt ...

  7. 金融帝国实验室(Capitalism Lab)最新销售政策

    「金融帝国实验室」(Capitalism Lab)Enlight 官方正版游戏「夏季特卖」 ■时间:2022.07.01-08.15       ■游戏开发商:Enlight Software Ltd ...

  8. Enlight Software Ltd.官方正式推出〔金融帝国实验室试玩版本〕(Capitalism Lab Demo Version)

    Enlight Software Ltd.官方正式推出[金融帝国实验室试玩版本](Capitalism Lab Demo Version)  -------------  与一般游戏的试玩版本不同,[ ...

  9. 金融帝国实验室(Capitalism Lab)官方正版游戏『最新销售政策』

    「金融帝国实验室」(Capitalism Lab)Enlight 官方正版游戏「2023夏季特卖」 ■时间:2023.06.15-2023.08.15       ■游戏开发商:Enlight Sof ...

  10. 金融帝国实验室(Capitalism Lab)官方正版游戏『2023春季特卖』

    「金融帝国实验室」(Capitalism Lab)Enlight 官方正版游戏「2023春季特卖」 ■时间:2023.03.15-2023.04.15       ■游戏开发商:Enlight Sof ...

最新文章

  1. Leetcode 211. 添加与搜索单词 - 数据结构设计 解题思路及C++实现
  2. 中关村windows11 32位专业版镜像v2021.07
  3. 如何实现Android平台GB28181前端设备接入
  4. Node.js入门 - 回调函数
  5. 人工智障学习笔记——机器学习(3)决策树
  6. MySQL 8.0.22 源码编译安装全过程
  7. 如何将安卓数据同步到Mac电脑上
  8. 使用docker运行Mysql客户端
  9. 牛逼!分享一款基于 SpringBoot 的微信点餐系统(附源码)
  10. 带手续费买卖股票的最大利益[找DP的状态定义到底缺什么?]
  11. Java Web安全之代码审计
  12. pikachu靶场通关指南
  13. Badge分析如何逼死处女座
  14. php的strtoupper,关于PHP的strtoupper函数
  15. unity 射线检测 碰撞点不准确的原因分析
  16. 黑崎一护为什么没有和朽木露琪亚在一起
  17. IDEA添加JQuery代码提示
  18. php如何实现会员推荐奖励,分享微信公众号实现会员卡领取的功能
  19. 电压跟随器跟随器前后的电压不一致(笔记)
  20. SHA256 Hashes

热门文章

  1. 拓嘉启远电商:拼多多编写标题怎样才可以避开违规
  2. 使用AD16画板步骤
  3. 南京标志设计-logo商标设计-企业VI形象识别系统
  4. 情报研判分析系统开发,可视化大数据研判平台建设
  5. iOS开发者的一些前端感悟
  6. 基于pytorch下用LSTM做股票预测——超详细
  7. 前端面试题---2022
  8. Hazelcast IMDG参考中文版手册-第二章-入门
  9. [玩转北京] 北京最值得你一看的博物馆大全
  10. 笔记本Ubuntu系统,关上盖子不休眠设置