0x00 引言
中间人攻击(Man-in-the-Middle Attack,简称MITM攻击)是一种网络安全攻击,其中攻击者在通信过程中插入自己作为中间人的位置,拦截和篡改通信数据。
0x01 基础知识
1 | 1 MAC地址 |
1、MAC地址
MAC地址长 48 bit,用于标识独一无二的网卡。虽然用户可以修改网卡的MAC地址,但是写在网卡BIOS上的MAC地址是无法更改的。
2、ARP地址解析协议
当设备在局域网中进行通信时,ARP协议用于将IP地址映射到MAC地址。
2.1、ARP请求
主机 A 想要获取主机 B 的 MAC 地址,通过主机 A 会通过广播 的方式向以太网上的所有主机发送一个 ARP 请求包,这个 ARP 请求包中包含了主机 A 想要知道的主机 B 的 IP 地址的 MAC 地址。
2.2、ARP响应
主机 A 发送的 ARP 请求包会被同一链路上的所有主机/路由器接收并进行解析。每个主机/路由器都会检查 ARP 请求包中的信息,如果 ARP 请求包中的目标 IP 地址 和自己的相同,就会将自己主机的 MAC 地址写入响应包返回主机 A。
2.3、ARP缓存
每个设备都会维护一个本地的ARP缓存表,其中记录了IP地址与MAC地址的映射关系。
2.4、ARP报文格式
下面是在以太网中转换一个 IPv4 的地址常用的 ARP 请求或响应的报文格式。
3、ARP欺骗
ARP欺骗又称ARP毒化。在进行欺骗之前,我们首先需要获取局域网内的ARP信息,这个步骤可以通过 arp -a 指令获取。
在获取到局域网内的ARP信息后,我们就可以尝试欺骗流程了。ARP欺骗利用了ARP协议的漏洞,即但凡主机接收到ARP 响应报文,就会更新自己的ARP表项。
主机A修改了自己的ARP表,目标IP的MAC地址修改成了攻击者主机C的MAC地址,因此数据包在路由的时候最终到了主机C上。
0x02 Https中间人劫持攻击
如果被攻击的机器在使用Http协议进行网络访问的时候,只需要使用ARP欺骗,就能截获未加密的数据包。但是如果使用的是Https协议,那么其安全性是更强的,但是也可以通过中间人劫持攻击破解。
1 | 1 Https协议 |
1、Https协议
HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程[1]如下:
2、Https中间人劫持攻击
Https中间人劫持攻击[2]可以通过伪造公私钥实现对Https数据包的加解密,实际上Linux系统下的NetfilterSDK也是通过搭建VPN、Https中间人劫持这种方式监控数据包的。