计算机网络实验二:ARP欺骗
博客链接:https://www.blog.23day.site/articles/66
一、wireshark
要求:配置并使用wireshark,在无线环境下监听非本机的数据码流,记录并解释如下集中情况下听到的数据包的意义,并对比分析
简介
Wireshark是一种抓包工具,这种工具比fiddler更强大,消息量更多。大家可能会问:有了fiddler,为什么还要用wireshark呢?这里说下,在测试中,发现用fiddler抓包,有些包是没有抓到的,比如在验证反作弊信息的时候,反作弊pingback信息的消息用fiddler就没抓到,用wireshark就抓到了。还有另外一种情况,就是在验证cna的时候,如果先用fiddler抓包,如果没有种下cna的时候,以后就永远没有cna了,情况很诡异。解决办法就是把包卸载了重新安装,第一次用wireshark抓包。
Wireshark优势:
1、强大的协议解析能力,一到七层全解码,一览无遗,对于协议细节的研究特别有帮助。
2、对于https加密流量,只要将浏览器的session key 自动导入wireshark,Wireshark可以自动解密https流量。
Wireshark不足之处:
尽管可以自定义过滤列表,但为了抓取一个特定TCP Flow /Session 流量需要写一个长长的过滤列表,这对于初学者很不友好。
原理
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。因为网络上传输的数据包通过网卡进入到网络协议分析器系统。
网络上传输的数据包通过网卡进入到网络协议分析器系统。协议分析器所使用的网卡和网卡 驱动程序必须能够支持“混杂模式操作(Promiscuous Mode Operation)”。因为只有运行在混杂模式下的网卡才能够捕获到网络中传输到其他设备的“广播数据包、多播数据包、单播数据包以及错误数据包等等”,两者一起协同工作。
抓非本地的包
1.简介
获取非本地的数据流的主要方法:
1.port映射
局域网内。在同一交换机下工作的PC机,如图1.29所看到的。PC机A和PC机B在同一交换机下工作。PC机A安装Wireshark后。把交换机上随意一个PC机的数据port做镜像,设置交换机来复制全部数据到用户交换port下的Wiresharkport。这时PC机A就能够抓取到其它PC机的数据了。如抓取PC机B的数据。
2.使用集线器
交换机换成集线器,这种话全部的数据包都是通发的。也就是说,无论是谁的数据包都会发到这个集线器上的每一个计算机。
仅仅要将网卡设置为混杂模式就能抓到别人的包。
3.利用ARP欺骗
我们都知道。发送、接受数据都要经过路由器
PC机A安装Wireshark后,能够利用ARP欺骗,来抓取PC机B、PC机C或PC机B与PC机C之间的数据包了。PC机A在局域网内发送ARP包,使其它计算机都误以为它是网关。这种话。其它计算机都会将它们的数据包发送到PC机A那里,因此PC机A就能够抓到它们的包了。
2.arp欺骗
在每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。
假设主机 A 192.168.1.2,B 192.168.1.3,C 192.168.1.4; 网关 G 192.168.1.1; 在同一局域网,主机A和B通过网关G相互通信,就好比A和B两个人写信,由邮递员G送信,C永远都不会知道A和B之间说了些什么话。但是并不是想象中的那么安全,在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。
这样C就有了偷听A和B的谈话的可能,继续思考上面的例子:
C假扮邮递员,首先要告诉A说:“我就是邮递员” (C主机向A发送构造好的返回包,源IP为G 192.168.1.1,源MAC为C自己的MAC地址),愚蠢的A很轻易的相信了,直接把“C是邮递员”这个信息记在了脑子里;
C再假扮A,告诉邮递员:“我就是A” (C向网关G发送构造好的返回包,源IP为A 192.168.1.2,源MAC地址为自己的MAC地址),智商捉急的邮递员想都没想就相信了,以后就把B的来信送给了C,C当然就可以知道A和B之间聊了些什么
3.arpspoof
在A物理机上开启kali,在kali内获取B物理机上的数据流
-
获取物理机的ip地址,确认网关等
-
fping查看当前局域网还存在哪些主机,确定要攻击的主机是否存在
-
更改ip转发为1,然后用arpspoof工具开始arp欺骗
-
在kali里面开启wireshark,并用过滤器获取物理机的包
4.分析
arp协议
一台主机有IP数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。
Ethernet II: 数据链路层以太网帧头部信息,在这里我们可以看到地址是ff:ff:ff:ff:ff:ff:ff也就是广播地址,而源mac地址是44:1a:fa:d4:70:02
下面的地址解析协议可以看到,源ip地址和目的ip地址
我们去看到这个info中,简介易懂的写到,who has 10.63.**.**
另外在这里可以看到一个arp的请求和响应
在请求包中
在响应包中
可以很明显的看到询问由ip地址获取mac地址的过程
dhcp协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议
报文类型 | 说明 |
---|---|
Discover(0x01) | DHCP客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。 |
Offer(0x02) | DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,最终还需要客户端通过ARP来检测该IP地址是否重复。 |
Request(0x03) | DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求续延租约。 |
ACK(0x05) | DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址。 |
NAK(0x06) | 如果DHCP服务器收到Request请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向DHCP客户端发送NAK应答报文,通知用户无法分配合适的IP地址。 |
Release(0x07) | 当DHCP客户端不再需要使用分配IP地址时(一般出现在客户端关机、下线等状况)就会主动向DHCP服务器发送RELEASE请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址。 |
Decline(0x04) | DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以期获得新的IP地址。 |
Inform(0x08) | DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了。 |
用wireshark捕捉包
-
discover
发出一个广播请求,255.255.255.255去寻找dhcp服务器
这个时候机器是没有ip的
-
offer
dhcp服务器会根据discover包,根据dhcp和请求机的mac地址,制作一个offer数据包
里面提供了一个可用的ip地址
这里包括子网掩码、dns服务器的ip、路由网关等
-
request
源IP和目的IP依然是0.0.0.0和255.255.255.255
-
ack
Your(client) IP address:分配给Client的可用IP
后面有许多项option信息,前两项是DHCP服务器发送的消息类型(ACK)和服务器的身份标识,后面几项是:
Subnet Mask:Client端分配到的IP的子网掩码
Router:路由器
Domain Name Server:DNS,域名服务器
Domain Name:域名
IP Address Lease Time:IP租用期
icmp协议
IP协议是一种面向无连接的数据报协议,它是一种不可靠的协议,它不提供任何差错检验。因此网际报文控制协议(Internet Control Message Protocol)ICMP出现了,ICMP协议用于IP主机、路由器之间传递控制消息,这里的控制消息可以包括很多种:数据报错误信息、网络状况信息、主机状况信息等,虽然这些控制消息虽然并不传输用户数据,但对于用户数据报的有效递交起着重要作用,从TCP/IP的分层结构看ICMP属于网络层,它配合着IP数据报的提交,提高IP数据报递交的可靠性。ICMP是封装在IP数据报中进行发送的,从这点看来,ICMP协议又有点像一个传输层协议,其实不然,因为ICMP报文的目的不是目的主机上的某个应用程序,它不为应用程序提供传输服务,ICMP报文的目的是目的主机上的网络层处理软件。简单的来说,ICMP协议就像奔波于网络中的一名医生,它能及时检测并汇报网络中可能存在的问题,为解决网络错误或拥塞提供了最有效的手段
查询报文能用于对某些网络问题的诊断,也可用于网络设备信息的交互,查询报文都是成对出现的
对于出错的包,这里的检验和会不被认可