Hping3: สร้างแพ็กเก็ต TCP / IP และทำการโจมตี DoS บน Linux

เมื่อเราต้องการตรวจสอบการเชื่อมต่อเราทุกคนใช้คำสั่ง Ping ซึ่งเป็นเครื่องมือที่ส่งแพ็กเก็ต ICMP ไปยังเซิร์ฟเวอร์เฉพาะเพื่อให้ทราบว่าการสื่อสารถูกต้องหรือมีปัญหาหรือไม่ อย่างไรก็ตามเครื่องมือนี้ง่ายมากและไม่อนุญาตให้ปรับเปลี่ยนแพ็กเก็ตใด ๆ ในทางปฏิบัติและไม่ใช้โปรโตคอลอื่นในการส่งข้อมูล Hping3 เป็นแอปพลิเคชันขั้นสูงซึ่งจะช่วยให้เราสามารถปรับเปลี่ยนแพ็กเก็ตที่ส่งผ่านโปรโตคอล TCP / IP เพื่อให้เราสามารถควบคุมแพ็กเก็ตเหล่านี้ได้มากขึ้นและสามารถปรับเปลี่ยนได้ตามความต้องการของเรา

คุณสมบัติหลัก

Hping3 เป็นแอปพลิเคชั่นเทอร์มินัลสำหรับ ลินุกซ์ ที่จะช่วยให้เราวิเคราะห์และประกอบแพ็กเก็ต TCP / IP ได้อย่างง่ายดาย ต่างจาก ping ทั่วไปที่ใช้ในการส่งแพ็กเก็ต ICMP แอปพลิเคชันนี้อนุญาตให้ส่งแพ็กเก็ต TCP, UDP และ RAW-IP นอกจากการวิเคราะห์แพ็กเก็ตแล้วแอปพลิเคชั่นนี้ยังสามารถใช้เพื่อวัตถุประสงค์ด้านความปลอดภัยอื่น ๆ เช่นเพื่อทดสอบประสิทธิภาพของ a ไฟร์วอลล์ ผ่านโปรโตคอลที่แตกต่างกันการตรวจจับแพ็กเก็ตที่น่าสงสัยหรือดัดแปลงและแม้แต่การป้องกันการโจมตี DoS ของระบบหรือไฟร์วอลล์

ผิง3

ในอดีตเครื่องมือนี้ใช้สำหรับปัญหาด้านความปลอดภัยทางไซเบอร์ แต่เราสามารถใช้เพื่อทดสอบเครือข่ายและโฮสต์ได้ด้วย แอปพลิเคชันหลักบางตัวที่เราสามารถทำได้ด้วยเครื่องมือนี้มีดังต่อไปนี้:

  • ตรวจสอบความปลอดภัยและการทำงานของไฟร์วอลล์
  • ใช้เป็นการสแกนพอร์ตขั้นสูงแม้ว่าจะดีกว่าถ้าใช้ Nmap สำหรับงานนี้
  • การทดสอบเครือข่ายโดยใช้โปรโตคอลที่แตกต่างกัน ToS การแยกส่วน ฯลฯ
  • ค้นหา MTU บนเส้นทางด้วยตนเอง
  • traceroute ขั้นสูงโดยใช้โปรโตคอลที่รองรับทั้งหมด
  • ลายนิ้วมือระยะไกลจากระบบปฏิบัติการ
  • ตรวจสอบเวลาออกไป
  • การตรวจสอบสแต็ก TCP / IP

เนื่องจากเครื่องมือนี้มีความเป็นไปได้จำนวนมากในบทความนี้เราจะแสดงการใช้งานหลักและวิธีการใช้งาน

ติดตั้ง Hping3

Hping3 มีอยู่ในที่เก็บอย่างเป็นทางการของ อูบุนตู, Debian และ Linux อื่น ๆ ดังนั้นในการติดตั้งเราต้องเปิดเทอร์มินัล (หรือตัวจัดการแพ็คเกจเช่น Synaptic) และพิมพ์:

sudo apt install hping3

เครื่องมือจะใช้เนื้อที่ประมาณ 3,600 KB ซึ่งเมื่อติดตั้งแล้วเราสามารถเริ่มใช้งานได้

