การดักจับแพ็กเก็ตเป็นวิธีที่มีประโยชน์มากในการวิเคราะห์การทำงานภายในของเครือข่าย มีเครื่องมือต่าง ๆ มากมายที่พัฒนาขึ้นเพื่อการนี้ หนึ่งในนั้นคือ tcpdump เราจะแสดงให้คุณเห็นถึงวิธีการใช้ประโยชน์สูงสุดจากเครื่องมือที่ยอดเยี่ยมนี้สำหรับวิศวกรเครือข่ายและผู้ทดสอบการเจาะระบบ
tcpdump คืออะไร
tcpdump เป็นเครื่องมือวิเคราะห์แพ็กเก็ตเครือข่ายที่พัฒนาและเผยแพร่ในปี 1988 โดยทีมนักวิทยาศาสตร์คอมพิวเตอร์ที่ทำงานอยู่ที่ Lawrence Berkeley Laboratory และ Network Research Group ใช้เพื่อแสดงเนื้อหาของแพ็กเก็ตที่คอมพิวเตอร์ส่งและรับ ยูทิลิตีนี้มาพร้อมกับตัวเลือกต่างๆ มากมายเพื่อให้การดักจับแพ็กเก็ตมีความเฉพาะเจาะจงและเน้นย้ำมากขึ้น บางตัวเลือกเหล่านี้รวมถึงโปรโตคอลเครือข่ายและอินเทอร์เฟซเครือข่ายที่แตกต่างกัน
การติดตั้ง
ลีนุกซ์หลายรุ่นมาพร้อมกับยูทิลิตี้ที่ติดตั้งทันทีที่แกะออกจากกล่อง อย่างไรก็ตาม หาก distro ที่คุณเลือกไม่ได้ การติดตั้งก็สามารถทำได้ง่ายและรวดเร็ว
ตัวอย่างเช่น หากคุณใช้ Ubuntu หรือ Debian สามารถติดตั้งโดยใช้ apt
:
sudo apt install tcpdump
บน CentOS ทำเช่นเดียวกันโดยใช้ yum
:
sudo yum install tcpdump
และบน Arch Linux โดยใช้ pacman
:
sudo pacman -S tcpdump
พื้นฐาน
เมื่อติดตั้ง tcpdump แล้ว คุณสามารถดูคู่มือโดยใช้ -h
ธง:
tcpdump -h
นี่แสดงรายการแฟล็กที่คุณสามารถใช้ได้เมื่อใช้เครื่องมือ
หากคุณต้องการดูคู่มือที่ละเอียดและครอบคลุมยิ่งขึ้น คุณสามารถดู man page (หน้าคู่มือ) โดยใช้ man
คำสั่ง:
man tcpdump
คุณเรียกใช้การดักจับแพ็กเก็ตพื้นฐานได้โดยพิมพ์:
tcpdump
การใช้คำสั่งด้วยตัวเองและโดยไม่ได้ระบุอินเทอร์เฟซเครือข่าย เครื่องมือจะเลือกอินเทอร์เฟซที่มีอยู่บนระบบของคุณอย่างใดอย่างหนึ่ง
ถ้าคุณไม่ต้องการให้ tcpdump แก้ไขชื่อโฮสต์และต้องการให้แสดงเฉพาะที่อยู่ IP คุณสามารถใช้ -n
ธง:
tcpdump -n
หากคุณต้องการระบุจำนวนแพ็กเก็ตที่คุณต้องการจับภาพ ให้ใช้ -c
ธง:
tcpdump -c [number of packets]
การระบุอินเทอร์เฟซเครือข่าย
คุณสามารถระบุตัวเลือกอินเทอร์เฟซเครือข่ายของคุณได้โดยใช้ -i
ธง:
tcpdump -i [interface]
ชื่ออินเทอร์เฟซเครือข่ายทั่วไปสองชื่อบนระบบส่วนใหญ่คือ eth0 และ wlan0:
tcpdump -i eth0 tcpdump -i wlan0
หากคุณต้องการบันทึกข้อมูลในทุกอินเทอร์เฟซ คุณสามารถใช้ any
ตัวเลือก:
tcpdump -i any
การระบุช่วงพอร์ต/พอร์ต
หากคุณต้องการบันทึกข้อมูลที่ใช้หมายเลขพอร์ตเฉพาะ ให้ใช้คำสั่ง:
tcpdump -i [interface] port [port number]
สมมติว่าคุณต้องการจับทราฟฟิกบน eth0
อินเทอร์เฟซและสำหรับพอร์ต 443 (HTTPS) พิมพ์ดังต่อไปนี้:
tcpdump -i eth0 port 443
นอกจากนี้ tcpdump ยังให้คุณระบุช่วงของพอร์ต:
tcpdump -i [interface] portrange [port range]
การระบุโฮสต์หรือซับเน็ต
จะมีบางครั้งที่คุณต้องการจำกัดแพ็กเก็ตที่ดักจับไว้เฉพาะแพ็กเก็ตที่ส่ง/รับจากโฮสต์หรือซับเน็ตเฉพาะ โชคดีที่ tcpdump ให้คุณทำเช่นนั้นได้
คุณสามารถระบุโฮสต์โดยใช้รูปแบบต่อไปนี้:
tcpdump -i [interface] host [host]
ตัวอย่างเช่น บันทึกการรับส่งข้อมูลบนอินเทอร์เฟซ eth0 และระบุโฮสต์เป็น 127.0.0.1 (ที่อยู่ IP ลูปแบ็คของคุณเอง):
tcpdump -i eth0 host 127.0.0.1
หากคุณต้องการระบุซับเน็ตเครือข่ายโดยใช้รูปแบบ CIDR คุณสามารถใช้รูปแบบต่อไปนี้:
tcpdump -i [interface] net [subnet]
ตัวอย่างเช่น:
tcpdump -i eth0 net 10.0.0.0/8
คุณยังสามารถระบุโฮสต์ต้นทางได้โดยตรง:
tcpdump -i [interface] src [host]
และโฮสต์ปลายทาง:
tcpdump -i [interface] dst [host]
การระบุคำฟุ่มเฟือย
tcpdump ให้คุณระบุความละเอียดของการดักจับแพ็กเก็ต สิ่งนี้มีประโยชน์มากเมื่อคุณไม่ต้องการถูกครอบงำโดยปริมาณข้อมูลในระหว่างการจับภาพ
มีสามตัวเลือกที่เพิ่มขึ้นสำหรับการใช้คำฟุ่มเฟือย แฟล็ก -v
, -vv
และ -vvv
:
tcpdump -i [interface] -v tcpdump -i [interface] -vv tcpdump -i [interface] -vvv
ตัวเลือกแรกระบุคำฟุ่มเฟือยน้อยที่สุด ในขณะที่ตัวเลือกที่สามระบุมากที่สุด
การบันทึกการจับภาพเป็นไฟล์
มักจะเป็นประโยชน์ในการบันทึกข้อมูลที่บันทึกลงในไฟล์ เพื่อให้สามารถวิเคราะห์และตีความต่อไปได้
ทำได้โดยใช้ -w
ธง:
tcpdump -i [interface] -w [filename]
ตัวอย่างเช่น คุณสามารถบันทึกข้อมูลที่จับไปยังไฟล์ชื่อ “capture.txt”:
tcpdump -i eth0 -w capture.txt
คำถามที่พบบ่อย
1. ฉันได้รับข้อผิดพลาด "ไม่อนุญาตให้ดำเนินการ" ฉันจะแก้ไขได้อย่างไร
ต่อไปนี้คือข้อผิดพลาดทั่วไปที่ผู้ใช้อาจได้รับเมื่อพยายามใช้ tcpdump:
tcpdump แสดงข้อผิดพลาดนี้เมื่อคุณไม่มีสิทธิ์ที่จำเป็นในการดักจับแพ็กเก็ต ในสถานการณ์ส่วนใหญ่ คุณสามารถแก้ไขปัญหานี้ได้โดยใช้ sudo
. ตัวอย่างเช่น:
sudo tcpdump -i eth0
2. ฉันจะทราบได้อย่างไรว่ามีอินเทอร์เฟซเครือข่ายใดบ้าง
tcpdump มีฟังก์ชันในตัวที่ช่วยให้คุณสามารถตรวจสอบอินเทอร์เฟซเครือข่ายที่มีอยู่ในระบบของคุณได้
ในการตรวจสอบอินเทอร์เฟซ ใช้ -D
ธง:
tcpdump -D