MAC欺骗

MAC欺骗是欺骗了MAC地址和交换机端口的对应关系

假如我作为攻击者,发送了

dst_mac = GW.mac

src_mac = 你.mac

这样的数据包到网关GW,这样就导致对应关系为:

你.mac => 我.port

此时,交换机就将所有发到你.mac的数据帧都从我.port发给了我,直到你主动发送一个包,或者另外出现

dst_mac = GW.mac

src_mac = 你.mac

这样的包出现

接上面,我收到了GW发给你的数据,有可能需要发送一个ARP请求,也就是请求你.mac的广播:

dst_mac = ff:ff:ff:ff:ff:ff

src_mac = 我.mac

由于src是我.mac,也就是对应关系为:

我.mac => 我.port

同时你响应了一个ARP包的reply信息:

dst_mac = 我.mac

src_mac = 你.mac

这个数据帧也表明了:

你.mac => 你.port

这样对应关系又好了,我劫持的数据又可以顺利地转发到你了,但是完成了一次劫持

 

MAC的欺骗,如果要伪造MAC地址的话,有人可能想直接修改MAC地址,那直接通过ip或者macchanger工具即可,但是欺骗毕竟是作为中间人,不应对其它正常主机进行主动修改,因此可以通过数据包伪造工具来进行

>>>
>>> from scapy.all import *
>>> frame = Ether(src = '11:11:11:11:11:11')/IP()/ICMP()
>>>
>>> sendp(frame, iface = 'eth1')
.
Sent 1 packets.
>>>

可以看到MAC地址的确是自己伪造的

# tcpdump -i eth1 icmp -en
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
00:15:14.456836 11:11:11:11:11:11 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 42: 127.0.0.1 > 127.0.0.1: ICMP echo request, id 0, seq 0, length 8
^C
1 packet captured
1 packet received by filter
0 packets dropped by kernel

发表评论