รายการคำสั่ง Hping3

ฟังก์ชันที่โปรแกรมนี้รองรับมีมากมาย ตั้งแต่การดำเนินการ ping อย่างง่ายไปจนถึงการส่งแพ็กเก็ตผ่านพอร์ตเฉพาะแม้กระทั่งการซ่อน IP ต้นทาง หากเราต้องการทราบข้อมูลเชิงลึกเกี่ยวกับพารามิเตอร์ทั้งหมดที่โปรแกรมนี้เสนอให้เราสามารถปรึกษาความช่วยเหลือที่รวมอยู่ในเครื่องมือได้ง่ายๆโดยพิมพ์ในเทอร์มินัล:

hping3 --help

การใช้เครื่องมือพื้นฐาน:

  • v --version แสดงเวอร์ชันปัจจุบันของ hping3
  • -c –count ตัวนับแพ็คเก็ต
  • -i – ช่วงหมดเวลา (uX สำหรับ X ไมโครวินาทีเช่น -i u1000)
    • - นามแฝงด่วนสำหรับ -i u10000 (10 แพ็คเก็ตต่อวินาที)
    • - นามแฝงที่เร็วกว่าสำหรับ -i u1000 (100 แพ็คเก็ตต่อวินาที)
    • –Flood ส่งแพ็กเก็ตให้เร็วที่สุดไม่แสดงการตอบสนอง
  • -n - เอาต์พุตตัวเลขพร้อมตัวเลข
  • -q - เงียบคำสั่งโดยไม่ต้องแสดงบนหน้าจอ
  • -I - ชื่ออินเทอร์เฟซของอินเทอร์เฟซหากไม่มีการตั้งค่าโดยค่าเริ่มต้นจะเป็นอินเทอร์เฟซของประตูด้านบนเริ่มต้น
  • -V –verbose โหมด verbose สำหรับการดีบัก
  • -D –debug ข้อมูลการดีบัก
  • -z –bind ผูก ctrl + za ttl (ค่าเริ่มต้นเป็นพอร์ตปลายทาง)
  • -Z –unbind ยกเลิกการลิงก์ ctrl + z
  • - บี๊บบี๊บสำหรับแต่ละแพ็คเก็ตที่ได้รับที่ตรงกัน

โหมด:

  • โหมดเริ่มต้นคือ TCP
  • -0 –rawip โหมด RAW IP
  • -1 –icmp โหมด ICMP
  • -2 –udp โหมด UDP
  • -8 - โหมดสแกนโหมดสแกน
  • -9 - โหมดฟังพร้อม

ตัวอย่าง: hping –scan 1-30,70-90 -S www.target.com

IP:

  • -a - ปลอมแปลงที่อยู่ IP ต้นทาง
    • - ที่อยู่ IP ปลายทางแบบสุ่มปลายทาง
    • ที่อยู่ IP ต้นทางสุ่มแหล่งที่มา
  • -t –ttl ttl (ค่าเริ่มต้น 64)
  • -N –id id (ค่าเริ่มต้นแบบสุ่ม)
  • -W -winid ใช้คำสั่ง win * id byte
  • -r –rel relativizes ฟิลด์ id (เพื่อประเมินปริมาณการใช้งานโฮสต์)
  • -f –frag Fragments แพ็กเก็ตลงในแฟรกเมนต์มากกว่าหนึ่งแฟรกเมนต์สามารถข้ามผ่าน ACL ที่อ่อนแอได้
  • -x –morefrag ชิ้นส่วนมากขึ้น
  • -y –dontfrag ไม่แยกส่วนแพ็กเก็ต
  • -g –fragoff ตั้งค่าชดเชยส่วนย่อย
  • -m –mtu ตั้งค่า MTU เสมือนหมายความว่าแฟรกเมนต์ของแพ็กเก็ตมีค่ามากกว่า MTU
  • -o –tos ประเภทของบริการ (ค่าเริ่มต้น 0x00) ให้ลองทำ –tos help
  • -G –route มีตัวเลือก RECORD_ROUTE และแสดงบัฟเฟอร์พา ธ
    • –Lsrr การกำหนดเส้นทางต้นทางและบันทึกเส้นทางแบบหลวม
    • –Ssrr การกำหนดเส้นทางต้นทางและบันทึกเส้นทางที่เข้มงวด
  • -H –ipproto ตั้งค่าโปรโตคอล IP สำหรับโหมด RAW IP เท่านั้น

