ชุดเครื่องมือทดสอบช่องโหว่ DoS ประสิทธิภาพสูง (D) ใช้เวกเตอร์การโจมตี L4/7 ต่างๆ แนวทางอะซิงก์กับเครือข่ายช่วยลดความต้องการ CPU/RAM ในขณะที่ดำเนินการโต้ตอบเครือข่ายที่ซับซ้อน
บันทึก ? ชุดเครื่องมือไม่มีความสามารถที่จำเป็นสำหรับการทดสอบประสิทธิภาพที่เหมาะสมของเซิร์ฟเวอร์หรือเครือข่ายเป้าหมาย เป้าหมายคือการทำความเข้าใจระดับการป้องกัน โดยทำการโจมตีที่ออกแบบมาเป็นพิเศษเพื่อใช้ในทางที่ผิดต่อข้อผิดพลาดทั่วไป และหลีกเลี่ยงมาตรการป้องกันทั่วไป
คำเตือน ❗ ห้ามทดสอบโครงสร้างพื้นฐาน (เซิร์ฟเวอร์ เว็บไซต์ อุปกรณ์เครือข่าย ฯลฯ) โดยไม่ได้รับความยินยอมจากเจ้าของ การตั้งค่าเริ่มต้นของแพ็คเกจได้รับการปรับแต่งเพื่อหลีกเลี่ยงผลกระทบขนาดใหญ่ที่ไม่ได้ตั้งใจเมื่อทำการทดสอบ
แรงบันดาลใจจากโครงการ MHDDoS
จาก PyPI:
$ pip install fiberfox
จากแหล่งที่มา:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
สร้างอิมเมจนักเทียบท่า:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
ตัวอย่าง:
$ fiberfox
--targets tcp://127.0.0.1:8080 http://127.0.0.1:8081
--concurrency 512
--rpc 1024
--strategy STRESS
--duration-seconds 3600
--proxies-config ./proxies.txt
คุณสมบัติ:
--concurrency
(หรือ -c
) กำหนดจำนวนของ async coroutines ที่จะรัน Fiber ไม่ได้สร้างเธรด OS ใหม่ ดังนั้นคุณจึงสามารถรันเธรด OS จำนวนมากได้โดยมีค่าใช้จ่ายเพียงเล็กน้อย สำหรับเวกเตอร์การโจมตี TCP จำนวนเส้นใยโดยประมาณจะสอดคล้องกับจำนวนสูงสุดของการเชื่อมต่อ TCP ที่เปิดอยู่ สำหรับการโจมตี UDP การใช้ไฟเบอร์มากเกินไปมักทำให้ประสิทธิภาพการทำงานแย่ลงSLOW
หรือ CONNECTIONS
) ตรวจสอบให้แน่ใจว่าได้ตั้งค่าไฟเบอร์มากกว่าที่คุณมีเป้าหมายเอกสารเพิ่มเติมเกี่ยวกับธง:
$ python fiberfox --help
usage: fiberfox [-h] [--targets [TARGETS ...]] [--targets-config TARGETS_CONFIG] [-c CONCURRENCY] [-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}] [--rpc RPC] [--packet-size PACKET_SIZE]
[-d DURATION_SECONDS] [--proxies [PROXIES ...]] [--proxies-config PROXIES_CONFIG] [--proxy-providers-config PROXY_PROVIDERS_CONFIG] [--log-level {DEBUG,INFO,ERROR,WARN}]
[--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS]
options:
-h, --help show this help message and exit
--targets [TARGETS ...]
List of targets, separated by spaces (if many)
--targets-config TARGETS_CONFIG
File with the list of targets (target per line). Both local and remote files are supported.
-c CONCURRENCY, --concurrency CONCURRENCY
Total number of fibers (for TCP attacks means max number of open connections)
-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}, --strategy {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}
Flood strategy to utilize
--rpc RPC Number of requests to be sent to each connection
--packet-size PACKET_SIZE
Packet size (in bytes)
-d DURATION_SECONDS, --duration-seconds DURATION_SECONDS
How long to keep sending packets, in seconds
--proxies [PROXIES ...]
List of proxy servers, separated by spaces (if many)
--proxies-config PROXIES_CONFIG
File with a list of proxy servers (newline-delimited). Both local and remote files are supported.
--proxy-providers-config PROXY_PROVIDERS_CONFIG
Configuration file with proxy providers (following MHDDoS configuration file format). Both local and remote files are supported.
--reflectors-config REFLECTORS_CONFIG
File with the list of reflector servers (IP per line). Only required for amplification attacks. Both local and remote files are supported.
--log-level {DEBUG,INFO,ERROR,WARN}
Log level (defaults to INFO)
--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS
Proxy connection timeout in seconds (default: 10s)
เวกเตอร์การโจมตีถูกกำหนดโดยตัวเลือก --strategy
เมื่อรันสคริปต์
หมายเหตุ: แพ็คเกจอยู่ระหว่างการพัฒนา จะมีการเพิ่มเติมวิธีการเพิ่มเติมเร็วๆ นี้
การโจมตี L4 ได้รับการออกแบบมาเพื่อกำหนดเป้าหมายเลเยอร์การขนส่ง และส่วนใหญ่จะใช้เพื่อโอเวอร์โหลดความจุของเครือข่าย ต้องใช้ความรู้ขั้นต่ำเกี่ยวกับเป้าหมาย
กลยุทธ์ | ชั้น | ขนส่ง | ออกแบบ | หมายเหตุ |
---|---|---|---|---|
UDP | L4 | ยูดีพี | Simple Flood: ส่งแพ็กเก็ต UDP ที่สร้างขึ้นแบบสุ่มไปยังเป้าหมาย | ควบคุมไฟเบอร์โดยอัตโนมัติเมื่อรับ NO_BUFFER_AVAILABLE จากอุปกรณ์เครือข่าย เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น อย่ากำหนดค่ามากกว่า 2 ไฟเบอร์ต่อเป้าหมายเมื่อทดสอบการโจมตีแบบ UDP ฟลัด |
TCP | L4 | TCP | Simple Flood: ส่งแพ็กเก็ต TCP ที่สร้างแบบสุ่ม RPC ไปยังการเชื่อมต่อ TCP แบบเปิด | รองรับการกำหนดค่าขนาดของแพ็กเก็ตเดียวและจำนวนแพ็กเก็ตที่จะส่งไปยังการเชื่อมต่อที่เปิดอยู่แต่ละครั้ง |
CONNECTION | L4 | TCP | เปิดการเชื่อมต่อ TCP และรักษาการเชื่อมต่อให้คงอยู่ได้นานที่สุด | เพื่อให้มีประสิทธิภาพ การโจมตีประเภทนี้ต้องใช้จำนวนเส้นใยที่สูงกว่าปกติ โปรดทราบว่าเซิร์ฟเวอร์สมัยใหม่ค่อนข้างดีในการจัดการการเชื่อมต่อที่เปิดอยู่ที่ไม่ได้ใช้งาน |
คลาสพิเศษของการโจมตี L4
UDP เป็นโปรโตคอลไร้การเชื่อมต่อ จะไม่ตรวจสอบที่อยู่ IP ต้นทาง เว้นแต่การประมวลผลที่ชัดเจนจะกระทำโดยเลเยอร์แอปพลิเคชัน หมายความว่าผู้โจมตีสามารถปลอมแปลงดาตาแกรมเพื่อรวมที่อยู่ IP ต้นทางโดยอำเภอใจได้อย่างง่ายดาย บ่อยครั้งที่แอปพลิเคชันโปรโตคอลได้รับการออกแบบในลักษณะที่แพ็กเก็ตที่สร้างขึ้นในการตอบสนองมีขนาดใหญ่กว่ามากซึ่งสร้างเอฟเฟกต์การขยายสัญญาณ (ดังนั้นชื่อ) โดยการส่งดาตาแกรมดังกล่าวไปยังเซิร์ฟเวอร์ต่างๆ (ตัวสะท้อนแสง) ผู้โจมตีสามารถสร้างการรับส่งข้อมูลจำนวนมากไปยังอุปกรณ์เป้าหมาย (เหยื่อ)
การโจมตีแบบขยายสัญญาณดำเนินการ:
กลยุทธ์ | โปรโตคอล | ปัจจัยการขยาย | ช่องโหว่ |
---|---|---|---|
RDP | โปรโตคอลเดสก์ท็อประยะไกล (RDP) | ||
CLDAP | โปรโตคอลการเข้าถึงไดเรกทอรีน้ำหนักเบา (CLDAP) ที่ไร้การเชื่อมต่อ | 56 โย 70 | |
MEM | เมคแคช | 10,000 ถึง 50,000 | |
CHAR | โปรโตคอลตัวสร้างอักขระ (CHARGEN) | 358.8 | คำขอสร้างถ่าน |
ARD | Apple Remote Desktop (รพช.) | ||
NTP | โปรโตคอลเวลาเครือข่าย (NTP) | 556.9 | TA14-013A |
DNS | ระบบชื่อโดเมน (DNS) | 28 ถึง 54 | TA13-088A |
การโจมตีด้วยการขยายสัญญาณทั้งหมดจำเป็นต้องมีรายการเซิร์ฟเวอร์สะท้อนกลับ
การโจมตี L7 ได้รับการออกแบบมาเพื่อใช้จุดอ่อนในโปรโตคอลเลเยอร์แอปพลิเคชันหรือรายละเอียดการใช้งานเฉพาะของแอปพลิเคชัน (หรือเคอร์เนล OS) ในทางที่ผิด โดยทั่วไปมีประสิทธิภาพมากกว่า แต่อาจต้องอาศัยความรู้เกี่ยวกับวิธีการทำงานของระบบเป้าหมาย
กลยุทธ์ | ชั้น | ขนส่ง | ออกแบบ | หมายเหตุ |
---|---|---|---|---|
GET | L7 | TCP | ส่งคำขอ HTTP GET ที่สร้างขึ้นแบบสุ่มผ่านการเชื่อมต่อ TCP แบบเปิด | ไม่ต้องการรหัสตอบกลับ HTTP 200 OK (เนื่องจากไม่ใช้การตอบสนองเลย) แม้ว่าการโจมตีที่ทำกับโหลดบาลานเซอร์หรือ WAF อาจไม่ได้ผล (เทียบกับ L4 TCP ฟลัด) |
STRESS | L7 | TCP | ส่งลำดับคำขอ HTTP ด้วยเนื้อหาขนาดใหญ่ผ่านการเชื่อมต่อ TCP แบบเปิดเดียว | เพื่อเพิ่มประสิทธิภาพสูงสุด ตรวจสอบให้แน่ใจว่าโฮสต์เป้าหมายอนุญาตให้มีการวางท่อ (การส่งคำขอใหม่ภายในการเชื่อมต่อแบบถาวรโดยไม่ต้องอ่านการตอบกลับก่อน) ไม่ต้องการรหัสตอบกลับ HTTP 200 OK (เนื่องจากไม่ใช้การตอบสนองเลย) แม้ว่าการโจมตีที่ทำกับโหลดบาลานเซอร์หรือ WAF อาจไม่ได้ผล (เทียบกับ L4 TCP ฟลัด) |
BYPASS | L7 | TCP | ส่งคำขอรับ HTTP ผ่านการเชื่อมต่อ TCP แบบเปิด อ่านการตอบกลับ | การอ่านแบบกลุ่มจะดำเนินการโดยใช้ไบต์ recv จากการเชื่อมต่อ โดยไม่ต้องแยกวิเคราะห์การตอบสนอง HTTP |
SLOW | L7 | TCP | ในทำนองเดียวกันกับ STRESS จะส่งคำขอ HTTP และพยายามรักษาการเชื่อมต่อที่ใช้โดยการอ่านกลับไบต์เดียวและส่งเพย์โหลดเพิ่มเติมพร้อมการหน่วงเวลาระหว่างการดำเนินการส่ง | ตามหลักการแล้ว ควรตั้งค่าการหน่วงเวลาอย่างเหมาะสมเพื่อหลีกเลี่ยงไม่ให้เพียร์รีเซ็ตการเชื่อมต่อเนื่องจากการหมดเวลาการอ่าน (ขึ้นอยู่กับการตั้งค่าเพียร์) |
CFBUAM | L7 | TCP | ส่ง HTTP GET เดียว หลังจากการหน่วงเวลาที่ยาวนาน จะส่งคำขอเพิ่มเติมผ่านการเชื่อมต่อ TCP เดียวกัน | |
AVB | L7 | TCP | ออกแพ็กเก็ต HTTP GET ในการเชื่อมต่อแบบเปิดโดยมีความล่าช้ายาวนานระหว่างการดำเนินการส่ง เพื่อหลีกเลี่ยงไม่ให้เพียร์รีเซ็ตการเชื่อมต่อเนื่องจากการหมดเวลาการอ่าน การหน่วงเวลาสูงสุดจึงตั้งไว้ที่ 1 วินาที |
ด้วยการกำหนดค่าชุดพร็อกซีเซิร์ฟเวอร์ เราสามารถจำลองการโจมตีแบบกระจายได้แม้ว่าจะเรียกใช้ชุดเครื่องมือจากเครื่องเดียวก็ตาม เมื่อมีพรอกซี fiberfox
จะเชื่อมต่อกับพรอกซีก่อน และสร้างการเชื่อมต่อกับเป้าหมายจากเครื่องเหล่านั้น การทำเช่นนี้จะทำให้ระบบสามารถข้ามมาตรการป้องกันการบล็อก IP ที่ง่ายที่สุดได้ ชุดเครื่องมือรองรับโปรโตคอล HTTP/SOCKS4/SOCS5 และการตรวจสอบสิทธิ์ผู้ใช้/รหัสผ่าน นอกจากนี้ยังจัดการชุดพร็อกซีที่ให้ไว้แบบไดนามิกเพื่อหลีกเลี่ยงการใช้พรอกซีที่ไม่ตอบสนองหรือไม่ตรงตามข้อกำหนดในการโจมตี
มีข้อควรพิจารณาบางประการเมื่อใช้พรอกซีที่คุณต้องจำไว้:
ความสำเร็จของการโจมตีที่ดำเนินการในขณะนี้บางส่วนขึ้นอยู่กับความจุของพร็อกซีเซิร์ฟเวอร์ ตัวอย่างเช่น เมื่อใช้อัตราเครือข่ายพรอกซีสาธารณะอาจต่ำเนื่องจากพรอกซีหนาแน่นเกินไป ในกรณีนี้ ให้พิจารณาใช้โครงสร้างพื้นฐานส่วนตัวหรือคลัสเตอร์พร็อกซีเซิร์ฟเวอร์เฉพาะแบบชำระเงิน
พร็อกซีเซิร์ฟเวอร์เองอาจลดเวกเตอร์การโจมตีบางส่วนได้ ตัวอย่างเช่น เมื่อใช้วิธีการ "การเชื่อมต่อช้า" พร็อกซีเซิร์ฟเวอร์สามารถกำหนดค่าให้ควบคุมหรือปิดการเชื่อมต่อได้ ในลักษณะ "ปกป้อง" เป้าหมายด้วยการทำเช่นนั้น คำนึงถึงวิธีที่การตั้งค่าพร็อกซีแทรกแซงกลไกการโจมตี (เครือข่าย โปรโตคอล ฯลฯ)
เป้าหมายประการหนึ่งของชุดเครื่องมือนี้คือการให้ข้อมูลการตรวจสอบที่ครอบคลุมเพื่อเป็นแนวทางในการค้นหาช่องโหว่
เครื่องมือจะรายงานจำนวนสถิติต่อแต่ละเป้าหมาย: จำนวนแพ็กเก็ต การรับส่งข้อมูล และอัตรา สำหรับการโจมตีที่ใช้ TCP (ทั้ง L4 และ L7) ยังรายงานฮิสโตแกรมของแพ็คเก็ตที่ส่งภายในเซสชันเดียว (เซสชันในที่นี้หมายถึงการรับส่งข้อมูลที่ส่งภายในการเชื่อมต่อแบบเปิดเดียว) ตามหลักการแล้ว ฮิสโตแกรมควรเอียงไปทางด้านซ้าย หมายความว่าเพียร์ปิดการเชื่อมต่อก่อนที่จะส่งแพ็กเก็ต "คำขอต่อการเชื่อมต่อ" หากอยู่ทางด้านขวาเป็นหลัก เป้าหมายจะยอมรับสิ่งที่ควรถือเป็น "การจราจรขยะ"
ระมัดระวังในการวิเคราะห์ อัตราเครือข่ายต่ำ ความถี่ในการเชื่อมต่อสูง อัตราข้อผิดพลาดสูง และอื่นๆ สัญญาณทั้งหมดเหล่านี้อาจบ่งบอกถึงความจริงที่ว่าเป้าหมายยังคงแข็งแกร่งเมื่อเผชิญกับการโจมตี และมันตายไปแล้ว เพื่อให้เข้าใจถึงระดับการป้องกันอย่างถ่องแท้ คุณควรใช้ข้อมูลการติดตามในฝั่งเป้าหมาย (เช่น ความสามารถในการทำงานอย่างถูกต้องเมื่อถูกท้าทาย)
โปรดทราบว่าอัตราขาออกจะแสดงโดยประมาณ การวัดเวลาสำหรับการส่งทุกแพ็กเก็ตรวมถึงการกำหนดเวลาล่าช้า (สำหรับไฟเบอร์) และการเลือก/การรวมกลุ่ม ในกรณีส่วนใหญ่สิ่งเหล่านี้จะละเลย แม้ว่าจะต้องระมัดระวังในการวิเคราะห์เมื่อใช้ไฟเบอร์ 10k+
feature-*
Branch เพื่อเริ่มทำการเปลี่ยนแปลง เผยแพร่ภายใต้ใบอนุญาต MIT ดูใบอนุญาตสำหรับใบอนุญาตฉบับเต็ม
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████