NASA Lab -
ARP Spoofing
by Arvin Liu
Recap - ARP
Task: 87 msg to 88
140.112.31.87
140.112.31.88
Switch cannot look ip.
So we needs 88's MAC to let switch forward.
src: 140.112.31.87
dst: 140.112.31.88
dst MAC: ???
87:87:87:87:87:87
88:88:88:88:88:88
<3
ARP Request & Reply
140.112.31.87
140.112.31.88
ARP Request
who has 140.112.31.88 ?
87:87:87:87:87:87
88:88:88:88:88:88
ARP Reply
140.112.31.88 is at
88:88:88:88:88:88
src ip: 140.112.31.87 src MAC: 87:87:87:87:87:87
dst ip: 140.112.31.88 dst MAC: 88:88:88:88:88:88
ARP Spoofing
ARP Spoofing
140.112.31.87
140.112.31.88
I know 140.112.31.88 => 88:88:88:88:88:88
87:87:87:87:87:87
88:88:88:88:88:88
ARP Reply
140.112.31.88 is at 89:89:89:89:89:89
140.112.31.89
89:89:89:89:89:89
89:89:89:89:89:89
What can ARP Spoofing do?
-
Spoofing only one side
- DoS Attack (know two side IP)
- pretend fake server
-
Spoofing both two sides
- Packet Sniffing
- MitM attack
Alice
Bob
Eve
Lab -
DoS by APR Spoofing
Network Topology
eth0 (Your net card)
VM 1
(victim)
VM 2
(attacker)
bridge
How 2 bridge?
Your Mission
VM1 (victim)
ping 8.8.8.8
VM2 (attacker)
ARP spoofing
Redirect
Router
It is kind of race condition.
VM1 (victim)
VM2 (attacker)
Router
Gateway:
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.1 is at bb:b..
bb:bb:bb:bb:bb:bb
aa:aa:aa:aa:aa:aa
192.168.0.1 is at aa:a..
Useful Tools
You can choose not to use these tools, though.
Scapy
Install Scapy in Ubuntu
Ubuntu 20.04 already has python3.
Install pip (python package manager)
sudo apt install python3-pip
Install scapy
sudo pip install scapy==2.4.0
# or
sudo python3 -m pip install scapy==2.4.0
Start Packet Crafting
import all you can use.
from scapy.all import *
craft any protocol packet you want
pkt = IP(dst="127.0.0.1")
print(bytes(pkt))
# b'E\x00\x00\x14\x00\x ...
# Which is packet's raw bytes
using "/" to concat
udp_pkt = IP(dst="127.0.0.1") / UDP(dport=80, sport=65001)
send it!
send(udp_pkt)
Examples
UDP data "AAA"
udp_pkt = IP(dst="127.0.0.1") / UDP(dport=777, sport=8888) / b"AAA"
send(udp_pkt)
Examples
fake ARP Request
arp_pkt = ARP(op=ARP.who_has, psrc="1.1.1.1", pdst="8.8.8.8")
send(arp_pkt)
ARP Parmeters
op : ARP.who_has (ARP request) /
ARP.is_at (ARP response)
psrc : ip source (e.g. "127.0.0.1")
pdst : ip destination
hwsrc : MAC source (e.g. "08:00:27:1e:0f:88")
hwdst : MAC destination
These maybe helpful in lab ...
How 2 look ARP Table?
Type command "arp".
How 2 Get Score?
Your Mission
VM1 (victim)
ping 8.8.8.8
VM2 (attacker)
ARP spoofing
Redirect
Router
Screenshot 1 : before atk
ping 8.8.8.8 and highlight
1. ICMP request's Ethernet Src & Dst
2. victim's ip & MAC
Screenshot 2 : atk's info
highlight attackers ip & mac
Screenshot 3 : after atk
ping 8.8.8.8 and highlight
ICMP request's Ethernet Src & Dst
Ether Dst must be equal to Attacker's MAC,
And these ICMP may not respond in a row.
Submit these 3 pics You'll get full scores!
Or you can webcast it :).
How to Prevent?
-
DAI (Dynamic ARP Inspection)
- Bind ip & mac
Prevent ARP Spoofing
Another Net Setting
(If you cannot use bridge mode to ping 8.8.8.8, like you're using dorm's networks)
Network Topology Comp
mode Bridge
Host
VM1
mode NAT
Router
Router
Host
VM1
VM2
VM2
NAT
(+virtual router)
Network Topology Comp
mode Bridge
mode NAT
- Host & VMs are in same LAN
- Host can connect to VMs
- VMs can connect to Host
- Host & VMs are not in same LAN
- VMs can connect to Host
- Host cannot connect to VMs
- VMs connect Internet by NAT mechanism in host.
NAT Network Setting
Step 1 : Create NAT Env
NAT Network Setting
Step 2 : VM's Net Setting
It should be "NAT Networks", not NAT.
if using NAT, your VMs cannot connect to each others.
NAT Network Setting
Step 3 : Check Your VM
VM 1
VM 2
1. They should have different IP & MAC
2. Can ping each others.
3. Can ping 8.8.8.8
NAT Network Setting
Step 4 : Enjoy your attack!
NASA Lab
By Arvin Liu
NASA Lab
NASA Lab - DoS by ARP Spoofing
- 1,451