ไอซีเอ็มพี:

  • -C –icmptype ประเภท ICMP (ค่าเริ่มต้นคือคำขอ ICMP Echo)
  • -K –icmpcode รหัส ICMP (ค่าเริ่มต้นคือ 0)
    • --Force-icmp ส่งประเภท ICMP ทั้งหมด (โดยค่าเริ่มต้นจะส่งเฉพาะประเภทที่รองรับ)
    • –Icmp-gw ตั้งค่าที่อยู่เกตเวย์เริ่มต้นสำหรับการเปลี่ยนเส้นทาง ICMP (ค่าเริ่มต้น 0.0.0.0)
    • –Icmp-ts นามแฝงสำหรับ –icmp –icmptype 13 (การประทับเวลา ICMP)
    • –Icmp-addr นามแฝงสำหรับ –icmp –icmptype 17 (ที่อยู่ซับเน็ตมาสก์ ICMP)
    • –Icmp-help แสดงวิธีใช้สำหรับตัวเลือก icmp อื่น ๆ

รหัส ICMP

การรู้รหัส ICMP บางรหัสที่ hping3 สามารถแสดงให้เราเห็นนั้นมีประโยชน์มากด้านล่างนี้คุณมีรหัสที่ใช้บ่อยที่สุด:

ทีซีพี/ยูดีพี

  • -s –baseport พอร์ตซอร์สฐานค่าเริ่มต้นเป็นแบบสุ่ม
  • -p –destport [+] [+] ตำแหน่งปลายทาง (ค่าเริ่มต้น 0) ctrl + z inc / dec
  • -k- รักษาพอร์ตต้นทาง
  • -w –win ขนาดหน้าต่างค่าเริ่มต้น 64
  • -O –tcpoff ตั้งค่า tcp data offset false (แทน tcphdrlen / 4)
  • -Q –seqnum แสดงเฉพาะหมายเลขลำดับ
  • -b –badcksum (พยายาม) ส่งแพ็กเก็ตที่มีการตรวจสอบ IP ปลอมระบบจำนวนมากจะแก้ไขการตรวจสอบนี้เมื่อส่งแพ็กเก็ตดังนั้นคุณจะมีการตรวจสอบที่ไม่ถูกต้องที่ระดับ UDP / TCP
  • -M –setseq ตั้งค่าหมายเลขลำดับ TCP
  • -L –setack ตั้งค่า TCP ack
  • -F –fin ตั้งค่าสถานะ FIN
  • -S –syn ตั้งค่าสถานะ SYN
  • -R –rst ตั้งค่าสถานะ RST
  • -P –push ตั้งค่าสถานะ PUSH
  • -A –ack ตั้งค่าสถานะ ACK
  • -U –urg ตั้งค่าสถานะ URG
  • -X –xmas ตั้งค่าสถานะ X ที่ไม่ได้ใช้ (0x40)
  • -Y –ymas ตั้งค่าสถานะ Y ที่ไม่ได้ใช้ (0x80)
    • –Tcpexitcode ใช้ tcp-> th_flags สุดท้ายเป็นรหัสออก
    • –Tcp-mss เปิดใช้งานตัวเลือก TCP MSS ด้วยค่าที่กำหนด
    • –Tcp-timestamp เปิดใช้งานตัวเลือกการประทับเวลา TCP เพื่อคาดเดาเวลาทำงาน

