Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

Master TCPDump:15 ตัวอย่างคำสั่งที่จำเป็นสำหรับการวิเคราะห์แพ็คเก็ต

Master TCPDump:15 ตัวอย่างคำสั่งที่จำเป็นสำหรับการวิเคราะห์แพ็คเก็ต

คำสั่ง tcpdump เรียกอีกอย่างว่าตัววิเคราะห์แพ็กเก็ต

คำสั่ง tcpdump จะทำงานบนระบบปฏิบัติการยูนิกซ์เกือบทุกรสชาติ tcpdump ช่วยให้เราสามารถบันทึกแพ็กเก็ตที่ถูกจับ เพื่อที่เราจะได้ใช้สำหรับการวิเคราะห์ในอนาคต ไฟล์ที่บันทึกไว้สามารถดูได้ด้วยคำสั่ง tcpdump เดียวกัน นอกจากนี้เรายังสามารถใช้ซอฟต์แวร์โอเพ่นซอร์สเช่น wireshark เพื่ออ่านไฟล์ tcpdump pcap ได้

ในบทช่วยสอน tcpdump นี้ เราจะมาพูดถึงตัวอย่างที่เป็นประโยชน์เกี่ยวกับวิธีใช้คำสั่ง tcpdump

1. จับแพ็กเก็ตจากอินเทอร์เฟซอีเทอร์เน็ตเฉพาะโดยใช้ tcpdump -i

เมื่อคุณรันคำสั่ง tcpdump โดยไม่มีตัวเลือกใด ๆ มันจะจับแพ็กเก็ตทั้งหมดที่ไหลผ่านอินเทอร์เฟซทั้งหมด ตัวเลือก -i พร้อมคำสั่ง tcpdump ช่วยให้คุณสามารถกรองอินเทอร์เฟซอีเธอร์เน็ตเฉพาะได้

$ tcpdump -i eth1
14:59:26.608728 IP xx.domain.netbcp.net.52497 > valh4.lell.net.ssh: . ack 540 win 16554
14:59:26.610602 IP resolver.lell.net.domain > valh4.lell.net.24151: 4278 1/0/0 (73)
14:59:26.611262 IP valh4.lell.net.38527 > resolver.lell.net.domain: 26364+ PTR? 244.207.104.10.in-addr.arpa. (45)

ในตัวอย่างนี้ tcpdump จับโฟลว์แพ็กเก็ตทั้งหมดในอินเทอร์เฟซ eth1 และแสดงในเอาต์พุตมาตรฐาน

หมายเหตุ :ยูทิลิตี้ Editcap ใช้เพื่อเลือกหรือลบแพ็กเก็ตเฉพาะออกจากไฟล์ดัมพ์และแปลเป็นรูปแบบที่กำหนด

2. จับแพ็กเก็ตจำนวน N เท่านั้นโดยใช้ tcpdump -c

เมื่อคุณรันคำสั่ง tcpdump มันจะให้แพ็กเก็ตจนกว่าคุณจะยกเลิกคำสั่ง tcpdump การใช้ตัวเลือก -c คุณสามารถระบุจำนวนแพ็กเก็ตที่จะจับได้

$ tcpdump -c 2 -i eth0
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:38:38.184913 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457255642:1457255758(116) ack 1561463966 win 63652
14:38:38.690919 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
2 packets captured
13 packets received by filter
0 packets dropped by kernel

คำสั่ง tcpdump ข้างต้นบันทึกเพียง 2 แพ็กเก็ตจากอินเทอร์เฟซ eth0

หมายเหตุ: Mergecap และ TShark:Mergecap เป็นเครื่องมือรวมแพ็กเก็ตดัมพ์ ซึ่งจะรวมดัมพ์หลายรายการไว้ในไฟล์ดัมพ์เดียว Tshark เป็นเครื่องมืออันทรงพลังในการดักจับแพ็กเก็ตเครือข่าย ซึ่งสามารถใช้เพื่อวิเคราะห์การรับส่งข้อมูลเครือข่าย มาพร้อมกับการกระจายตัววิเคราะห์เครือข่าย wireshark

3. แสดงแพ็กเก็ตที่จับภาพใน ASCII โดยใช้ tcpdump -A

ไวยากรณ์ tcpdump ต่อไปนี้จะพิมพ์แพ็กเก็ตในรูปแบบ ASCII

