网络安全实验1:ARP欺骗
ARP欺骗课堂实验
实验目的
运行WinArpAttacker或Ettercap(二选一),通过WireShark等抓包工具,捕获ARP欺骗攻击的数据包,分析ARP攻击的原理。
实验环境
(1)攻击机:Kali-linux 2022.3
(2)靶机:windows xp
(3)软件:ettercap-0.8.31,wireshark
实验过程与结果
步骤一:搭建实验环境并查看虚拟机信息
1.配置攻击机Kali-linux 2022.3(自带ettercap)。
2.在kali虚拟机中右键选择”在这里打开终端”,使用ifconfig命令查看kali虚拟机网卡、ip地址、网关地址等信息。如图1.2所示,可知kali虚拟机的ip地址为192.168.204.134,Mac地址为00:0c:29:a5:82:6c。
3.配置靶机windows xp。
4.在windows xp虚拟机中按”win+R”输入”cmd”打开命令行,使用命令ipconfig /all查看虚拟机网卡、ip地址、网关地址等信息。如图1.4所示,可知windows xp虚拟机的ip地址为192.168.204.135,默认网关为10.21.128.1,Mac地址为00:0c:29:5D:E8:C3。
5.两虚拟机实施ping通:
(1)kali PING windows xp
(2)windows xp PING kali
6.在靶机windows xp命令行中使用arp -a命令查看靶机被攻击前的arp信息。
步骤二:使用ettercap进行攻击并分析ARP欺骗攻击原理
1.在kali中,使用命令sudo ettercap -G打开ettercap图形化界面。
2.选择当前网卡eth0后,点击右上角”√”后开始嗅探,点击搜索按钮扫描该网段的所有主机信息,再点击🔍右侧按钮在host list中查看扫描结果。
3.分别将靶机windows xp的IP和网关地址设为目标1和目标2。
4.在MITM菜单中选择ARP Poisoning,点击ok开始攻击。
5.在靶机windows xp中打开命令行输入”apr -a”命令,查看被arp投毒后的靶机arp信息。
6.与被攻击前的靶机arp信息比较,发现Mac地址(Physical Address)由原Mac地址00:50:56:e8:44:a5变为攻击机kali的Mac地址00:0c:29:a5:82: 6c。
7.由此可知,在arp表下靶机的Mac地址已经变成了攻击者的Mac地址,则靶机的信息将全部被kali攻击机截获,并且攻击机可以向靶机发送篡改后的信息,由此实现arp欺骗中间人攻击,信息的保密性和完整性都将受到破坏。
步骤三:使用wireshark抓包分析ARP欺骗网络流量
1.在kali虚拟机中打开终端,输入”sudo wireshark”命令以root用户权限启动wireshark。
2.在嗅探过程中,选择接口”eth0”,点击左上角开始按钮进行抓包。
3.查看捕获的数据包可以在协议Protocol一栏找到”ARP”即为ARP欺骗攻击的数据包,观察信息info一栏均为192.168.117.133(/2) at 00:0c:29:f1:f1:c4。
4.点击展开Address Resolution Protocol(reply)查看ARP部分抓包细节。
5.由以上详细信息可以看到,wireshark抓到了kali攻击机(Mac地址为00:0c:29:a5:82:6c)向靶机windows xp网关地址(IP地址为192.168.204.135)发送ARP欺骗包。
(1)攻击机kali向靶机windows xp发送ARP包,包中的Mac地址为kali自己的Mac地址00:0c:29:a5:82:6c,但IP地址为靶机的IP地址192.168.204.135,以此欺骗过靶机。
(2)在靶机存入的ARP缓存表中,靶机对应的IP所保存的是攻击机kali的Mac地址,因此发送给靶机windows xp的信息将可以被攻击机kali截获。
(3)最终发送给靶机的内容和靶机发送的内容都先经过攻击机kali,由此攻击机可以截获每次通信的内容,但不会破坏靶机正常通信。在此基础上,攻击机甚至还可以篡改通信所传输的内容,而不被靶机发现。
实验总结
通过本次Ettercap的ARP欺骗实验,我深入掌握了ARP协议的工作原理及其安全缺陷,并成功使用Ettercap工具实施了ARP欺骗攻击。在实验过程中,我不仅学会了发起攻击,还运用Wireshark抓包分析了ARP数据包的结构和欺骗后的网络流量变化。这一实践让我直观理解了中间人攻击的实现过程,增强了我对局域网安全风险的认识,也为我今后进一步学习网络攻防技术奠定了扎实基础。
ARP欺骗课后实验
实验目的
基于Winpcap(或其它网络开发包Libpcap/Jpcap/Scapy等)编写程序,对指定的目标IP地址进行ARP欺骗攻击。
实验环境
(1) 攻击机:Kali-linux 2022.3
(2) 靶机:windows xp
(3) 软件:ettercap-0.8.31,wireshark
实验过程与结果
步骤一:安装Scapy
1.在攻击机kali中打开终端,输入命令“sudo apt install python3-pip”安装pip3。
2.在攻击机kali终端中输入命令“pip3 install Scapy”安装Scapy。
步骤二:python编写ARP欺骗程序
1.实验环境:攻击机:kali;靶机(受害者):windows xp
2.查看攻击机及靶机信息:首先通过靶机windows xp的ipconfig /all命令查看靶机的IP地址、Mac地址、网关等信息;通过攻击机kali的ifconfig命令查看攻击机的IP地址及Mac地址。
此部分信息同课上实验中两主机信息:
kali:IP地址:192.168.204.134;Mac地址:00:0c:29:a5:82:6c
windows xp本机:IP地址:192.168.204.135;Mac地址:00:0c:29:5D:E8:C3
windows xp网关:IP地址:192.168.204.135;Mac地址:00:50:56:e8:44:a5
3.为了实现ARP欺骗,我们要构造ARP包并发送,因此首先需要了解ARP报文结构。
硬件类型:表明ARP实现在何种类型的网络上。
协议类型:代表解析协议(上层协议)。一般是0800,即IP。
硬件地址长度:MAC地址长度,此处为6个字节。
协议地址长度:IP地址长度,此处为4个字节。
操作类型:代表ARP数据包类型。0表示ARP请求数据包,1表示ARP应答数据包。
源MAC地址:发送端MAC地址。
源IP地址:代表发送端协议地址(IP地址)。
目标MAC地址:目的端MAC地址(待填充)。
目标IP地址:代表目的端协议地址(IP地址)。
4.参照课上实验利用Ettercap实现Arp欺骗攻击的逻辑原理,结合Scapy使用方法,设计出ARP欺骗程序流程如下图所示:
5.Arp_Spoof函数:构造Arp欺骗包并发送至指定的目标IP地址。
(1)传入参数:目标IP地址target_ip、目标Mac地址target_mac、攻击机IP地址sender_ip.
(2)利用Scapy的ARP方法构造欺骗的Arp包。
其中,ARP方法各参数如下:
- op:取值为1或2时,代表ARP请求或响应包,默认值为1
- hwsrc:源Mac地址
- psrc:源IP地址
- hwdst:目的Mac地址
- pdst:目的IP地址
1 | spoofedarp = ARP(op=2, psrc=sender_ip, pdst=target_ip, hwdst=target_mac) |
(3)构造了一个欺骗的ARP响应包spoofedarp,并将目的IP地址、Mac地址及源IP地址作为参数传入ARP方法。
1 | send(spoofedarp, verbose=False) |
(4)发送刚刚构造的ARP响应包,并置verbose为False表示运行时不显示详细信息。
6.Arp_Spoof函数:构造正常的Arp包并发送至指定的目标IP地址以将其Arp表恢复至原有正常状态。
(1)传入参数:目标IP地址target_ip、目标Mac地址target_mac、攻击机IP地址sender_ip、攻击机Mac地址sender_mac。
(2)构造正常的ARP响应包:
1 | normalarp = ARP(op=2, hwsrc=sender_mac, psrc=sender_ip, hwdst=target_mac, pdst=target_ip) |
构造了一个正常的ARP响应包normalarp,并将目的IP地址、Mac地址及源IP地址、源Mac地址作为参数传入ARP方法。
(3)发送ARP响应包:
1 | send(normalarp, verbose=False) |
发送刚刚构造的ARP响应包,并置verbose为False表示运行时不显示详细信息。
(4)打印提示信息:
1 | print("ARP Table restored to normal for", target_ip) |
打印输出已经将目的IP地址对应Arp表恢复至正常状态的提示信息。
8.main函数:
1 | _target1_ip = input(“Target1 IP:”)_ |
首先由用户输入两个IP地址,将其分别设置为Target1和Target2.
1 | _try: |
将靶机Mac地址设置为目标Mac地址,若设置失败则抛出异常。
1 | _try: |
不断进行while循环向靶机和网关发送Arp欺骗包,进行中间人攻击。
(a)欺骗靶机与它通信的网关IP地址对应的物理地址是攻击机的Mac地址,由此靶机的Arp表中IP地址192.168.204.2对应的Mac地址由00:50:56:e8:44:a5修改为00:0c:29:a5:82:6c,靶机发送给网关的信息都将被攻击机截获。
(b)欺骗网关与它通信的靶机IP地址对应的物理地址是攻击机的Mac地址,由此网关的Arp表中IP地址192.168.204.135对应的Mac地址由00:0c:29:5d:e8:c3修改为00:0c:29:a5:82:6c,网关发送给靶机的信息都将被攻击机截获。
(c)由此,攻击机对靶机和网关都成功实施Arp欺骗,实现中间人攻击,截获双方通信内容而不影响其正常通信。
(4)恢复ARP表:
1 | except: |
结束Arp欺骗攻击后,分别向靶机和网关发送正确的Arp包,使网关Arp表中靶机的物理地址恢复为00:0c:29:5d:e8:c3、靶机Arp表中网关的物理地址恢复为00:50:56:e8:44:a5,还原至正确状态。
8.最终编写完成的Arp欺骗攻击程序代码如下。
1 | from scapy.all import * |
步骤三 运行ARP欺骗程序
中间人攻击
1.在攻击机kali中输入命令“sudo su”进入管理员模式,然后在root权限下使用“echo 1 > /proc/sys/net/ipv4/ip_forward”打开IP转发功能后,输入“python3 ArpSpoofer.py”运行编写的ARP欺骗程序。
2.Arp欺骗攻击正式开始前,在靶机windows xp打开命令行输入“arp -a”命令查看原始Arp表,可以看到此时网关的IP地址192.168.204.2所对应的Mac地址为00:50:56:e8:44:a5。
3.分别输入靶机本机的IP地址192.168.204.135和网关的IP地址192.168.204.2,将其设置为目标IP地址Target1、Target2,回车程序读取靶机本机Mac地址和网关Mac地址,开始向靶机本机和网关发送Arp欺骗包进行Arp欺骗攻击。
4.Arp欺骗攻击进行过程中,在靶机命令行输入“arp -a”命令查看受到攻击后的靶机Arp表,发现此时网关的IP地址192.168.204.2所对应的Mac地址变为攻击机kali的Mac地址00:0c:29:a5:82:6c。由此可知,成功实施Arp欺骗修改了靶机的Arp表,使得靶机发往网关的信息均被攻击机kali截获,实现中间人攻击。
5.在攻击机kali终端中按下ctrl+C停止当前Arp欺骗攻击,程序输出“ARP spoofing stopped.”,并执行接下来的代码恢复靶机本机及网关的Arp表。
6.攻击机Arp欺骗攻击程序结束后,在靶机命令行中输入“arp -a”命令再次查看恢复后的靶机Arp表。下图对比可知,靶机Arp表中网关IP地址192.168.204.2所对应的Mac地址由kali的Mac地址(00:0c:29:a5:82:6c)恢复回网关的Mac地址(00:50:56:e8:44:a5)。由此可知,结束Arp欺骗攻击后恢复Arp表成功。
禁止上网
1.在攻击机kali中输入命令“sudo su”进入管理员模式,然后在root权限下使用“echo 0 > /proc/sys/net/ipv4/ip_forward”关闭IP转发功能后,输入“python3 ArpSpoofer.py”运行编写的ARP欺骗程序。
2.Arp欺骗攻击正式开始前,在靶机windows xp打开命令行输入“ping www.baidu.com”能够ping通,说明靶机此时可以正常上网。
3.分别输入网关的IP地址192.168.204.2和靶机本机的IP地址192.168.204.135,将其设置为目标IP地址Target1、Target2,回车程序读取靶机本机Mac地址和网关Mac地址,开始向网关和靶机本机发送Arp欺骗包进行Arp欺骗攻击。
4.Arp欺骗攻击过程中,再次在靶机命令行中输入“ping www.baidu.com”命令,此时如下图所示提示“Ping request could not find host www.baidu.com. Please check the name and try again.”。由此可知,靶机受到Arp欺骗攻击后无法上网。
中间人攻击与禁止上网攻击的区别
1.中间人攻击:攻击机发送欺骗的Arp包欺骗靶机主机,将自己假扮为网关,使得靶机将希望发送给网关的通信内容全部发送给攻击机,由此攻击机实现中间人攻击,可以截获靶机和网关的通信内容。
2.禁止上网攻击:攻击机发送欺骗的Arp包欺骗网关,将自己假扮为靶机主机,使得网关将希望回复给主机的通信内容全部回复给攻击机,导致靶机无法受到网关的应答包无法正常上网,由此攻击机实现禁止上网攻击。
3.有以上分析可知,在实施中间人攻击时,将靶机主机IP地址设置为Target1、网关IP地址设置为Target2;在实施禁止上网攻击时,将网关IP地址设置为Tareget1、靶机主机IP地址设置为Target2.
4.在实施中间人攻击时需打开ip转发功能,而在禁止上网攻击中则需要关闭ip转发功能。
实验总结
这次实验,我使用Scapy手动构造ARP欺骗数据包,深入理解了ARP协议的数据结构及欺骗攻击的实现原理。在实验中,我严格按照ARP报文格式填充每个字段,包括硬件类型(Ethernet)、协议类型(IP)、MAC/IP地址长度、操作类型(ARP应答包)等,确保数据包符合标准,能够成功欺骗目标主机。我掌握了ARP报文结构,Scapy的使用等内容。这不仅提升了我的网络协议分析能力,也让我认识到ARP欺骗的严重性,进一步理解了防御措施(如静态ARP绑定、动态ARP检测)的重要性。未来,我将继续深入研究网络攻防技术,提高安全防护能力。
实验报告持续更新中,欢迎交流讨论!
















































