เมื่อเราต้องการตรวจสอบการเชื่อมต่อเราทุกคนใช้คำสั่ง Ping ซึ่งเป็นเครื่องมือที่ส่งแพ็กเก็ต ICMP ไปยังเซิร์ฟเวอร์เฉพาะเพื่อให้ทราบว่าการสื่อสารถูกต้องหรือมีปัญหาหรือไม่ อย่างไรก็ตามเครื่องมือนี้ง่ายมากและไม่อนุญาตให้ปรับเปลี่ยนแพ็กเก็ตใด ๆ ในทางปฏิบัติและไม่ใช้โปรโตคอลอื่นในการส่งข้อมูล Hping3 เป็นแอปพลิเคชันขั้นสูงซึ่งจะช่วยให้เราสามารถปรับเปลี่ยนแพ็กเก็ตที่ส่งผ่านโปรโตคอล TCP / IP เพื่อให้เราสามารถควบคุมแพ็กเก็ตเหล่านี้ได้มากขึ้นและสามารถปรับเปลี่ยนได้ตามความต้องการของเรา
คุณสมบัติหลัก
Hping3 เป็นแอปพลิเคชั่นเทอร์มินัลสำหรับ ลินุกซ์ ที่จะช่วยให้เราวิเคราะห์และประกอบแพ็กเก็ต TCP / IP ได้อย่างง่ายดาย ต่างจาก ping ทั่วไปที่ใช้ในการส่งแพ็กเก็ต ICMP แอปพลิเคชันนี้อนุญาตให้ส่งแพ็กเก็ต TCP, UDP และ RAW-IP นอกจากการวิเคราะห์แพ็กเก็ตแล้วแอปพลิเคชั่นนี้ยังสามารถใช้เพื่อวัตถุประสงค์ด้านความปลอดภัยอื่น ๆ เช่นเพื่อทดสอบประสิทธิภาพของ a ไฟร์วอลล์ ผ่านโปรโตคอลที่แตกต่างกันการตรวจจับแพ็กเก็ตที่น่าสงสัยหรือดัดแปลงและแม้แต่การป้องกันการโจมตี DoS ของระบบหรือไฟร์วอลล์
ในอดีตเครื่องมือนี้ใช้สำหรับปัญหาด้านความปลอดภัยทางไซเบอร์ แต่เราสามารถใช้เพื่อทดสอบเครือข่ายและโฮสต์ได้ด้วย แอปพลิเคชันหลักบางตัวที่เราสามารถทำได้ด้วยเครื่องมือนี้มีดังต่อไปนี้:
- ตรวจสอบความปลอดภัยและการทำงานของไฟร์วอลล์
- ใช้เป็นการสแกนพอร์ตขั้นสูงแม้ว่าจะดีกว่าถ้าใช้ 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
และเราจะมาดูกันว่าการทดสอบการเชื่อมต่อแบบง่ายๆนี้ดำเนินการอย่างไร (เราสามารถเปลี่ยนโดเมน 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 redeszone.net -d 50 -E firmaredeszone.txt
คำสั่งนี้จะนำเข้าสู่แพ็กเกจ Ping เนื้อหาของไฟล์ txt ที่ระบุ หากเราวิเคราะห์แพ็คเกจเหล่านี้ด้วยซอฟต์แวร์ที่เหมาะสมเช่น WireShark เราจะเห็นว่าภายในนั้นมีเนื้อหาของไฟล์ที่เป็นปัญหา
พารามิเตอร์ที่ป้อนหมายถึง:
- -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
ในเวลาเพียงไม่กี่วินาทีเราได้สร้างมากกว่า 25,000 แพ็คเก็ตดังนั้นเราต้องระมัดระวังเนื่องจากเครือข่ายของเราอาจถูกบล็อกและไม่สามารถใช้งานได้
ด้วยเหตุนี้แพ็กเก็ตจำนวนมากที่มี "ต้นทางที่ผิดพลาด" จะเริ่มถูกสร้างขึ้น (ด้วยพารามิเตอร์ที่มาของแรนด์) ซึ่งจะถูกส่งไปยังเซิร์ฟเวอร์ปลายทางอย่างต่อเนื่อง (ในกรณีนี้คือ 192.168.1.1) ด้วยวิธีนี้เราสามารถตรวจสอบความแข็งแกร่งของระบบของเราจากการโจมตี DDoS ได้เนื่องจากหากระบบหยุดทำงานหรือขัดข้องอาจเกิดความล้มเหลวในการกำหนดค่าและเราต้องใช้มาตรการที่เกี่ยวข้องเพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้นในสภาพแวดล้อมจริง
เครื่องมือนี้มีประโยชน์มากแม้ว่าควรจะใช้ในสภาพแวดล้อมที่ปิดและมีการควบคุมเสมอเนื่องจากออกไปข้างนอก แต่ก็เป็นไปได้ว่าเราจะดำเนินการโจมตีปฏิเสธการให้บริการต่อทีมที่เราไม่ควรซึ่งถือเป็นการกระทำที่ผิดกฎหมายและอาจถูกลงโทษ สำหรับมัน.
เราขอแนะนำให้คุณ เข้าสู่ hping MAN PAGE อย่างเป็นทางการ เพื่อค้นหาตัวเลือกทั้งหมดของคุณ