$ tcpdump -A -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:34:50.913995 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457239478:1457239594(116) ack 1561461262 win 63652
E.....@.@..]..i...9...*.V...]...P....h....E...>{..U=...g.
......G..7\+KA....A...L.
14:34:51.423640 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
E.....@.@..\..i...9...*.V..*]...P....h....7......X..!....Im.S.g.u:*..O&....^#Ba...
E..(R.@.|.....9...i.*...]...V..*P..OWp........

หมายเหตุ: คำสั่ง Ifconfig ใช้เพื่อกำหนดค่าอินเทอร์เฟซเครือข่าย

4. แสดงแพ็กเก็ตที่จับใน HEX และ ASCII โดยใช้ tcpdump -XX

ผู้ใช้บางรายอาจต้องการวิเคราะห์แพ็กเก็ตในค่าเลขฐานสิบหก tcpdump จัดเตรียมวิธีการพิมพ์แพ็กเก็ตทั้งในรูปแบบ ASCII และ HEX

$tcpdump -XX -i eth0
18:52:54.859697 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 232 win 16511
 0x0000: 0050 569c 35a3 0019 bb1c 0c00 0800 4500 .PV.5.........E.
 0x0010: 0028 042a 4000 7906 c89c 10b5 aaf6 0f9a .(.*@.y.........
 0x0020: 69c4 f999 0016 57db 6e08 c712 ea2e 5010 i.....W.n.....P.
 0x0030: 407f c976 0000 0000 0000 0000 @..v........
18:52:54.877713 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]
 0x0000: 0050 569c 35a3 0000 0000 0000 0800 4600 .PV.5.........F.
 0x0010: 0024 0000 0000 0102 3ad3 0a00 0000 e000 .$......:.......
 0x0020: 0001 9404 0000 1101 ebfe 0000 0000 0300 ................
 0x0030: 0000 0000 0000 0000 0000 0000 ............

5. จับแพ็กเก็ตและเขียนลงในไฟล์โดยใช้ tcpdump -w

tcpdump ช่วยให้คุณสามารถบันทึกแพ็กเก็ตลงในไฟล์ และต่อมาคุณสามารถใช้ไฟล์แพ็กเก็ตเพื่อการวิเคราะห์เพิ่มเติมได้

$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
32 packets captured
32 packets received by filter
0 packets dropped by kernel

-w ตัวเลือกเขียนแพ็กเก็ตลงในไฟล์ที่กำหนด นามสกุลไฟล์ควรเป็น .pcap ซึ่งสามารถอ่านได้โดยโปรโตคอลเครือข่ายใดก็ได้
เครื่องวิเคราะห์

6. การอ่านแพ็กเก็ตจากไฟล์ที่บันทึกไว้โดยใช้ tcpdump -r

คุณสามารถอ่านไฟล์ pcap ที่บันทึกไว้และดูแพ็กเก็ตเพื่อการวิเคราะห์ ดังที่แสดงด้านล่าง

$tcpdump -tttt -r data.pcap
2010-08-22 21:35:26.571793 00:50:56:9c:69:38 (oui Unknown) > Broadcast, ethertype Unknown (0xcafe), length 74:
 0x0000: 0200 000a ffff 0000 ffff 0c00 3c00 0000 ............<...
 0x0010: 0000 0000 0100 0080 3e9e 2900 0000 0000 ........>.).....
 0x0020: 0000 0000 ffff ffff ad00 996b 0600 0050 ...........k...P
 0x0030: 569c 6938 0000 0000 8e07 0000 V.i8........
2010-08-22 21:35:26.571797 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 800464396:800464448(52) ack 203316566 win 71
2010-08-22 21:35:26.571800 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 52:168(116) ack 1 win 71
2010-08-22 21:35:26.584865 IP valh5.lell.net.ssh > 11.154.12.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADC

7. จับแพ็คเก็ตที่มีที่อยู่ IP โดยใช้ tcpdump -n

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

$ tcpdump -n -i eth0
15:01:35.170763 IP 10.0.19.121.52497 > 11.154.12.121.ssh: P 105:157(52) ack 18060 win 16549
15:01:35.170776 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 23988:24136(148) ack 157 win 113
15:01:35.170894 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 24136:24380(244) ack 157 win 113

8. จับแพ็กเก็ตที่มีการประทับเวลาที่อ่านได้อย่างเหมาะสมโดยใช้ tcpdump -tttt