ตัวเลือกทั่วไปสำหรับทุกคน

  • d - ขนาดข้อมูลข้อมูลค่าเริ่มต้นคือ 0
  • -E - ไฟล์ข้อมูลจากไฟล์
  • -e -sign เพิ่มลายเซ็น
  • -j –dump แพ็คเก็ตการถ่ายโอนข้อมูลเป็นเลขฐานสิบหก
  • -J –print ทิ้งอักขระที่พิมพ์ได้
  • -B -safe เปิดใช้งานโปรโตคอล "ปลอดภัย"
  • -u –end จะบอกคุณเมื่อไฟล์ถึงจุดสิ้นสุด
  • -T –traceroute โหมด traceroute (หมายถึง –bind และ –ttl 1)
    • –Tr-stop ออกเมื่อได้รับแพ็กเก็ตแรกที่ไม่ใช่ ICMP ในโหมด traceroute
    • –Tr-keep-ttl ทำให้แหล่งที่มาคงที่ TTL มีประโยชน์สำหรับการตรวจสอบเพียงครั้งเดียว
    • –Tr-no-rtt ไม่คำนวณและไม่แสดงข้อมูล RTT ในโหมด traceroute
  • คำอธิบายแพ็คเกจ ARS (ใหม่และไม่เสถียร)
    • –Apd-send ส่งแพ็กเก็ตที่อธิบายด้วย APD

ตัวอย่างการใช้ Hping3

ทดสอบ ping ง่ายๆ

เราสามารถใช้เครื่องมือนี้เหมือนกับคำสั่ง ping ทั่วไปเพื่อให้ได้ผลลัพธ์ที่เหมือนกัน ในการทำสิ่งนี้เราต้องพิมพ์:

hping3 www.google.es

Hping3_tutorial_Linux_foto_1

และเราจะมาดูกันว่าการทดสอบการเชื่อมต่อแบบง่ายๆนี้ดำเนินการอย่างไร (เราสามารถเปลี่ยนโดเมน Google เป็นโดเมนอื่นหรือใช้ IP โดยตรงเพื่อส่ง Ping ได้)

พล็อตเส้นทางการเชื่อมต่อ

ในทำนองเดียวกันกับตัวเลือก "tracert" ใน Windows หรือ "traceroute" ใน Linux ด้วยเครื่องมือนี้เรายังสามารถติดตามการข้ามทั้งหมดระหว่างเครือข่ายของแพ็กเก็ตได้ตั้งแต่เมื่อออกจากคอมพิวเตอร์ของเราไปจนถึงปลายทางโดยสามารถทราบได้ตลอดเวลาว่ามีปัญหาบางอย่างใน การเชื่อมต่อ

ในการทำสิ่งนี้เราต้องพิมพ์:

hping3 redeszone.net -t 1 --traceroute

การสแกนพอร์ตโดยใช้แฟล็ก TCP SYN

เครื่องมือนี้ยังช่วยให้เราสามารถส่งแพ็กเก็ตภายใต้โปรโตคอล TCP ได้อย่างแท้จริง nmap สไตล์. ในการสแกนโดยใช้วิธีนี้เราจะพิมพ์ในเทอร์มินัล“ hping3 –S [Destination IP] –p [Port]” ซึ่งผลลัพธ์จะคล้ายกับข้อความต่อไปนี้:

hping3 -S www.google.es –p 80

ผลลัพธ์ของการทดสอบนี้จะส่งกลับไฟล์ SA ธงซึ่งหมายความว่าสอดคล้องกับ ซิงค์ / ACK นั่นคือการสื่อสารได้รับการยอมรับหรือสิ่งที่เหมือนกันนั่นคือ พอร์ตเปิดอยู่ . มิฉะนั้นถ้าค่าเป็น RA มัน สอดคล้องกับ ร.ส.ท./อค หรืออะไรที่เหมือนกันที่การสื่อสารไม่ได้ดำเนินไปอย่างถูกต้องเนื่องจาก พอร์ตถูกปิด หรือกรอง

Hping3_tutorial_Linux_foto_2

ด้วยวิธีนี้เราจะสามารถทราบได้ตัวอย่างเช่นหากการสื่อสารได้รับอนุญาตไปยังพอร์ตหนึ่งหรือหากเป็นอย่างอื่นไฟร์วอลล์กำลังกรอง

เซ็นชื่อแพ็คเกจด้วยไฟล์ข้อความที่กำหนดเอง

