- Portspoof ทำให้พอร์ต TCP ทั้ง 65535 พอร์ตดูเหมือนเปิดอยู่ และจำลองลายเซ็นของบริการ เปลี่ยนขั้นตอน reconnaissance ของผู้โจมตีจากการสแกนที่รวดเร็วให้กลายเป็นงานที่ยาวนานและมีต้นทุนสูง
- ส่งคืน
SYN+ACK ต่อทุกความพยายามเชื่อมต่อ และใช้ ลายเซ็นบริการแบบไดนามิก ที่อิง regular expression มากกว่า 9000 รายการ เพื่อให้แต่ละพอร์ตตอบกลับเหมือนบริการจริงที่แตกต่างกัน
- กำหนด โหมดส่งต่อแบบผสม เช่น banner ทันที, การตอบกลับแบบหน่วงเวลา, หรือคงสถานะไม่ตอบสนอง ให้แต่ละพอร์ตตั้งแต่เริ่มต้น และใส่ jitter ในเวลาคงการเชื่อมต่อ ทำให้การกรองด้วย timing ทำได้ยากขึ้น
- ในการตั้งค่า tarpit เริ่มต้น การสแกนเวอร์ชันเต็ม
nmap -sV -p- อาจใช้เวลา มากกว่า 10 ชั่วโมง และสร้างข้อมูลปลอมหลายร้อย MB ทำให้เวลาและ thread ของ scanner ฝั่งผู้โจมตีถูกใช้ไป
- การใช้งานจริงใช้ event loop
epoll แบบ thread เดียว ทำงานใน user space โดยไม่ต้องใช้สิทธิ์ root และ bind ได้เพียง หนึ่งพอร์ต TCP ต่อ instance ที่รัน
ปัญหาที่ Portspoof ต้องการแก้
- เป้าหมายของ Portspoof คือทำให้ การ reconnaissance ของผู้โจมตีช้าลง แพงขึ้น และเชื่อถือได้ยากขึ้น
- แทนที่การสแกน Nmap ปกติ 5 วินาทีจะ map บริการจริงของระบบ เมื่ออยู่หน้า Portspoof พอร์ตทั้ง 65535 พอร์ตจะดูเหมือนเปิดทั้งหมด
- แต่ละพอร์ตดูเหมือนบริการจริงที่แตกต่างกัน และถูกออกแบบให้ไม่มีวิธีแยกได้อย่างรวดเร็วว่าพอร์ตใดคือบริการจริง
ฟีเจอร์หลัก
-
ตอบกลับเหมือนเปิดพอร์ต TCP ทั้ง 65535 พอร์ต
- แทนที่จะบอกว่าพอร์ตเป็น
CLOSED หรือ FILTERED จะส่งคืน SYN+ACK ต่อทุกความพยายามเชื่อมต่อ
-
การจำลองบริการ
- ใช้ลายเซ็นบริการแบบไดนามิกที่อิง regular expression มากกว่า 9000 รายการ
- แต่ละพอร์ตตอบ probe ของ scanner ด้วยตัวตนบริการที่น่าเชื่อถือและแตกต่างกัน
-
โหมดส่งต่อแบบผสม
- แต่ละพอร์ตได้รับโปรไฟล์พฤติกรรมที่แตกต่างกันเมื่อเริ่มต้น
- ผสมทั้งการส่ง banner ทันที, การตอบกลับแบบหน่วงเวลา, และโหมดคงสถานะไม่ตอบสนอง
- เวลาคงการเชื่อมต่อถูกกระจายครอบคลุมช่วงกว้าง ทำให้การตรวจจับเวอร์ชันทั้งช่วง
nmap -sV -p- เกินขีดจำกัดที่ใช้งานได้จริง
-
การป้องกันเชิงรุก
- สามารถใช้เป็น “Exploitation Framework Frontend” เพื่อเล็งช่องโหว่ของเครื่องมือสแกนของผู้โจมตีเอง
-
โมเดลการรันที่เบา
- ทำงานใน user space
- ไม่ต้องใช้สิทธิ์ root
- bind ได้เพียง หนึ่งพอร์ต TCP ต่อ instance ที่รัน
- ใช้ CPU และหน่วยความจำน้อย
วิธีทำให้ scanner และการตรวจจับเวอร์ชันสับสน
- ในการสแกนพอร์ตแบบง่าย แม้แต่ช่วงเล็ก ๆ เช่นพอร์ต 1~20 ก็จะปรากฏเป็น
open ทั้งหมด
- ตัวอย่าง output จะแสดงชื่อบริการปะปนกัน เช่น
tcpmux, compressnet, echo, daytime, ftp-data
- ในการสแกนเพื่อตรวจจับเวอร์ชัน จะส่งคืนลายเซ็นแบบไดนามิกที่ถูกต้องต่อ service probe
- ในตัวอย่างพอร์ต 1~100 จะปรากฏบริการและสตริงเวอร์ชันหลากหลาย เช่น
irc, http, pop3, ssh, ftp, smtp, telnet, tor-control
- ผลคือผู้โจมตีระบุหมายเลขพอร์ตที่ระบบใช้งานจริงได้ยาก
- การสแกนเวอร์ชันเต็ม
nmap -sV -p- ในการตั้งค่า tarpit เริ่มต้นจะใช้เวลา มากกว่า 10 ชั่วโมง และสร้างข้อมูลปลอมหลายร้อย MB
- scanner เสียเวลาและ thread ไปกับการเชื่อมต่อที่ไม่นำไปสู่ผลลัพธ์จริง
แนวทางออกแบบ: epoll tarpit แบบ thread เดียว
- บริการจริงอย่าง SSH, SMTP, FTP, HTTP จะส่ง banner คงการเชื่อมต่อ และรอ input จาก client
- การจำลองให้น่าเชื่อถือจึงต้องทำตาม flow แบบ accept, send, hold เช่นเดียวกัน
- โมเดลที่ใช้ thread ต่อ client จะใช้หน่วยความจำและ CPU และด้วยต้นทุน context switching อาจทำให้ฝ่ายป้องกันใช้ทรัพยากรหมดก่อน
- Portspoof ใช้ event loop
epoll แบบ thread เดียว
- แต่ละพอร์ตได้รับการกำหนดโหมดส่งต่อเมื่อเริ่มต้น
- บางพอร์ตส่ง banner ทันที, บางพอร์ตตอบกลับหลังจากมีข้อมูลจาก client, และบางพอร์ตเงียบ
- เวลาคงการเชื่อมต่อถูกกระจายตั้งแต่หลายสิบมิลลิวินาทีไปจนถึงหลายนาที ครอบคลุมหลายหลักของเวลา
- ทุกการเชื่อมต่อมี jitter ทำให้แม้ตรวจจับพอร์ตเดิมซ้ำ ก็ไม่คืน timing เดิม
- วิธีนี้ทำให้การโจมตีที่ส่งข้อมูลขยะไปทุกพอร์ตแล้ววัด timing การตอบกลับทำได้ยาก
- tarpit แบบง่ายอาจยึดการเชื่อมต่อไว้ไม่กี่วินาที ขณะที่บริการจริงอาจปิดเร็วเมื่อเจอ protocol ที่ผิด
- ในโหมดผสมและการกระจาย timing ที่กว้าง พอร์ตปลอมหลายพันพอร์ตก็ปิดในช่วงที่คล้ายกับบริการจริง
- ไม่มี threshold ที่ชัดเจนให้ใช้กรอง
ความไม่สมมาตรของต้นทุน
- ต้นทุนฝ่ายป้องกันอยู่ที่ประมาณ 1~2KB หน่วยความจำ kernel ต่อการเชื่อมต่อที่ว่างอยู่
- loop
epoll เป็น thread เดียว จึงไม่มี overhead จาก context switching
- อุปกรณ์ระดับทั่วไปก็รองรับการเชื่อมต่อพร้อมกันมากกว่า 10,000 รายการได้
- ต้นทุนของผู้โจมตีเปลี่ยนไปเป็นเวลาและความพยายาม
- การสแกนพอร์ตเพียงอย่างเดียวทำให้ทุกพอร์ตดูเปิด จึงยากที่จะได้ข้อมูลที่มีความหมาย
- หากต้องการหาบริการจริง จำเป็นต้องตรวจจับเวอร์ชันในพอร์ตทั้งหมด 65535 พอร์ต และตรวจระดับ protocol กับเป้าหมายที่ดูเป็นไปได้
- การสแกน 5 วินาทีกลายเป็นงาน active มากกว่า 10 ชั่วโมง และผลลัพธ์ก็ยังเหมือนเข็มในกองฟาง
สิ่งที่เปลี่ยนใน v2.0
- v2.0 ออกจากวิธีเดิมที่ส่ง banner แล้วปิดการเชื่อมต่อ
- วิธีเดิมอ่อนแอต่อการเลี่ยงด้วยการปิดการเชื่อมต่อที่กล่าวถึงในบทความบล็อก Vicarius/Hored1971
- เอนจิน tarpit ใหม่คงทุกการเชื่อมต่อไว้ในสถานะเปิดด้วย timing แบบผสม
- วิธีนี้มีเป้าหมายเพื่อขัดขวางการกรองด้วยการปิดการเชื่อมต่อ, timing fingerprinting, การวิเคราะห์ banner, และการทำ statistical pattern modeling
การติดตั้งและการตั้งค่าพื้นฐาน
- การ build ต้องใช้ C++ compiler และ CMake 3.10+
- ขั้นตอน build จาก source มีดังนี้
mkdir build && cd build
cmake -DCMAKE_INSTALL_SYSCONFDIR=/etc ..
make
sudo make install
- Portspoof ทำงานใน user space แต่หากต้องการดัก traffic ที่มุ่งไปยังพอร์ตอื่น ต้องใช้กฎ firewall ของระบบ
- พอร์ตเริ่มต้นคือ 4444 และให้ยกเว้นพอร์ตบริการจริงก่อน จากนั้น redirect TCP traffic ที่เหลือไปยัง Portspoof
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-ports 4444
- ต้องเปลี่ยน
eth0 เป็น network interface จริง
- ต้องเพิ่มกฎ
RETURN ให้ทุกพอร์ตที่กำลังรันบริการจริง
- สำหรับการใช้งานถาวร สามารถบันทึกกฎ iptables หรือใช้
iptables-config ในไดเรกทอรี system_files
- สำหรับสคริปต์เริ่มต้น สามารถใช้ตัวอย่างใน
system_files/init.d/
โหมดการรัน
- แนะนำให้ใช้ โหมดจำลองบริการ
- สร้างและส่งลายเซ็นบริการปลอมให้ port scanner
portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures -D
- ระบุ timing ของ tarpit แบบกำหนดเองได้ด้วย
-t และ -T
- ตัวอย่างนี้คงแต่ละการเชื่อมต่อไว้ 10~60 วินาที
portspoof -s /etc/portspoof_signatures -t 10 -T 60 -D
- Open Port Mode ส่งคืนเฉพาะสถานะ
OPEN ต่อทุกความพยายามเชื่อมต่อ โดยไม่มี service banner
- การเชื่อมต่อยังคงถูกจัดการแบบ tarpit
portspoof -D
- Fuzzing Mode ใช้ส่ง payload แบบสุ่มหรืออิง wordlist ไปยังเครื่องมือสแกนได้
portspoof -1 -v
portspoof -f payloads.txt -v
การเสริมความแข็งแกร่งด้วย iptables
- แม้กฎ
REDIRECT พื้นฐานจะทำงานได้ แต่ scanner เชิงรุกอาจกดดัน Portspoof ด้วยจำนวนการเชื่อมต่อ
- กฎเสริมเพิ่ม rate limiting และการบล็อกอัตโนมัติ
- ยกเว้นพอร์ตบริการจริงจากการ redirect
- ในตัวอย่างยกเว้นพอร์ต SSH 22
- กฎบล็อกแบบ global จะมีผลกับบริการจริงด้วย
- ตัวอย่างกฎประกอบด้วยองค์ประกอบต่อไปนี้
- อนุญาต loopback
- drop IP ที่ถูกทำเครื่องหมายเป็น
PORTSCAN เป็นเวลา 60 วินาที
- drop เมื่อ SYN ใหม่ต่อ source IP เกิน 10 ครั้งต่อวินาที และ burst เกิน 30 ครั้ง
- หาก IP เดียวคงการเชื่อมต่อไปยังพอร์ต Portspoof 4444 เกิน 100 รายการ ให้ทำเครื่องหมายแล้ว drop
- อนุญาต traffic established/related และ SYN ใหม่ จากนั้น drop ที่เหลือ
- ใน deployment ที่มี traffic สูง สามารถเพิ่มขนาดรายการ
xt_recent ได้
echo "options xt_recent ip_list_tot=10000" > /etc/modprobe.d/xt_recent.conf
- สามารถปรับการตั้งค่า kernel connection tracking และ backlog ได้เช่นกัน
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.core.somaxconn=4096
Portspoof Pro
- Portspoof Pro ขยาย deception จากระดับโฮสต์เดียวไปเป็นระดับเครือข่ายทั้งหมด
- sensor เดียวจำลองเครือข่าย
/16 ทั้งเครือข่าย
- ให้ IP หลายพันรายการ
- แต่ละ IP มีบริการเฉพาะตัวในทุกพอร์ต
- รักษาบทสนทนาหลายขั้นตอนแบบมี state
- ให้ความสามารถ deception ทั่วทั้งเครือข่าย
- เปลี่ยน dark IP space และ subnet ที่ไม่ได้ใช้ให้เป็น deception grid แบบ active
- โฮสต์ที่จำลองแต่ละตัวนำเสนอบริการเฉพาะตัวที่มีบุคลิกต่างกันตาม source IP
- tarpit แบบ active ทำให้ socket pool ของผู้โจมตีหมดและ throttle เครื่องมืออัตโนมัติ
- รองรับการตรวจจับการสแกนและ tool fingerprinting
- ตรวจจับเทคนิค SYN, FIN, NULL, XMAS, ACK scan
- fingerprint Nmap, Masscan, ZMap และ scanner แบบ custom
- stream telemetry แบบ JSON ที่มีโครงสร้างพร้อม MITRE ATT&CK mapping ไปยัง SIEM
- คำนึงถึงการ deploy ในสภาพแวดล้อมปฏิบัติการจริง
- ทำงานใน sandbox environment ข้าง production traffic
- ส่ง deception traffic ไปยัง sensor ด้วย routing policy
- ระบุว่าไม่มี inline tap และไม่มีความเสี่ยงต่อ workload จริง
- รองรับ NIS2, DORA, ISO 27001, NIST CSF, CIS Controls
ไลเซนส์และการรายงาน issue
- Portspoof ใช้ไลเซนส์ GNU GPLv2
- สำหรับแอปพลิเคชันเชิงพาณิชย์และถูกกฎหมาย แนะนำให้ติดต่อผู้เขียนเพื่อหารือเรื่องไลเซนส์ที่เหมาะสม
- รายงาน bug และคำขอฟีเจอร์ได้ที่ GitHub Issue Tracker หรือทางอีเมล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
พอร์ตมี 65,536 พอร์ต และพอร์ต 0 ก็เป็นพอร์ตที่ในบางระบบปฏิบัติการสามารถเปิดบริการที่เข้าถึงได้จากอินเทอร์เน็ตได้ด้วย
และถ้านักพัฒนา MariaDB เห็นเรื่องนี้ การตั้งค่าเริ่มต้นที่ให้ฐานข้อมูล listen ที่พอร์ต 0 เพื่อปิดกั้นการเข้าถึงจากอินเทอร์เน็ต จริง ๆ แล้วไม่ได้ปิดกั้นการเข้าถึง DB จากอินเทอร์เน็ตบนระบบจำนวนไม่น้อย
if (mysqld_port)หมายถึงเมื่อmysqld_portไม่เท่ากับ 0 และดูเหมือนว่าจะเป็นพฤติกรรมที่มีมาตั้งแต่อย่างน้อย MariaDB 5.5ความปลอดภัยคอมพิวเตอร์ดูเหมือนสุดท้ายแล้วคงต้องวิวัฒน์ต่อไปเป็น การป้องกันเชิงรุก แบบข้างต้นอย่างหลีกเลี่ยงไม่ได้
เมื่อดูว่าระบบภูมิคุ้มกันซับซ้อนและมีหลายชั้นแค่ไหน สักวันคอมพิวเตอร์หรือเครือข่ายก็น่าจะมีหน้าตาคล้ายกัน
สักวัน IT จะกลายเป็นสาขาที่ชำนาญเต็มที่ แต่วันนี้ยังไม่ใช่
แต่ถ้ารวมประเด็นนั้นเข้าไปด้วย ก็กลับเห็นเส้นขนานที่น่ากังวลอยู่เหมือนกัน
ผมเคยทำเว็บเพจที่สร้าง ที่อยู่อีเมลแบบสุ่มได้ไม่รู้จบ เพื่อกันสแปมบอตที่เก็บอีเมล: http://web.archive.org/web/20020610054821/http://www.sourtim...
ถ้ารันของแบบนี้ อาจมีคนสแกนเครื่องของผมแล้วส่งคำขอ bug bounty มาเป็นสิบ ๆ รายการ โดยบอกว่า “X เวอร์ชันที่รู้ว่ามีช่องโหว่ กำลังทำงานอยู่”
ช่วงกลางยุค 90 มีผลิตภัณฑ์ honeypot ชื่อ CyberCop Sting ซึ่งมาก่อน Ballista ของ Secure Networks
CyberCop Sting สามารถจำลองบริการ TCP/UDP ของ implementation หลายแบบได้ และถ้าจำไม่ผิด ยังตั้งค่าพฤติกรรม TCP/IP stack ให้ดูเหมือนระบบปฏิบัติการต่าง ๆ ได้ด้วย สำหรับเกือบ 30 ปีก่อนถือว่าเป็นฟีเจอร์ที่ค่อนข้างล้ำ
[1] https://theswissbay.ch/pdf/Gentoomen%20Library/Security/0321...
[2] https://news.ycombinator.com/item?id=26440139
แน่นอนว่าเป็นสิ่งที่น่าจะมีใครทำอยู่แล้ว แต่ก็น่าแปลกใจนิดหน่อยที่ก่อนหน้านี้ไม่เคยนึกถึงเลย และยิ่งน่าแปลกใจที่เพิ่งได้ยินไอเดียนี้เป็นครั้งแรก
ทำแบบนี้แล้วท้ายที่สุดจะทำให้แฮ็กเกอร์หรือบอตเข้ามาดูเซิร์ฟเวอร์ละเอียดขึ้น หรืออย่างน้อยก็ทำให้ ทราฟฟิกไหลเข้ามามากขึ้น หรือเปล่า
ผมไม่คิดว่าสคริปต์คิดดี้ส่วนใหญ่จะกรอง honeypot ที่อาจเป็นไปได้หรืออุปกรณ์แบบนี้ออกจากเครื่องมือของตัวเอง
แต่หลังจากรู้แล้วว่าโฮสต์ยังมีชีวิตอยู่ คำถามคือจะไปยุ่งกับพอร์ตไหน สมมติว่าต้นทุนในการสแกนหรือโจมตีแต่ละพอร์ตของแต่ละเซิร์ฟเวอร์ใกล้เคียงกัน ต่อให้แยกพอร์ตที่ถูกสปูฟออกได้ ก็ควรไปหาเครื่องอื่นที่มีโอกาสสำเร็จสูงกว่าดีกว่า อาจรัน portspoof บน 127.0.0.35 ในเครื่องตัวเองเพื่อเทียบข้อมูลตอบกลับหรือความต่างของ timing ได้ แต่พื้นที่ค้นหาจะใหญ่ขึ้นทันทีราว 5,000 เท่าเมื่อเทียบกับพอร์ตที่มักเปิดอยู่ไม่กี่พอร์ต และพอร์ตของเซิร์ฟเวอร์อื่นอาจดูมีโอกาสสำเร็จมากกว่า
เครื่องมือส่วนใหญ่ไม่ได้คำนึงถึงสถานการณ์ที่ทุกพอร์ตเปิดอยู่จนเกิด false positive นี่เป็นสถานการณ์ที่พบได้บ่อยในการทดสอบเจาะระบบและทำให้เสียเวลา แต่ผมไม่อยากให้เหตุผลกับผู้โจมตีในการมองเห็นอินฟราของผมมากขึ้น ผมชอบ port knocking ซึ่งแทบจะเป็นขั้วตรงข้ามของวิธีนี้มากกว่า
สำหรับการโจมตีวงกว้าง ต้องถูกติดตั้งบนโฮสต์หลายสิบล้านเครื่องถึงจะมีผลในระดับหนึ่ง และเมื่อนั้นผู้โจมตีจึงจะทำเพียงหา honeypot แล้วโต้ตอบกับมันอย่างเดียวได้ไม่คุ้ม ถ้าคุณถูกโจมตีแบบมีเป้าหมายชัดเจน พอร์ต honeypot อาจถ่วงเวลาเขาเล็กน้อยเพราะพยายาม exploit พอร์ตเหล่านั้น แต่ถ้าคุณรันบริการที่มีช่องโหว่ สุดท้ายก็จะถูกเจาะอยู่ดี อีกอย่าง ถ้าคุณเป็น vendor เมื่อทีมรักษาความปลอดภัยของลูกค้าเป้าหมายสแกนเจอ ก็อาจต้องตอบแบบสอบถามความปลอดภัยที่น่ารำคาญมาก ๆ
เว็บไซต์ของผมก็ทำคล้าย ๆ กัน https://bini.wales จะคืนค่า 200 ให้ทุก endpoint และบันทึกทุกความพยายาม จึงกลายเป็น honeypot ที่ใช้ได้ดีสำหรับการโจมตีอัตโนมัติ
ส่วนใหญ่จับพวกที่สแกนจำนวนมากหา plugin WordPress ที่มีช่องโหว่ หรือ backdoor ที่ถูกทิ้งไว้ ในทำนองเดียวกัน https://varun.ch/login ก็เลียนแบบเว็บไซต์ WordPress ที่มีลูกเล่นพลิกนิดหน่อย
ดีเลย ดีใจที่ไม่มีคำว่า “honeypot” โผล่มาสักครั้ง
เมื่อก่อนผมเคยรับช่วงดูแล honeypot “ของจริง” พอตรวจดูพบว่าเปิด port ไว้ราว ๆ 30 port แล้วถึงกับพูดออกมาจริง ๆ ว่า “นี่มันขยะอะไรกัน”
เปิด port ไว้ให้ script kiddie คิดว่าเข้าถึงอะไรบางอย่างได้แล้วตื่นเต้น แต่จริง ๆ แล้วไม่มีอะไรเลย honeypot ที่ล็อกไว้ ณ จุดนั้นก็ดูไม่ค่อยเหมือน honeypot เท่าไร
honeypot ใช้เพื่อล่อและตรวจจับผู้โจมตี โดยปกติจะบันทึกพฤติกรรมและ pattern ของพวกเขาไว้เพื่อวิเคราะห์หรือบล็อก เครื่องมือนี้น่าจะดีถ้ามี logging มากกว่าแค่ iptables และตัวมันเองไม่ใช่ honeypot ล้วน ๆ แต่แนวคิดก็ไม่ได้ห่างกันมากนัก อย่างไรก็ดี ที่หน้า GitHub บอกว่าสิ่งนี้ “เสริมความปลอดภัยของ OS” ผมไม่เชื่อเลยแม้แต่น้อย มันอาจช่วยพรางตาจากตัวสแกนบริการอัตโนมัติได้บ้าง แต่ถ้า MySQL server กำลัง listen อยู่ที่ 3306 และผู้โจมตีเชื่อมต่อไปที่ 3306 เขาก็ยังคุยกับ MySQL อยู่ดี จะมี port ที่เหลืออีก 65534 port ส่ง response ขยะออกมาหรือไม่ก็ไม่สำคัญ
เห็นบอกว่า “bind กับ TCP port ได้เพียง port เดียวต่อ instance ที่รันอยู่หนึ่งตัว” เลยสงสัยว่ามันทำงานอย่างไร
ถ้าจะครอบคลุมทุก port ต้องรัน 65535 instance เลยไหม?
จากนั้นเรียก
getsockoptเพื่อดูว่า port เดิมคืออะไร: https://github.com/drk1wi/portspoof/blob/c3f3c34531c59df229e...ไม่รู้ hard limit จริง ๆ หรือปริมาณการใช้ memory แต่คาดว่า port redirect น่าจะเรียบง่ายกว่า
สิ่งนี้อาจกลายเป็น DoS amplifier ได้ไหม?
ถ้าส่ง packet ที่ปลอมแปลงอย่างเหมาะสม จะทำให้มันส่ง packet จำนวนมากกลับไปยังต้นทางที่ดูเหมือนเป็นต้นทางได้หรือเปล่า?
ถ้าเป็น UDP นั่นอาจกลายเป็นเรื่องบ้าบอจริง ๆ ได้