SYN Flood เป็นรูปแบบหนึ่งของการโจมตี DoS ซึ่งผู้โจมตีส่งคำขอ SYN
ต่อเนื่องไปยังเซิร์ฟเวอร์ของเป้าหมายเพื่อพยายามใช้ทรัพยากรเซิร์ฟเวอร์เพียงพอเพื่อทำให้ระบบไม่ตอบสนองต่อการรับส่งข้อมูลที่ถูกต้องตามกฎหมาย [1]
คำขอ
SYN
และแพ็กเก็ตSYN
เป็นสิ่งเดียวกัน
การโจมตีแบบฟลัดของ SYN ทำงานโดยใช้กระบวนการแฮนด์เชคของการเชื่อมต่อ TCP ภายใต้สภาวะปกติ TCP จะแสดงกระบวนการที่แตกต่างกันสามกระบวนการเพื่อทำการเชื่อมต่อ (รูปที่ 1a)
SYN
( ซิงโครไนซ์ ) ไปยังเซิร์ฟเวอร์SYN-ACK
เพื่อ ACK
( รับทราบ ) การสื่อสารACK
เพื่อรับทราบการรับแพ็กเก็ตจากเซิร์ฟเวอร์และสร้างการเชื่อมต่อหลังจากเสร็จสิ้นลำดับการส่งและรับแพ็กเก็ตนี้แล้ว การเชื่อมต่อ TCP จะเปิดขึ้นและสามารถส่งและรับข้อมูลได้ สิ่งนี้เรียกว่าการจับมือสามทาง TCP เทคนิคนี้เป็นรากฐานสำหรับทุกการเชื่อมต่อที่สร้างโดยใช้ TCP
ในการสร้าง DoS ผู้โจมตีจะใช้ประโยชน์จากข้อเท็จจริงที่ว่าหลังจากได้รับแพ็กเก็ต SYN
เริ่มต้นแล้ว เซิร์ฟเวอร์จะตอบสนองด้วยแพ็กเก็ต SYN-ACK
หนึ่งหรือหลายแพ็กเก็ต และรอขั้นตอนสุดท้ายในการจับมือกัน Cloudflare [2] อธิบายวิธีการทำงาน (รูปที่ 1b):
SYN
จำนวนมากไปยังเซิร์ฟเวอร์เป้าหมาย ซึ่งมักจะมีที่อยู่ IP ปลอมแปลงACK
สุดท้ายซึ่งไม่เคยมาถึง ผู้โจมตียังคงส่งแพ็กเก็ต SYN
เพิ่มเติมต่อไป การมาถึงของแพ็กเก็ต SYN
ใหม่แต่ละแพ็กเก็ตทำให้เซิร์ฟเวอร์รักษาการเชื่อมต่อพอร์ตที่เปิดใหม่ไว้ชั่วคราวตามระยะเวลาหนึ่ง และเมื่อพอร์ตที่มีอยู่ทั้งหมดถูกใช้แล้ว เซิร์ฟเวอร์จะไม่สามารถทำงานได้ตามปกติ การโจมตีในพื้นที่เก็บข้อมูลนี้ดำเนินการใน VM จำเป็นต้องใช้เครื่องจักรสามเครื่องในการโจมตี เครื่องหนึ่งถูกใช้เป็น ผู้โจมตี อีกเครื่องหนึ่งถูกใช้เป็น เหยื่อ (เช่น เซิร์ฟเวอร์) และเครื่องที่สามถูกใช้เป็น ผู้สังเกตการณ์ (เช่น ไคลเอนต์)
ในการตั้งค่าการโจมตี คุณสามารถตั้งค่า VM สามเครื่องบนโฮสต์คอมพิวเตอร์เครื่องเดียวกันได้ อีกทางหนึ่ง สามารถตั้งค่า VM สองตัวบนโฮสต์คอมพิวเตอร์โดยที่เครื่องโฮสต์ทำหน้าที่เป็นคอมพิวเตอร์เครื่องที่สาม
การโจมตีนี้ดำเนินการภายใต้สมมติฐานที่ว่าผู้โจมตีอยู่บนเครือข่ายทางกายภาพเดียวกันกับเหยื่อ ดังนั้นจึงทำให้งานการระบุหมายเลขลำดับ TCP และหมายเลขพอร์ตต้นทางง่ายขึ้น สามารถใช้เครื่องมือดมกลิ่นเพื่อรวบรวมข้อมูลที่จำเป็นได้
การโจมตีในพื้นที่เก็บข้อมูลนี้ดำเนินการโดยใช้เครื่องมือ netwox
จากนั้นใช้เครื่องมือดมกลิ่นเช่น Wireshark [3] เพื่อจับแพ็กเก็ตที่ถูกโจมตี ในขณะที่การโจมตีดำเนินไป netstat -na
ถูกเรียกใช้บนเครื่องของเหยื่อเพื่อเปรียบเทียบผลลัพธ์กับก่อนการโจมตี
# check the size of the queue for holding half-open connections
sudo sysctl -q net.ipv4.tcp_max_syn_backlog
# check the current usage of the queue;
# i.e., the number of half-open connections associated with some listening port
netstat -na
# one netwox tool that may be useful is tool number 76: synflood
netwox 76 --help
คุกกี้ SYN:
การโจมตีในพื้นที่เก็บข้อมูลนี้ดำเนินการโดยการจัดการคุกกี้ SYN
การใช้คุกกี้ SYN ช่วยให้เซิร์ฟเวอร์หลีกเลี่ยงการตัดการเชื่อมต่อเมื่อคิว SYN เต็ม แทนที่จะจัดเก็บการเชื่อมต่อเพิ่มเติม รายการคิว SYN จะถูกเข้ารหัสเป็นหมายเลขลำดับที่ส่งในการตอบกลับ SYN-ACK หากเซิร์ฟเวอร์ได้รับการตอบกลับ ACK ตามมาจากไคลเอนต์ด้วยหมายเลขลำดับที่เพิ่มขึ้น เซิร์ฟเวอร์จะสามารถสร้างรายการคิว SYN ใหม่โดยใช้ข้อมูลที่เข้ารหัสในหมายเลขลำดับ TCP และดำเนินการเชื่อมต่อตามปกติ
แม้ว่าความพยายามในการบรรเทาผลกระทบนี้จะสูญเสียข้อมูลบางอย่างเกี่ยวกับการเชื่อมต่อ TCP แต่ก็ดีกว่าการปล่อยให้ DoS เกิดขึ้นกับผู้ใช้ที่ถูกต้องตามกฎหมายอันเป็นผลมาจากการโจมตี
คุกกี้ SYN ถูกสร้างขึ้นโดย DJ Bernstein [4] เพื่อตอบสนองต่อปัญหาน้ำท่วมของ SYN โดยตรง
ใช้คำสั่ง sysctl
เพื่อเปิด/ปิดกลไกคุกกี้ SYN:
sudo sysctl -a | grep cookie # Display the SYN cookie flag
sudo sysctl -w net.ipv4.tcp_syncookies=0 # turn off SYN cookie
sudo sysctl -w net.ipv4.tcp_syncookies=1 # turn on SYN cookie
คุกกี้ SYN เป็นหนึ่งในมาตรการรับมือหลายประการที่สามารถนำมาใช้เพื่อหยุดการฟลัดของ SYN การบรรเทาผลกระทบอื่นๆ ได้แก่ การเพิ่มขนาดสูงสุดของคิว การลดตัวจับเวลา SYN-RECEIVED
และการรีไซเคิลการเชื่อมต่อ TCP แบบครึ่งเปิดที่เก่าที่สุด
↑ "คำแนะนำของ CERT CA-1996-21 TCP SYN น้ำท่วมและการปลอมแปลง IP" มหาวิทยาลัย Carnegie Mellon
↑ "SYN Flood Attack" คลาวด์แฟลร์
↑ "เกี่ยวกับ Wireshark" มูลนิธิ Wireshark
↑ "คุกกี้ SYN" ดีเจ เบิร์นสไตน์
ขอขอบคุณที่ให้ความสนใจ โครงการนี้สนุกและลึกซึ้ง!