$ tcpdump -n -tttt -i eth0
2010-08-22 15:10:39.162830 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 49800 win 16390
2010-08-22 15:10:39.162833 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50288 win 16660
2010-08-22 15:10:39.162867 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50584 win 16586

9. อ่านแพ็กเก็ตที่ยาวกว่า N ไบต์

คุณสามารถรับได้เฉพาะแพ็กเก็ตที่มากกว่า n จำนวนไบต์โดยใช้ตัวกรอง 'มากกว่า' ผ่านคำสั่ง tcpdump

$ tcpdump -w g_1024.pcap greater 1024

10. รับเฉพาะแพ็กเก็ตของประเภทโปรโตคอลเฉพาะ

คุณสามารถรับแพ็กเก็ตตามประเภทโปรโตคอล คุณสามารถระบุหนึ่งในโปรโตคอลเหล่านี้ได้ — fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp และ udp ตัวอย่างต่อไปนี้จับเฉพาะแพ็กเก็ต arp ที่ไหลผ่านอินเทอร์เฟซ eth0

$ tcpdump -i eth0 arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
19:41:52.809642 arp who-has valh5.lell.net tell valh9.lell.net
19:41:52.863689 arp who-has 11.154.12.1 tell valh6.lell.net
19:41:53.024769 arp who-has 11.154.12.1 tell valh7.lell.net

11. อ่านแพ็กเก็ตน้อยกว่า N ไบต์

คุณสามารถรับได้เฉพาะแพ็กเก็ตที่น้อยกว่า n จำนวนไบต์โดยใช้ตัวกรอง 'น้อยกว่า' ผ่านคำสั่ง tcpdump

$ tcpdump -w l_1024.pcap less 1024

12. รับแพ็กเก็ตโฟลว์บนพอร์ตเฉพาะโดยใช้พอร์ต tcpdump

หากคุณต้องการทราบแพ็กเก็ตทั้งหมดที่ได้รับจากพอร์ตเฉพาะบนเครื่อง คุณสามารถใช้คำสั่ง tcpdump ดังที่แสดงด้านล่าง

$ tcpdump -i eth0 port 22
19:44:44.934459 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 18932:19096(164) ack 105 win 71
19:44:44.934533 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19096:19260(164) ack 105 win 71
19:44:44.934612 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 19260:19424(164) ack 105 win 71

13. จับแพ็กเก็ตสำหรับ IP ปลายทางและพอร์ตเฉพาะ

แพ็กเก็ตจะมี IP ต้นทางและปลายทางและหมายเลขพอร์ต การใช้ tcpdump เราสามารถใช้ตัวกรองกับ IP ต้นทางหรือปลายทางและหมายเลขพอร์ตได้ คำสั่งต่อไปนี้จะจับกระแสแพ็กเก็ตใน eth0 โดยมี IP ปลายทางเฉพาะและหมายเลขพอร์ต 22

$ tcpdump -w xpackets.pcap -i eth0 dst 10.181.140.216 and port 22

14. จับแพ็กเก็ตการสื่อสาร TCP ระหว่างสองโฮสต์

หากกระบวนการสองกระบวนการที่แตกต่างจากเครื่องสองเครื่องกำลังสื่อสารผ่านโปรโตคอล TCP เราสามารถจับแพ็กเก็ตเหล่านั้นได้โดยใช้ tcpdump ดังที่แสดงด้านล่าง

$tcpdump -w comm.pcap -i eth0 dst 16.181.170.246 and port 22

คุณสามารถเปิดไฟล์ comm.pcap โดยใช้เครื่องมือวิเคราะห์โปรโตคอลเครือข่ายเพื่อแก้ไขปัญหาที่อาจเกิดขึ้น

15. tcpdump Filter Packets – จับแพ็กเก็ตทั้งหมดที่ไม่ใช่ arp และ rarp

ในคำสั่ง tcpdump คุณสามารถกำหนดเงื่อนไข "และ", "หรือ" และ "ไม่" เพื่อกรองแพ็กเก็ตตามนั้นได้

$ tcpdump -i eth0 not arp and not rarp
20:33:15.479278 IP resolver.lell.net.domain > valh4.lell.net.64639: 26929 1/0/0 (73)
20:33:15.479890 IP valh4.lell.net.16053 > resolver.lell.net.domain: 56556+ PTR? 255.107.154.15.in-addr.arpa. (45)
20:33:15.480197 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.63897: P 540:1504(964) ack 1 win 96
20:33:15.487118 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 540 win 16486
20:33:15.668599 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]