มาทำความรู้จัก Rate Limiting และเทคนิคการ Rate Limiting Bypass พร้อมแนวทางป้องกัน

โดย admin

3 นาที
แชร์
Blog Thumbnail

มาทำความรู้จัก Rate Limiting และเทคนิคการ Rate Limiting Bypass พร้อมแนวทางป้องกัน

สวัสดีเพื่อน ๆ ชาว Cybersecurity ทุกท่านครับ 😊

วันนี้เราจะมาทำความรู้จักกับอีกหนึ่งเทคนิคที่ทั้งนักทดสอบเจาะระบบ (Pentester) และผู้ไม่ประสงค์ดีมักใช้ในการโจมตีระบบนั่นคือ “Rate Limit Bypass” หรือการหลีกเลี่ยงกลไกจำกัดจำนวนคำขอ ซึ่งเป็นวิธีการป้องกันการ Brute-Force พื้นฐานที่ระบบใช้กันอย่างแพร่หลาย ก่อนอื่นเรามาทำความรู้จัก Rate Limiting สักเล็กน้อยครับ

Rate Limiting คือกระบวนการจำกัดจำนวนคำขอที่ผู้ใช้สามารถส่งมายังเซิร์ฟเวอร์ภายในช่วงเวลาที่กำหนด เช่น จำกัดการล็อกอินไม่เกิน 5 ครั้งต่อนาที, จำกัดการใช้งานเกินขีดความสามารถของระบบ หรือจำกัดการโจมตีแบบ DoS (Denial-of-Service) ซึ่งการป้องกันเหล่านี้ถือเป็นแนวรับสำคัญของระบบออนไลน์ในปัจจุบัน อย่างไรก็ตาม Pentester และผู้ไม่ประสงค์ดีจำนวนมากต่างค้นหาวิธีหลีกเลี่ยงกลไกเหล่านี้ผ่านเทคนิคที่เรียกว่า Rate Limiting Bypass!!! ซึ่งอาศัยช่องโหว่ในการออกแบบของตัวระบบเอง หรือการใช้ลูกเล่นต่าง ๆ เช่น การเปลี่ยน IP Address, การปลอม User-Agent, การแก้ไข HTTP Request Header, การใช้ proxy หลายตัว หรือการเปลี่ยนวิธีส่งข้อมูลให้เซิร์ฟเวอร์เข้าใจผิดและในบทความนี้ผมจะพาเพื่อน ๆ มาลองดูเทคนิคและเครื่องมือที่ใช้ในการหลีกเลี่ยงการจำกัดคำขอ พร้อมแนวทางการป้องกันเพื่อเตรียมการรับมือกับภัยคุกคามที่มีความซับซ้อนมากขึ้นในทุกวันครับ

กลไกการทำ Rate Limiting ที่พบบ่อย

เรามาทำความเข้าใจรูปแบบการจำกัดคำขอที่เว็บไซต์และ API มักนำมาใช้กันก่อน ซึ่งโดยทั่วไปมีกลไกหลัก ๆ ดังนี้ครับ

  • การจำกัดตาม IP Address (IP-Based Rate Limiting)
     เป็นวิธีพื้นฐานที่ใช้กันแพร่หลาย โดยจะจำกัดจำนวนคำขอที่ส่งมาจาก IP เดียวภายในระยะเวลาที่กำหนด เช่น 100 คำขอใน 1 นาที เพื่อป้องกันการโจมตีแบบ Brute-Force หรือ Bot
  • Token Bucket
     ระบบจะมีถังเก็บ Token ที่เติม Token ตามเวลา เช่น วินาทีละ 1 โทเคน เมื่อผู้ใช้ส่งคำขอ ระบบจะหัก Token ออก หาก Token หมดคำขอจะถูกปฏิเสย ช่วยให้รองรับ Burst Traffic ได้ระดับหนึ่ง
  • Leaky Bucket
     คล้ายกับ Token Bucket แต่เน้นให้คำขอถูกประมวลผลออกไปอย่างสม่ำเสมอ หากคำขอเข้ามามากเกิน จะค่อย ๆ ลดการประมวลผลลง
  • การจำกัดตามภูมิภาค (Geographic/Region-Based Limits)
     กำหนดข้อจำกัดสำหรับคำขอที่มาจากบางประเทศหรือภูมิภาค เช่น จำกัดหรือบล็อกคำขอจากพื้นที่ที่มีประวัติโจมตีสูงหรือใช้ VPN เป็นหลัก
  • การจำกัดตามตัวตนผู้ใช้ (User-Based Limits)
     ใช้สำหรับผู้ใช้ที่ผ่านการล็อกอินแล้ว โดยระบบจะจำกัดคำขอแยกตาม Session หรือ Token เพื่อป้องกันการ Abuse ที่เกิดจากบัญชีผู้ใช้โดยเฉพาะ เช่น Brute-Force หรือการใช้งาน API เกินโควตา

