ARP

ARP协议

  • arp(Address Resolution Protocol),即地址解析协议,属于数据链路层,是根据IP地址获取物理地址的一个TCP/IP协议。

  • cmd查看arp -a

    在以太网中,同一局域网中的一台主机想要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议含有的上层IP协议提供的数据中,只包含目的主机的IP地址。所以需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

1

  • 每一个主机都有一个ARP高速缓存,此缓存中记录了最近一段时间内其它IP地址与其MAC地址的对应关系。ARP高速缓存是实时更新的,每次开机后会清空缓存并重新获取。

  • 如果本机想与某台主机通信,则首先在ARP高速缓存(动态更新)中查找此台主机的IP和MAC信息,如果存在,则直接利用此MAC地址构造以太帧;如果不存在,主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间。

  • 2

    ​ ARP请求广播到局域网络上的所有主机

    ARP表

网络设备一般都有一个ARP缓存(ARP Cache),ARP缓存用来存放IP地址和MAC地址的关联信息。在数据传送前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应的信息,则通过发送ARP 报文来获取。获取到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期(一般为关机前)内,设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表现会被自动删除。如果目标设备位于其他网络则源设备会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据转发给目的设备。

3

ARP欺骗

当有2台或者多台计算机进行交互时,例如主机A与主机B进行交互,A在已知B的IP,但不知到B的MAC地址时,是无法通信的。

当A主机上在查询Arp缓存时未能找到B的MAC地址时,会进行广播到本地网络上的所有主机(发送的数据包含A的Ip与MAC地址),主机B的IP与广播中所请求的IP地址相同时,主机B将A的IP地址和MAC地址映射添加到本地ARP缓存中。同时主机B将包含其MAC地址的ARP回复消息直接发送回主机A。当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。

此时,由于主机A并不会验证B发送的回复包是否具有真实性,因此我们可以伪造成B发送回复包。例如:

1
2
3
4

graph LR;
A[主机A]--ip,mac,B的ip,询问B的MAC-->B[主机B]
C[攻击机]--疯狂回复A,B的ip,MAC-->A1[主机A]

断网攻击类型:

  • 1.主机欺骗:欺骗对象为主机。
  • 2.网关欺骗:欺骗对象为网关,可以获得其他主机的进流量。

利用工具:

​ kali :arpspoof

用法:arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host。

参数:

-i interface 指定要使用的接口(即指定一块网卡)

-t target 指定一个将被ARP毒化的主机(如果没有指定,则认为是局域网中所有主机)可以重复指定多个主机

host host是你想要截获数据包的主机(通常是网关)

-c own|host|both 指定在恢复ARP配置时使用的硬件地址;当在清理(cleaning up)时,数据包的源地址可以用自己的也可以用主机(host)的硬件地址。

-r 毒化两个主机(目标和主机(host))以捕获两个方向的网络流量。(仅仅在和-t参数一起使用时有效)

注意:在使用arp欺骗前先开启Kali的IP转发,使用命令:

1
echo 1 > /proc/sys/net/ipv4/ip_forward

参数举例:arpspoof -i eth0 -t 192.168.0.103 192.168.0.107。

即: arpspoof -i 网卡 -t 目标IP 网关。

DHCP

DHCP协议

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。在TCP/IP网络中对客户机动态分配和管理IP地址等配置信息,以简化网络配置,方便用户使用及管理员的管理。

•一台DHCP服务器可以是一台运行Windows Server、UNIX或Linux的计算机,也可以是一台路由器或交换机。

4

DHCP 的安全问题

非法DHCP服务器接入到了网络中;“冒充”为这个网段中的合法DHCP服务器。

5

DNS服务

DNS作用-主机IP地址与主机名之间的对应关系。

起初是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,unix便建立一个叫做hosts的文件 , 这个文件中记录这主机域名和IP地址的对应表。这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了。之后再Linux和windows也继承了这个文件。

而DNS服务器用于集中报存hosts文件,用于用户方便查询和实时更新hosts数据。DNS协议运行在UDP协议之上,使用端口号53。

6

​ 域名查询图

7

客户端先从本地计算机上查询域名对应的ip,如果未查询到,便访问DNS服务器(8.8.8.8 ,114.114.114.114)ip去查询域名对应的ip,若还未查询到便访问上一级DNS服务器直到根服务器位置,并返回数据。

NAT服务

NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。

NAT工作原理

内容参考[《什么是NAT》](什么是NAT? - 知乎 (zhihu.com))

8

  • 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关;
  • 网络访问只能先由私网侧发起,公网无法主动访问私网主机;
  • NAT 路由器在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;
  • NAT 路由器的存在对通信双方是保持透明的;
  • NAT 路由器为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

NAT可以划分为以下两种类型:源网络地址转换-Source NAT-SNAT;目的网络地址转换-Destination NAT-DNAT。

9

主机 163.221.120.9 的端口号是 80,私网中有 2 个客户端 10.0.0.10 和 10.0.0.11 同时进行通信,并且这 2 个客户端的本地端口都是 1025。此时,仅仅转换 IP 地址为全局地址 202.244.174.37 ,会令转换后的数字完全一致。因此,为了区分这 2 个会话,只要将 10.0.0.11 的端口号转换为 1026 就可以解决问题。NAPT 路由器通过生成转换表,就可以正确地转换地址跟端口的组合,使客户端A、B能同时与服务器之间进行通信。

关键点:利用端口号的唯一性实现了公网 IP 到私网 IP 的转换,理论上最多可以让 65535 台主机共用一个公网 IP 地址