เป็นไปได้ที่จะใช้เครื่องมือนี้เพื่อแก้ไขแพ็กเกจที่เราส่งและแทรกข้อความส่วนบุคคลที่คล้ายกับลายเซ็น ในการทำสิ่งนี้เราต้องพิมพ์:

hping3 redeszone.net -d 50 -E firmaredeszone.txt

คำสั่งนี้จะนำเข้าสู่แพ็กเกจ Ping เนื้อหาของไฟล์ txt ที่ระบุ หากเราวิเคราะห์แพ็คเกจเหล่านี้ด้วยซอฟต์แวร์ที่เหมาะสมเช่น WireShark เราจะเห็นว่าภายในนั้นมีเนื้อหาของไฟล์ที่เป็นปัญหา

Hping3_tutorial_Linux_foto_3

พารามิเตอร์ที่ป้อนหมายถึง:

  • -d: ความยาวของข้อความที่เราจะป้อนในกรณีนี้คือ 50
  • -E: ไฟล์ที่เราจะใช้ลายเซ็นข้อความที่เราต้องการแนะนำในแพ็คเกจ

เรายังสามารถใช้พารามิเตอร์อื่น ๆ ตัวอย่างเช่น -p เพื่อระบุพอร์ตที่เราต้องการส่งแพ็กเก็ตเหล่านี้หรือ -2 เพื่อส่งแพ็กเก็ตผ่านโปรโตคอล UDP

สร้างคำขอหลายรายการเพื่อทดสอบการป้องกัน DoS และ DDoS

เครื่องมือนี้ยังช่วยให้เราตรวจสอบความเสถียรของระบบของเราจากการโจมตีเครือข่ายเช่น DoS และ DDoS สร้างการทดสอบจริงไม่ว่าจะไปยัง localhost หรือไปยังเซิร์ฟเวอร์อื่นภายใน (หรือภายนอก) เครือข่าย

เราสามารถสร้างชุดของปิงที่ไม่ซ้ำกันได้โดยการแก้ไข IP ต้นทางที่เหมือนกันในแพ็กเก็ต TCP / IP เพียงแค่พิมพ์:

hping3 --rand-source 192.168.1.1

ในทำนองเดียวกันเราสามารถเพิ่มพารามิเตอร์ –flood เพื่อให้แพ็กเก็ตถูกส่งแบบเรียลไทม์จำนวนมาก ด้วยวิธีนี้เราจะสามารถตรวจสอบได้ประการแรกว่าไฟร์วอลล์ของเราทำงานหรือไม่และประการที่สองระบบของเราตอบสนองต่อภัยคุกคามจากการโจมตี DDoS ได้ดีเพียงใด

สำหรับสิ่งนี้เราจะพิมพ์:

hping3 --rand-source --flood 192.168.1.1

Hping3_tutorial_Linux_foto_4

ในเวลาเพียงไม่กี่วินาทีเราได้สร้างมากกว่า 25,000 แพ็คเก็ตดังนั้นเราต้องระมัดระวังเนื่องจากเครือข่ายของเราอาจถูกบล็อกและไม่สามารถใช้งานได้

ด้วยเหตุนี้แพ็กเก็ตจำนวนมากที่มี "ต้นทางที่ผิดพลาด" จะเริ่มถูกสร้างขึ้น (ด้วยพารามิเตอร์ที่มาของแรนด์) ซึ่งจะถูกส่งไปยังเซิร์ฟเวอร์ปลายทางอย่างต่อเนื่อง (ในกรณีนี้คือ 192.168.1.1) ด้วยวิธีนี้เราสามารถตรวจสอบความแข็งแกร่งของระบบของเราจากการโจมตี DDoS ได้เนื่องจากหากระบบหยุดทำงานหรือขัดข้องอาจเกิดความล้มเหลวในการกำหนดค่าและเราต้องใช้มาตรการที่เกี่ยวข้องเพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้นในสภาพแวดล้อมจริง

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

เราขอแนะนำให้คุณ เข้าสู่ hping MAN PAGE อย่างเป็นทางการ เพื่อค้นหาตัวเลือกทั้งหมดของคุณ