เทคนิคและเครื่องมือที่ใช้ในการหลีกเลี่ยงการจำกัดอัตราคำขอ (Rate Limiting Bypass)

ต่อไปเรามาดูเทคนิคและเครื่องมือที่พบได้บ่อยที่เราสามารถใช้เพื่อหลีกเลี่ยงการจำกัดอัตราคำขอกันครับ ซึ่งในบนความนี้ผมจะขออนุญาตแนะนำเทคนิคและเครื่องมือที่ใช้งานในเบื้องต้น โดยยังไม่ได้ลงรายละเอียดไปในส่วนการใช้งานเครื่องมือต่าง ๆ อย่างไรหากมีโอกาสหน้าผมจะลงรายละเอียดวิธีการใช้งานเครื่องมือให้เพื่อน ๆ ได้อ่านกันครับ เรามาดูเทคนิคและเครื่องมือแรกกันเลยครับ!!!

IP Spoofing

IP spoofing คือการปลอมแปลงหมายเลข Ip Address ต้นทางของคำขอให้ดูเหมือนว่ามาจากอุปกรณ์อื่น โดยผู้โจมตีสามารถเปลี่ยนหมายเลข Ip Address ไปเรื่อย ๆ เพื่อให้สามารถหลีกเลี่ยงข้อจำกัดหรือการตรวจจับที่ระบบตั้งไว้สำหรับบางหมายเลข Ip Address เครื่องมือที่สามารถใช้เพื่อทำ IP spoofing คือ

  • VPN (Virtual Private Network) คือ เทคโนโลยีที่ช่วยให้ผู้ใช้งานมีความเป็นส่วนตัว โดยการซ่อนตัวตนและเข้ารหัสข้อมูลของผู้ใช้ พร้อมเปลี่ยนตำแหน่ง IP ไปยังประเทศอื่นทำให้เข้าถึงเว็บที่ถูกบล็อกได้ เช่น Proton VPN (สามารถใช้งานได้โดยไม่มีค่าใช้จ่าย) ดังภาพที่ 1

ภาพที่ 1 การใช้งานเครื่องมือ Proton VPN

Changing User-Agent

หลายระบบมีมาตรการป้องกันการใช้งานผิดปกติ เช่น Rate Limiting หรือ Bot Detection มักจะตรวจสอบค่า User-Agent ใน HTTP Request Header เพื่อแยกแยะว่าผู้ใช้งานคือ “มนุษย์จริง” หรือ “โปรแกรมอัตโนมัติ (Bot)” โดยเฉพาะอย่างยิ่ง หากเป็นค่า User-Agent ที่ไม่ปกติ เช่น curl, python-requests หรือ Java ระบบอาจปฏิเสธการตอบสนอง หรือจำกัดจำนวนคำขอทันที ซึ่งหากเปลี่ยนหรือสุ่มค่า User-Agent เราอาจจะเลี่ยงการตรวจจับของระบบได้ โดยการใช้ Burp Suite Intruder เพื่อ Brute-Force ไปที่ HTTP Request Header “User-Agent” ดังภาพที่ 2

ภาพที่ 2 HTTP Request Header “User-Agent” บน Burp Suite Intruder

Header Manipulation

