Replay Attack คืออะไร?
Replay Attack (การโจมตีแบบเล่นซ้ำ) เป็นการโจมตีทางไซเบอร์ที่ โจมตี **ขโมยข้อมูลการสื่อสารที่ถูกต้อง (Legitimate Communication)** แล้ว **ส่งซ้ำ (Replay/Resend)** ไปยังผู้รับ เพื่อหลอกให้ระบบคิดว่านั้นคือคำขอที่ถูกต้องและดำเนินการตาม
Replay Attack เป็น Man-in-the-Middle (MitM) Attack หรือไม่?
ใช่ เป็นรูปแบบหนึ่งของ MitM** Replay Attack เกิดขึ้นเมื่อโจมตีอยู่กลางทาง (Man-in-the-Middle) จับแพ็กเก็ตข้อมูล เก็บไว้ และส่งซ้ำในภายหลัง แตกต่างจาก MitM ทั่วไปที่อาจแก้ไขข้อมูล (Tampering) Replay Attack **ส่งข้อมูลเดิมซ้ำโดยไม่แก้ไข**
Session Replay Attack คืออะไร?
โจมตี Session Replay: โจมตีขโมย **Session ID** (เก็บใน Cookie, URL, หรือ Form Field) ของผู้ใช้ที่ล็อกอินอยู่ แล้วนำ Session ID นั้นไปใช้แทนตัวผู้ใช้ (Session Hijacking) ขั้นตอน:
- จับแพ็กเก็ตที่มี Session ID (Sniffing)
- นำ Session ID ไปใช้ใน Request ใหม่
- เซิร์ฟเวอร์ยอมรับเพราะ Session ID ถูกต้องและยังไม่หมดอายุ
ตัวอย่าง Replay Attack
ตัวอย่าง 1: การโอนเงินธนาคาร
1. Alice ส่งคำขอ: "Transfer $100 to Bob" (Signed + Encrypted)
2. Attacker จับแพ็กเก็ตนี้ได้ (MitM)
3. Attacker ส่งแพ็กเก็ตเดิมซ้ำอีก 10 ครั้ง
4. Bank ประมวลผล 10 ครั้ง → Alice เสีย $1,000
ตัวอย่าง 2: Authentication Replay
1. User ล็อกอิน ส่ง Username + Password Hash
2. Attacker จับ Hash ได้
3. Attacker ส่ง Hash เดิมซ้ำ → เข้าสู่ระบบเป็น User ได้ (ถ้าไม่มี Nonce/Timestamp)
ตัวอย่าง 3: Keyless Entry (รถยนต์)
โจมตีจับสัญญาณ Key Fob (Rolling Code) ส่งซ้ำเพื่อปลดล็อกรถ (RollJam Attack)
Suppress-Replay Attack คืออะไร?
โจมตี **จับแพ็กเก็ต ปิดกั้นไม่ให้ถึงปลายทาง (Suppress)** แล้ว **ส่งซ้ำในภายหลัง (Replay)** เมื่อเวลาผ่านไป ทำให้ระบบคิดว่าเป็นคำขอใหม่ ที่มาถึงในเวลาที่ผิดปกติ
Replay Attack vs Man-in-the-Middle Attack
| ด้าน | Replay Attack | Man-in-the-Middle (MitM) |
|---|---|---|
| การกระทำ | จับ → เก็บ → ส่งซ้ำ (เดิมๆ) | จับ → อาจอ่าน/แก้ไข/บล็อก/ส่งต่อ |
| ข้อมูล | ไม่เปลี่ยนแปลงข้อมูล | อาจแก้ไขข้อมูล (Tampering) |
| ความสัมพันธ์ | เป็น **ย่อยชนิด (Subset)** ของ MitM | เป็นหมวดใหญ่ (Umbrella Term) |
วิธีป้องกัน Replay Attack (Mitigation)
| วิธีการ | หลักการ |
|---|---|
| Nonce (Number Used Once) | ค่าสุ่มใช้ครั้งเดียวต่อ Session/Transaction เซิร์ฟเวอร์ปฏิเสธ Nonce ซ้ำ |
| Timestamp | ตรวจสอบเวลาในคำขอ ปฏิเสธคำขอเก่าเกินกว่า Threshold (เช่น 5 นาที) |
| Session ID / Token Binding | ผูก Token กับ Session/Device/IP เปลี่ยน Session ID หลายครั้ง (Rotation) |
| Challenge-Response | เซิร์ฟเวอร์ส่ง Challenge (สุ่ม) Client ต้องคำนวณ Response ใหม่ทุกครั้ง |
| Sequence Numbers | หมายเลขลำดับใน Protocol (เช่น TCP Seq, TLS Record Sequence) |
| One-Time Passwords (OTP) | รหัสผ่านใช้ครั้งเดียว (TOTP, HOTP, SMS OTP, Push Notification) |
| Message Authentication Code (MAC) | HMAC / CMAC - รับรองความสมบูรณ์และต้นทาง + Replay Protection |
Replay Attack ใน Biometric ( 생체인식 )
โจมตีขโมย **Biometric Template** (นิ้วมือ, ใบหน้า, เสียง, ตา) แล้วนำมา **Replay ให้เซ็นเซอร์** เพื่อปลดล็อกระบบ ตัวอย่าง: พิมพ์นิ้วมือปลอม, ใบหน้า 3D Mask, 錄音重放 (Voice Replay) การป้องกัน: **Liveness Detection** (ตรวจจับชีวิต - การกระพริบ, การเคลื่อนไหว, อุณหภูมิ, 3D Depth)
Replay Authentication คืออะไร?
กลไกการยืนยันตัวตนที่ **ป้องกัน Replay Attack** โดยใช้ Authenticator Output ที่ **ใช้ได้ครั้งเดียวต่อการยืนยันตัวตนแต่ละครั้ง** (Single-use) เช่น OTP, Challenge-Response, FIDO2/WebAuthn
เครื่องมือทดสอบ Replay Attack
- Wireshark - Capture และ Replay Packets (แก้ไข/ส่งซ้ำ)
- Burp Suite Repeater - Replay HTTP Requests
- tcpreplay - Replay PCAP Files บนเครือข่าย
- Metasploit - Modules สำหรับ Replay Attacks
สรุป: จุดสำคัญของ Replay Attack
- โจมตี **ไม่ต้องถอดรหัส (Decrypt)** - ส่งข้อมูลเข้ารหัสเดิมซ้ำก็ทำงานได้
- โจมตีได้ทั้ง **Authentication, Financial Transactions, API Calls, IoT Commands**
- ป้องกันได้ด้วย **Nonce, Timestamp, Challenge-Response, OTP, Sequence Numbers**
- เป็นส่วนหนึ่งของ **MITM Attacks** - ต้องรักษาความปลอดภัยช่องทางการสื่อสาร (TLS, VPN, Encrypted Channels)
- Biometric Replay ต้องมี **Liveness Detection**