การดัดแปลง HTTP Request Header โดยการเปลี่ยนค่า HTTP Request Header เช่น X-Forwarded-For หรือ X-Real-IP เพื่อหลอกเซิร์ฟเวอร์ โดยปกติแล้วเมื่อผู้ใช้ส่งคำขอไปยังเว็บเซิร์ฟเวอร์ข้อมูลต่างๆ เช่น IP ต้นทาง จะถูกฝังอยู่ใน HTTP Request Header บางรายการ ซึ่งระบบรักษาความปลอดภัยหรือระบบบันทึก (Logging System) บางประเภทจะใช้ Header เหล่านี้ในการประมวลผลด้วย มาดูกันครับว่ามี HTTP Request Header ใดบางที่หากเราพบแล้วจะสามารถใช้ในการหลบเลี่ยงการตรวจจับเช่น X-Forwarded-For, X-Real-IP, X-Client-IP, X-Remote-IP, X-Remote-Addr, True-Client-IP, CF-Connecting-IP, Fastly-Client-IP, X-Cluster-Client-IP โดยใช้เครื่องมือ Burp Suite Extension ชื่อ Fakip ดังภาพที่ 3

ภาพที่ 3 Github Fakip (https://github.com/AeolusTF/BurpFakeIP/tree/master)

Using Proxy Servers

ใช้งาน Proxy Server ซึ่งทำตัวเป็นตัวกลางระหว่างผู้ใช้งานกับเซิร์ฟเวอร์ โดยที่เราสามารถใช้ Proxy Server ได้หลายตัวเพื่อกระจายคำขอและลดโอกาสถูกตรวจจับ ซึ่งสามารถใช้ได้ทั้ง Public Proxy หรือ Proxy services (แบบมีค่าใช้จ่าย) ตัวอย่างการใช้งาน Python Code ดังภาพที่ 4

ภาพที่ 4 ตัวอย่างการใช้งาน Python Code เพื่อใช้งาน Proxy Server

หรือจะใช้งาน Burp Suite Extension ชื่อ IP-rotate ที่ใช้ AWS API Gateway (จำเป็นต้องใช้งาน Access Key และ Secret Key ในการใช้งาน) เพื่อเปลี่ยน IP Address ของเราในทุก HTTP Request ดังภาพที่ 5 และ 6

ภาพที่ 5 Burp Suite Extension ชื่อ IP-rotate

ภาพที่ 6 Github Ip-rotator (https://github.com/PortSwigger/ip-rotate)

Requesting Different HTTP Methods

บางระบบอาจตรวจสอบเฉพาะ HTTP Request Method GET หรือ POST เท่านั้นทำให้ผู้โจมตีสามารถหลีกเลี่ยงการตรวจจับได้โดยใช้ HTTP Request Method อื่น ๆ เช่น PUT, DELETE หรือ OPTIONS หากเซิร์ฟเวอร์ไม่ควบคุมอย่างเหมาะสมคำขออาจไม่ถูกจำกัด ซึ่งสามารถทดสอบได้ด้วย Burp Suite Repeater ดังภาพที่ 7

ภาพที่ 7 การใช้งาน Burp Suite Repeater เพื่อตรวจสอบ HTTP Request Method

Parameter Pollution

การเพิ่ม Parameter ซ้ำ เช่น “username=admin&password=123456” แก้ไขเป็น “username=admin&username=admin2&password=123456” การทำเช่นนี้อาจทำให้ Back-end สับสนว่าต้องใช้ค่าของ Parameter ใด ส่งผลให้สามารถหลีกเลี่ยงการตรวจจับได้

Alternate Endpoints

ระบบอาจมีได้หลาย End-Points สำหรับฟังก์ชันเดียวกัน เช่น login ซึ่งแต่ละเวอร์ชันหรือแพลตฟอร์มอาจมี End-Points ที่ไม่มีการตรวจสอบ ทำให้เราควรหา API End-Points ที่ไม่มีการตรวจสอบ Rate Limit ดังภาพที่ 8

ภาพที่ 8 API End-Points ที่หลากหลายอาจใช้งานฟังก์ชันเดียวกันคือ login

แนวทางการป้องกัน Rate Limit Bypass

แนวทางการป้องกันในระดับ Application Layer ซึ่งมุ่งเน้นไปที่การควบคุมและตรวจสอบพฤติกรรมของผู้ใช้งานและบอทที่พยายามโจมตีจากช่องทางการใช้งานปกติของระบบ เช่น ฟอร์มล็อกอิน หรือ API ต่าง ๆ มีดังนี้

1. ใช้งาน CAPTCHA หลังจากมีตรวจพบความพยายามล็อกอินผิดพลาดหลายครั้งเพื่อป้องกันบอทและลดการโจมตีแบบ Brute-Force

2. หน่วงเวลาการตอบสนอง (Delay) เมื่อมีความพยายามล็อกอินล้มเหลวหลายครั้ง เช่น เพิ่มเวลารอทีละมากขึ้น ในแต่ละครั้งที่ล็อกอินล้มเหลว

3. ล็อกบัญชีผู้ใช้งานชั่วคราวเมื่อพยายามล็อกอินผิดเกินจำนวนครั้งที่กำหนดเพื่อป้องกันการพยายาม Brute-Force รหัสผ่าน โดยมีข้อเสียคือผู้โจมตีอาจจงใจ Brute-Force รหัสผ่านที่ผิดเพื่อให้บัญชีของเหยื่อถูกล็อก เพื่อให้เจ้าของบัญชีไม่สามารถใช้งานระบบได้ชั่วคราว ซึ่งแนวทางการป้องกันนี้ควรถูกพิจรณาใช้งานอย่างระมัดระวัง

4. บันทึกและแจ้งเตือนพฤติกรรมที่ผิดปกติ เช่น พยายามล็อกอินจาก IP หรืออุปกรณ์ที่ไม่เคยใช้มาก่อน

แนวทางการป้องกันในระดับ Network Layer จะเน้นไปที่การควบคุม IP Address, Traffic volume และ HTTP request rate ซึ่งมีแนวทางการป้องกันดังนี้

1. จำกัดจำนวนคำขอต่อ IP Address (IP Rate Limiting)

2. การใช้งาน Firewall, WAF หรือ Reverse Proxy ในการป้องกัน เช่น NGINX, Cloudflare

3. การบล็อก IP Address ที่มีพฤติกรรมผิดปกติ เช่น มีการยิง HTTP Request ถี่เกินไป

4. การใช้ GeoIP filtering หรือ ASN filtering เพื่อบล็อก Traffic จากบางประเทศหรือบางเครือข่ายของผู้ให้บริการอินเทอร์เน็ต (ISP)

บทสรุป

จากบทความนี้เราได้เรียนรู้ว่าแม้ Rate Limiting จะเป็นกลไกสำคัญที่ใช้จำกัดจำนวนคำขอเพื่อป้องกันการโจมตีแบบ Brute-Force, DoS และการใช้งานระบบเกินขอบเขต แต่ก็ยังมีเทคนิคมากมายที่สามารถใช้หลีกเลี่ยงกลไกนี้ได้การเข้าใจเทคนิค Rate Limit Bypass จึงเป็นสิ่งจำเป็นทั้งสำหรับผู้ป้องกันและผู้ทดสอบระบบ เพื่อเพิ่มความแข็งแกร่งให้กับระบบในยุคที่ภัยคุกคามทางไซเบอร์มีความซับซ้อนและรุนแรงมากขึ้นทุกวันครับ

อ้างอิง

- https://infosecwriteups.com/mastering-rate-limit-bypass-techniques-fff9499b0f42

- https://medium.com/@raxomara/bypassing-rate-limits-all-known-techniques-25891bb5ca59

- https://dataforest.ai/glossary/rate-limit-bypass

แชร์
กลับไปด้านบน

บทความที่เกี่ยวข้อง

อัปเดตข้อมูลด้านไซเบอร์ ทุกสัปดาห์
รับข่าวสารความรู้เชิงลึกเกี่ยวกับความปลอดภัยไซเบอร์จากดาต้าฟาร์มก่อนใคร

ฟีเจอร์นี้จะเปิดให้ใช้งานเร็ว ๆ นี้ โปรดติดตาม

ส่งสัปดาห์ละ 1 ครั้ง ไม่มีสแปม ยกเลิกการรับข่าวสารได้ทุกเมื่อ