ปริมาณการใช้แอปพลิเคชัน Wireshark Wireshark: การวิเคราะห์ปริมาณการใช้งานสำหรับ Linux และ Windows คุณสมบัติหลักของ Wireshark

Wireshark: ใช้อย่างไร?

สวัสดีเพื่อน! ในบทความนี้ ฉันจะพยายามอธิบายและบอกคุณเกี่ยวกับสิ่งจำเป็นที่สุดที่ควรรู้เมื่อใช้ Wireshark บน Linuxและแสดงการวิเคราะห์การรับส่งข้อมูลเครือข่ายสามประเภท บทช่วยสอนนี้ใช้ได้กับ Wireshark เพื่อทำงานภายใต้ Windows

หากคุณยังใหม่ต่อการรักษาความปลอดภัยของข้อมูล และเข้าใจเป็นอย่างดีว่าเครื่องมือดมกลิ่น (เครื่องมือวิเคราะห์ปริมาณการใช้งาน) คืออะไร ฉันแนะนำให้คุณอ่านบทความนี้ แล้วอ่านบทความนี้เกี่ยวกับวิธีใช้ Wireshark เท่านั้น

โด่งดังและเก่งมาก ตัววิเคราะห์โปรโตคอลเครือข่ายเจอรัลด์ คอมบ์ส พัฒนา Wireshark ในเดือนมิถุนายน พ.ศ. 2549 เมื่อคอมบ์สเปลี่ยนชื่อเครื่องมือเครือข่ายแบบเทพที่เขาสร้างขึ้นด้วยเพราะเขาเปลี่ยนงานและไม่สามารถใช้ชื่อเดิมได้อีกต่อไป ทุกวันนี้คนส่วนใหญ่ใช้ Wireshark และ Ethereal คือประวัติศาสตร์

Wireshark: นักดมกลิ่นที่ดีที่สุด

คุณอาจถูกถามว่า Wireshark แตกต่างจากเครือข่ายดมกลิ่นอื่น ๆ อย่างไร - นอกเหนือจากการเป็นอิสระ - และทำไมเราไม่เริ่มส่งเสริม tcpdump สำหรับการดักจับแพ็กเก็ตล่ะ

ข้อได้เปรียบหลักของ Wireshark คือเป็นแอปพลิเคชั่นกราฟิก การรวบรวมข้อมูลและตรวจสอบการรับส่งข้อมูลเครือข่ายในส่วนต่อประสานผู้ใช้นั้นสะดวกมาก เนื่องจากช่วยให้คุณจัดการกับข้อมูลเครือข่ายที่ซับซ้อนได้

ฉันจะใช้ Wireshark ได้อย่างไร

สำหรับผู้เริ่มต้นที่จะเข้าใจ Wireshark เขาต้องเข้าใจการรับส่งข้อมูลในเครือข่าย ถ้าเป็นเช่นนั้น จุดประสงค์ของบทความนี้คือเพื่อสอนพื้นฐานของ TCP / IP แก่คุณ เพื่อให้คุณสามารถสรุปผลที่ถูกต้องจากการรับส่งข้อมูลเครือข่ายที่คุณกำลังวิเคราะห์


รูปแบบแพ็กเก็ต TCP และแพ็กเก็ต IP

หากคุณใช้งาน Wireshark ในฐานะผู้ใช้ทั่วไป คุณจะไม่สามารถใช้อินเทอร์เฟซเครือข่ายเพื่อรวบรวมข้อมูลเนื่องจากการอนุญาตไฟล์ Unix เริ่มต้นที่มีอยู่ในอินเทอร์เฟซเครือข่าย สะดวกกว่าในการเรียกใช้ Wireshark เป็นรูท (sudo wireshark) เมื่อรวบรวมข้อมูลและเป็นผู้ใช้ทั่วไปสำหรับการวิเคราะห์ข้อมูล

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

ดักจับข้อมูลเครือข่ายด้วย Wireshark

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

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

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

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

Wireshark ให้คุณอ่านและวิเคราะห์ข้อมูลเครือข่ายที่รวบรวมไว้แล้วจากรูปแบบไฟล์ที่หลากหลาย รวมถึง tcpdump, libpcap, Sun's snoop, nettl ของ HP, ไฟล์ข้อความ K12 และอื่นๆ กล่าวโดยย่อ Wireshark สามารถอ่านข้อมูลเครือข่ายที่รวบรวมได้เกือบทุกรูปแบบ ในทำนองเดียวกัน Wireshark ให้คุณบันทึกข้อมูลที่รวบรวมไว้ในรูปแบบต่างๆ คุณยังสามารถใช้ Wireshark เพื่อแปลงไฟล์จากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่งได้

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

มีตัวเลือกให้พิมพ์แพ็คเกจของคุณ ฉันไม่เคยใช้มันในชีวิตจริง แต่เพื่อการศึกษา การพิมพ์แพ็คเกจและเนื้อหาทั้งหมดจะมีประโยชน์มาก

ตัวกรองการแสดงผล Wireshark

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

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

Wireshark ไฮไลต์ตัวกรองที่ถูกต้องตามหลักไวยากรณ์ด้วยพื้นหลังสีเขียวอ่อน หากไวยากรณ์มีข้อผิดพลาด พื้นหลังจะเปลี่ยนเป็นสีชมพู

ตัวกรองการแสดงผลสนับสนุนตัวดำเนินการเปรียบเทียบและตัวดำเนินการบูลีน ตัวกรองการแสดงผล http.response.code


สามแพ็กเก็ต (SYN, SYN + ACK และ ACK) การเชื่อมต่อ TCP สามทาง

404 && ip.addr == 192.168.1.1 แสดงการรับส่งข้อมูลที่เปลี่ยนจากที่อยู่ IP 192.168.1.1 หรือไปยังที่อยู่ IP 192.168.1.1 ซึ่งมีรหัสตอบกลับ HTTP 404 (ไม่พบ) อยู่ด้วย ตัวกรอง! Boo1p &&! Ip &&! Aggr แยกการเข้าชม BOOTP, IP และ ARP ออกจากผลลัพธ์ ตัวกรอง eth.addr == 01: 23: 45: 67: 89: ab && tcp.port == 25 แสดงการรับส่งข้อมูลที่ไปจากหรือไปยังอุปกรณ์เครือข่ายด้วยที่อยู่ MAC 01: 23: 45: 67: 89: ab ที่ใช้ พอร์ต TCP หมายเลข 25 สำหรับการเชื่อมต่อขาเข้าและขาออก

โปรดจำไว้ว่า ตัวกรองการแสดงผลไม่ได้แก้ปัญหาอย่างน่าอัศจรรย์ สิ่งเหล่านี้เป็นเครื่องมือที่มีประโยชน์อย่างยิ่งเมื่อใช้อย่างถูกต้อง แต่คุณยังต้องตีความผลลัพธ์ ค้นหาปัญหา และคิดหาวิธีแก้ไขที่เหมาะสมด้วยตนเอง

ความต่อเนื่องของบทความในหน้าถัดไป หากต้องการไปยังหน้าถัดไป ให้คลิกที่ปุ่ม 2 ซึ่งอยู่ใต้ปุ่มของโซเชียลเน็ตเวิร์ก

บทนำ

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

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


เกี่ยวกับตัวกรองภาษา

ความสามารถในการสกัดกั้นการรับส่งข้อมูลเพื่อวัตถุประสงค์ในการตรวจสอบและแก้จุดบกพร่องมีอยู่ในสแต็กเครือข่ายของระบบปฏิบัติการใดๆ ดำเนินการโดยใช้ตัวกรองแพ็คเก็ตที่เรียกว่าซึ่งเป็นส่วนหนึ่งของเคอร์เนลระบบและรับแพ็กเก็ตที่ได้รับ / ส่งจากไดรเวอร์การ์ดเครือข่าย ตัวกรองแพ็กเก็ตที่มีชื่อเสียงที่สุดสำหรับระบบปฏิบัติการที่คล้าย Unix คือ BPF (Berkeley Packet Filter) และ LSF (Linux Socket Filter)

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

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

ในโลกโอเพนซอร์ส มาตรฐานโดยพฤตินัยสำหรับภาษาตัวกรองคือไวยากรณ์ที่ใช้ในไลบรารี Pcap เป็นพื้นฐานที่ไม่เพียงแต่สำหรับ Wireshark เท่านั้น แต่ยังรวมถึงยูทิลิตี้โอเพ่นซอร์สอื่นๆ เช่น ตัวดมกลิ่นคอนโซล tcpdump ซึ่งเป็นที่รู้จักกันดีในโลกของ Unix อันที่จริง Pcap และ tcpdump เป็นโครงการร่วมกัน ระบบตรวจจับการบุกรุก Snort ยอดนิยมยังใช้รูปแบบ Pcap เพื่อกำหนดกฎการกรองการรับส่งข้อมูลในโหมดการดักจับแพ็กเก็ต


ข้อมูลพื้นฐานเกี่ยวกับตัวกรอง Pcap

ดังนั้น, ตัวกรองรวมถึงหนึ่งหรือหลาย primitives... ดั้งเดิมมักจะประกอบด้วยอ็อบเจ็กต์ (หมายเลขหรือชื่อ) และตัวระบุอย่างน้อยหนึ่งตัวที่กำหนดโปรโตคอล (ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp), ทิศทาง (src, dst , ใดๆ และอื่นๆ) และประเภทอ็อบเจ็กต์ (โฮสต์ เน็ต พอร์ต ฯลฯ) ตัวอย่างเช่น หากต้องการสกัดกั้นแพ็กเก็ตที่มีที่อยู่ IP ขาออกคือ 192.168.56.102 คุณควรใช้ตัวกรองดังนี้:

Ip src โฮสต์ 192.168.56.102

หรือเพื่อบันทึกการรับส่งข้อมูล ARP ที่เกี่ยวข้องกับโฮสต์บนเครือข่าย 192.168.56.0:

Arp net 192.168.56

ตัวระบุที่ใช้บ่อยจะถูกจัดตาราง (ส่วนประกอบทางเลือกแสดง -, ทางเลือก - |, วัตถุ -< >). รายการทั้งหมดสามารถพบได้ในเอกสารประกอบ Pcap (บน Linux มีอยู่ในคู่มือผู้ใช้ด้วยคำสั่ง man pcap-filter)

ในการรวมคำดั้งเดิมหลายตัวเข้าเป็นนิพจน์เดียว ฟังก์ชันเชิงตรรกะจึงถูกนำมาใช้: “และ” (แสดงโดยคีย์เวิร์ด และ หรือ &&), “หรือ” (หรือหรือ ||), “ไม่” (ไม่ใช่หรือ!) ตัวอย่างเช่น เพื่อสกัดกั้นการรับส่งข้อมูลของโปรโตคอล SSH สำหรับโฮสต์ 192.168.56.102 โครงสร้างต่อไปนี้มีความเหมาะสม:

พอร์ต TCP 22 และโฮสต์ 192.168.56.102

ใช้วงเล็บสำหรับนิพจน์ที่ซับซ้อนมาก ตัวอย่างเช่น:

Net 192.168.56.0/24 และ (พอร์ต TCP 21 หรือพอร์ต TCP 22)

ตัวกรอง Pcap ไม่ จำกัด

สำหรับผู้ที่คุ้นเคยกับการใช้ชีวิตตามกฎเกณฑ์ของตนเอง ไลบรารี Pcap จะให้การเข้าถึงแบบสุ่มไปยังเนื้อหาของแพ็กเก็ตเครือข่าย โดยใช้พลังเต็มที่ของตัวกรองแพ็กเก็ต OS ทำได้โดยใช้ไวยากรณ์ที่ค่อนข้างง่าย:

โปรโต [exp: ขนาด]

โดยที่พารามิเตอร์โปรโตเป็นหนึ่งในโปรโตคอลที่สนับสนุนโดย Wireshark exp คือออฟเซ็ตเป็นไบต์ตั้งแต่เริ่มต้นเลเยอร์ที่ระบุในโปรโต และขนาดคือจำนวนไบต์ที่จะดึงข้อมูล

เมื่อพิจารณาว่าในเบื้องต้น สามารถใช้การดำเนินการเปรียบเทียบในสัญกรณ์ภาษาซี (>, =,

อย่างไรก็ตาม ตัวอย่างมีความหมายตามระเบียบวิธีเท่านั้น เนื่องจากโปรโตคอลนี้กรองได้ง่ายโดยกฎ icmp มาตรฐาน

แต่การเลือกคำขอ HTTP ที่ทำโดยวิธี GET จากการรับส่งข้อมูลในทันทีนั้นไม่ใช่เรื่องง่ายสำหรับ Pcap และวิธีแก้ปัญหาที่เสนอในเอกสารอ้างว่าเป็นต้นฉบับ:

พอร์ต 80 และ tcp [((tcp & 0xf0) >> 2): 4] = 0x47455420

ตัวกรองนี้จะตรวจสอบไบต์ "G", "E", "T" และ "" (ค่าฐานสิบหก 47, 45, 54 และ 20) ทันทีหลังจากส่วนหัว TCP ซึ่งความยาวคำนวณโดยนิพจน์ " tcp & 0xf0) >> 2".

ดังที่คุณเห็นจากตัวอย่างที่แล้ว นอกเหนือจากการดำเนินการเปรียบเทียบแล้ว ตัวดำเนินการไบนารี C (+, -, *, /, &, |,>) ยังมีให้บริการสำหรับผู้ใช้โดยตรงในพื้นฐาน


เกี่ยวกับตัวกรองการแสดงผล

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

การดึงสตริงย่อยในฟิลด์จะคล้ายกับการแยกไบต์ที่ต้องการจากแพ็กเก็ตในตัวกรอง Pcap แต่มีไวยากรณ์ที่ยืดหยุ่นกว่า ตัวอย่างเช่น นิพจน์นี้จะตรวจสอบ 4 ไบต์แรกของฟิลด์ที่อยู่ MAC ดั้งเดิมของเฟรมอีเทอร์เน็ต (เทียบเท่า):

Eth.src [: 4] == 00: 1d: 72: 01

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

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

ตัวอย่างทางวิชาการเกือบทั้งหมดของการพิจารณาว่าเมื่อใดที่บัฟเฟอร์ล้นของเซ็กเมนต์ TCP ถูกกำหนดโดยใช้กฎการแมปต่อไปนี้จะเปิดเผยอย่างชัดเจน:

Tcp.window_size == 0 && tcp.flags.reset! = 1

บทสรุป

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

มีตัวกรองที่แตกต่างกันจำนวนมาก และมีเอกสารประกอบจำนวนมากเกี่ยวกับตัวกรองเหล่านี้ ซึ่งไม่ง่ายนักที่จะเข้าใจ ฉันได้รวบรวมตัวกรอง Wireshark ที่น่าสนใจและใช้บ่อยที่สุดสำหรับฉัน สำหรับผู้ใช้มือใหม่ นี่อาจเป็นคำแนะนำเล็กน้อยเกี่ยวกับตัวกรอง Wireshark ซึ่งเป็นจุดเริ่มต้นในการสำรวจ นอกจากนี้ในความคิดเห็น ฉันขอเชิญคุณแบ่งปันตัวกรองทั่วไปที่คุณมักใช้ รวมถึงสิ่งที่น่าสนใจ - ฉันจะเพิ่มลงในรายการนี้

โปรดจำไว้ว่า Wireshark มีตัวกรองการแสดงผลและตัวกรองการจับภาพ ที่นี่ฉันพิจารณาตัวกรองการแสดงผลซึ่งป้อนในหน้าต่างโปรแกรมหลักในฟิลด์ด้านบนด้านล่างเมนูและไอคอนของฟังก์ชันหลัก

เพื่อให้เข้าใจความหมายของตัวกรองและสิ่งที่แสดงอย่างชัดเจน คุณต้องเข้าใจวิธีการทำงานของเครือข่าย เพื่อทำความคุ้นเคยกับหลักการของเครือข่ายและโปรโตคอล ขอแนะนำให้ศึกษาวงจรการทำงานของเครือข่ายคอมพิวเตอร์ บทความแรกของวงจร "" (ส่วนที่เหลือของกระบวนการเตรียมการ)

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

ตัวดำเนินการตัวกรอง Wireshark

ตัวกรองมีความหมายต่างกันได้ เช่น สตริง เลขฐานสิบหก หรือตัวเลข

หากมีการค้นหาการจับคู่ที่ไม่แน่ชัด (เหมาะกับค่าที่ไม่ใช่ตัวเลขมากกว่า) ให้ใช้ ประกอบด้วย... ตัวอย่างเช่น หากต้องการแสดงแพ็กเก็ต TCP ที่มีแฮ็กแวร์สตริง คุณต้องมีตัวกรองต่อไปนี้:

TCP มีแฮ็คแวร์

ตัวดำเนินการจะใช้เพื่อค้นหาค่าที่แน่นอน ลองพิจารณาดู:

อย่างที่คุณเห็น มีการเขียนสองแบบ เช่น หากเราต้องการระบุว่าค่าตัวกรองเท่ากับบางสิ่งบางอย่าง เราก็สามารถใช้ == หรือ เท่ากัน.

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

Tcp.port> = 8000 && tcp.port<=8180

แล้วค่าตัวกรอง (ในกรณีนี้ tcp.port) ถูกเขียนทับด้วยค่าสุดท้าย ดังนั้น แทนที่จะเป็นพฤติกรรมที่คาดหวัง เราจึงได้ผลลัพธ์ของงานเฉพาะส่วนสุดท้ายเท่านั้น ในกรณีนี้คือ

Tcp.port<=8180

จำข้อผิดพลาดนี้!

เมื่อใช้กับ == (เท่ากัน) ข้อบกพร่องนี้หายไป

ตัวดำเนินการบูลีนตัวกรอง Wireshark

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

โอเปอเรเตอร์ คำอธิบาย
และ / && ตรรกะ AND ข้อมูลจะถูกส่งออกหากตรงกับทั้งสองส่วนของตัวกรอง ตัวอย่างเช่น ตัวกรอง ip.src == 192.168.1.1 และ tcpจะแสดงเฉพาะแพ็กเก็ตที่มาจาก 192.168.1.1 และที่เชื่อมโยงกับโปรโตคอล TCP จะแสดงเฉพาะข้อมูลที่ตรงกับทั้งสองเงื่อนไข
หรือ / || ตรรกะ OR ก็เพียงพอแล้วสำหรับเงื่อนไขเดียวเท่านั้นที่จะเป็นจริง ถ้าทั้งสองเป็นจริงก็เหมาะสมเช่นกัน ตัวอย่างเช่น ตัวกรอง tcp.port == 80 หรือ tcp.port == 8080จะแสดงแพ็กเก็ต TCP ที่เชื่อมโยง (ต้นทางหรือปลายทาง) กับพอร์ต 80 หรือ 8080
ไม่ /! ไม่ใช้บูลีนเมื่อเราต้องการยกเว้นบางแพ็คเกจ นั่นคือ แพ็คเกจทั้งหมดจะแสดงขึ้น ยกเว้นแพ็คเกจที่ตรงตามเงื่อนไขหลังไม่ ตัวอย่างเช่น ตัวกรอง ! DNSจะแสดงแพ็กเก็ตทั้งหมดยกเว้น DNS

ตัวอย่างการรวมกัน:

แสดง HTTP หรือการรับส่งข้อมูล DNS:

HTTP หรือ DNS

แสดงการจราจรใด ๆ นอกจากนี้ ARP, ICMP และ DNS:

! (arp หรือ icmp หรือ dns)

ตัวกรองอินเทอร์เฟซ

แสดงแพ็กเก็ตที่ส่งหรือรับบนอินเตอร์เฟส wlan0 เท่านั้น:

Frame.interface_name == "wlan0"

การรับส่งข้อมูลโปรโตคอลดาต้าลิงค์

เพื่อแสดงการรับส่งข้อมูล ARP:

แสดงเฟรม ARP ที่ส่งจากอุปกรณ์ที่มีที่อยู่ MAC 00: c0: ca: 96: cf: cb:

Arp.src.hw_mac == 00: c0: ca: 96: cf: cb

แสดงเฟรม ARP ที่ส่งจากอุปกรณ์ที่มีที่อยู่ IP 192.168.50.90:

Arp.src.proto_ipv4 == 192.168.50.90

แสดงเฟรมโปรโตคอล ARP ที่ส่งไปยังอุปกรณ์ที่มีที่อยู่ MAC 00: 00: 00: 00: 00: 00 น. (ที่อยู่นี้ถูกใช้เมื่อโปรโตคอลพยายามค้นหาที่อยู่ MAC เป้าหมาย ที่อยู่ยอดนิยมอื่นที่อาจทำให้คุณสับสนคือ ff: ff: ff: ff: ff: ff ที่อยู่นี้ออกอากาศ นั่นคือข้อความที่มีที่อยู่นี้มีไว้สำหรับอุปกรณ์ทั้งหมดในเครือข่ายท้องถิ่น):

Arp.dst.hw_mac == 00: 00: 00: 00: 00: 00 00

แสดงเฟรม ARP ที่ส่งไปยังอุปกรณ์ด้วยที่อยู่ IP 192.168.50.1:

Arp.dst.proto_ipv4 == 192.168.50.1

แสดงทราฟฟิกอีเธอร์เน็ต:

แสดงเฟรม (โดยทั่วไป ทุกเฟรม ไม่ใช่แค่ ARP เช่นเดียวกับในตัวอย่างก่อนหน้านี้) ส่งจากอุปกรณ์ที่มีที่อยู่ MAC 00: c0: ca: 96: cf: cb:

Eth.src == 00: c0: ca: 96: cf: cb

แสดงเฟรมที่ส่งไปยังอุปกรณ์ที่มีที่อยู่ MAC 78: cd: 8e: a6: 73: เป็น:

Eth.dst == 78: cd: 8e: a6: 73: be

การรับส่งข้อมูลโปรโตคอลเกตเวย์

การกรองโปรโตคอล IPv4

แสดงการรับส่งข้อมูล IP (ซึ่งรวมถึง TCP, UDP เช่นเดียวกับโปรโตคอลเลเยอร์แอปพลิเคชัน DNS, HTTP - นั่นคือเกือบทุกอย่างยกเว้นโปรโตคอลเลเยอร์ลิงค์ซึ่งไม่ได้ใช้ที่อยู่ IP สำหรับการส่งข้อมูล (ในเครือข่ายอีเทอร์เน็ตในพื้นที่พวกเขาใช้ MAC) - ที่อยู่)):

โดยเฉพาะอย่างยิ่ง นี่หมายถึงการรับส่งข้อมูล IPv4 ซึ่งมักจะเรียกง่ายๆ ว่า IP (Internet Protocol)

แสดงการรับส่งข้อมูลที่เกี่ยวข้องกับที่อยู่ IP เฉพาะ (เขียนแทน x.x.x.x) แพ็กเก็ตจะแสดงโดยที่อยู่ IP นี้เป็นแหล่งข้อมูลหรือปลายทาง:

Ip.addr == x.x.x.x

แสดงการรับส่งข้อมูลที่เกี่ยวข้องกับที่อยู่ IP สองแห่งที่ให้มา ตามตรรกะที่เป็นไปได้เท่านั้น หนึ่งในที่อยู่เหล่านี้จะเป็นแหล่งที่มา และอีกที่อยู่หนึ่งจะเป็นที่อยู่สำหรับจัดส่ง

Ip.addr == x.x.x.x && ip.addr == ปปปป

แสดงการรับส่งข้อมูลที่มาจากโฮสต์ที่มีที่อยู่ IP 138.201.81.199:

Ip.src == 138.201.81.199

แสดงการรับส่งข้อมูลที่กำหนดไว้สำหรับโฮสต์ที่มีที่อยู่ IP 138.201.81.199:

Ip.dst == 138.201.81.199

โปรดทราบว่าโปรโตคอล IP ทำงานด้วยที่อยู่ IP แต่ไม่ทำงานกับพอร์ต พอร์ตเป็นส่วนหนึ่งของโปรโตคอล TCP และ UDP โปรโตคอล IP มีหน้าที่กำหนดเส้นทางการรับส่งข้อมูลระหว่างโฮสต์เท่านั้น

การกรองซับเน็ตและช่วง IP ใน Wireshark

คุณสามารถระบุซับเน็ตแทนที่อยู่ IP เดียว:

Ip.addr == 192.168.1.0/24

การกรองการรับส่งข้อมูลที่ส่งจากช่วง IP เฉพาะ หากคุณต้องการกรองทราฟฟิกที่มาจากซับเน็ต ให้ใช้ตัวกรองของแบบฟอร์ม:

Ip.src == 192.168.1.0/24

การกรองการรับส่งข้อมูลที่ต้องการส่งไปยังช่วง IP เฉพาะ หากคุณต้องการกรองทราฟฟิกที่มีปลายทางเป็นซับเน็ต ให้ใช้ตัวกรองของแบบฟอร์ม:

Ip.dst == 192.168.1.0/24

การกรองโปรโตคอล IPv6

แสดงการรับส่งข้อมูล IPv6 (Internet Protocol เวอร์ชัน 6):

กรองตามที่อยู่ IPv6 ในการกรองตามที่อยู่ IPv6 ให้ใช้ตัวกรอง:

Ipv6.addr == 2604: a880: 800: c1 :: 2ae: d001

การกรองซับเน็ตและช่วง IPv6 ใน Wireshark

คุณสามารถระบุซับเน็ตสำหรับการกรองแทนที่อยู่ IPv6 เดียว:

Ipv6.addr == 2604: a880: 800: c1 :: 2ae: d000 / 64

หากคุณต้องการกรองการเข้าชมที่มาจากที่อยู่ IPv6 ที่เฉพาะเจาะจง:

Ipv6.src == 2604: a880: 800: c1 :: 2ae: d001

หากคุณต้องการกรองการรับส่งข้อมูลที่ส่งไปยังที่อยู่ IPv6 ที่ระบุ:

Ipv6.dst == 2604: a880: 800: c1 :: 2ae: d001

การกรองการรับส่งข้อมูลที่ส่งจากช่วง IPv6 ที่เฉพาะเจาะจง หากคุณต้องการกรองทราฟฟิกที่มาจากซับเน็ต ให้ใช้ตัวกรองของแบบฟอร์ม:

Ipv6.src == 2604: a880: 800: c1 :: 2ae: d000 / 64

การกรองการรับส่งข้อมูลที่ต้องการส่งไปยังช่วง IPv6 ที่เฉพาะเจาะจง หากคุณต้องการกรองทราฟฟิกที่มีปลายทางเป็นซับเน็ต ให้ใช้ตัวกรองของแบบฟอร์ม:

Ipv6.dst == 2604: a880: 800: c1 :: 2ae: d000 / 64

การกรอง ICMPv6 (Internet Control Message Protocol) ใน Wireshark ทำได้โดยตัวกรอง:

หากต้องการดูแพ็กเก็ตที่ทำหน้าที่เป็น ARP สำหรับ IPv6 ให้ใช้ตัวกรอง:

Icmpv6.type == 133 หรือ icmpv6.type == 134 หรือ icmpv6.type == 135 หรือ icmpv6.type == 136 หรือ icmpv6.type == 137

ตัวกรองที่อยู่ IP อื่นๆ จะคล้ายกันสำหรับ IPv6 และ IPv4

ทราฟฟิกโปรโตคอลเลเยอร์การขนส่ง

หากต้องการดูเฉพาะการรับส่งข้อมูล TCP:

แสดงการรับส่งข้อมูลที่มีพอร์ตต้นทางหรือปลายทางเป็นพอร์ตเฉพาะ เช่น 8080:

Tcp.port == 8080

แสดงการรับส่งข้อมูลที่เริ่มต้นจากพอร์ต 80:

Tcp.srcport == 80

แสดงการรับส่งข้อมูลที่ถูกส่งไปยังบริการที่รับฟังบนพอร์ต 80:

Tcp.dstport == 80

แสดงแพ็กเก็ต TCP โดยเปิดใช้งานแฟล็ก SYN:

Tcp.flags.syn == 1

แสดงแพ็กเก็ต TCP โดยเปิดใช้งานแฟล็ก SYN และปิดใช้งานแฟล็ก ACK:

Tcp.flags.syn == 1 && tcp.flags.ack == 0

ในทำนองเดียวกันสำหรับธงอื่นๆ:

tcp.flags.syn == 1 tcp.flags.ack == 1 tcp.flags.reset == 1 tcp.flags.fin == 1 tcp.flags.cwr tcp.flags.ecn tcp.flags.urg == 1 tcp.flags.push == 1

คุณสามารถใช้ไวยากรณ์เช่น tcp.flags == 0x0XX, ตัวอย่างเช่น:

  • ฟินเลย tcp.flags == 0x001
  • SYN นี้ tcp.flags == 0x002
  • RST คือ tcp.flags == 0x004
  • ACK นี้ tcp.flags == 0x010
  • ติดตั้งพร้อมกัน ACK และ FIN is tcp.flags == 0x011
  • ติดตั้งพร้อมกัน ACK และ SYN is tcp.flags == 0x012
  • ติดตั้งพร้อมกัน ACK และ RST is tcp.flags == 0x014

ในการแสดงแพ็คเกจที่มีสตริง เช่น สตริงของแฮ็กแวร์:

TCP มีแฮ็คแวร์

ติดตามสตรีม TCP X:

Tcp.stream เท่ากับ X

กรองตามหมายเลขสตรีม:

Tcp.seq == x

แสดงการส่งข้อมูลซ้ำของแพ็กเก็ต ช่วยติดตามการชะลอตัวของประสิทธิภาพแอปพลิเคชันและการสูญเสียแพ็กเก็ต:

ตัวกรองนี้นำแพ็กเก็ตที่มีปัญหาออกมา (ส่วนที่สูญหาย การส่งสัญญาณซ้ำ ฯลฯ) ตัวกรองนี้จะผ่านแพ็กเก็ต TCP Keep-Alive แต่ไม่ได้บ่งชี้ถึงปัญหา

Tcp.analysis.flags

ตัวกรองเพื่อประเมินคุณภาพของการเชื่อมต่อเครือข่าย

ข้อกำหนดต่อไปนี้ใช้กับเฟรม TCP ยิ่งกว่านั้น พวกมันไม่ได้อิงตามส่วนหัวของเฟรม - คุณสมบัติที่เป็นปัญหา (การข้ามข้อมูล การซ้ำซ้อน) ถูกกำหนดโดยโปรแกรม Wireshark ตามการวิเคราะห์

ตัวกรองจะแสดงข้อมูลเกี่ยวกับเฟรมที่มีแฟล็ก ACK ซึ่งซ้ำกัน เฟรมดังกล่าวจำนวนมากสามารถบ่งบอกถึงปัญหาในการสื่อสาร:

Tcp.analysis.duplicate_ack_num == 1

ตัวกรองสำหรับแสดงเฟรมที่ไม่ได้บันทึกส่วนก่อนหน้า:

Tcp.analysis.ack_lost_segment

ซึ่งถือเป็นเรื่องปกติในช่วงเริ่มต้นของการดักจับข้อมูล เนื่องจากข้อมูลจะไม่ถูกสกัดกั้นตั้งแต่ช่วงเริ่มต้นของเซสชัน

ในการแสดงเฟรมที่ส่งซ้ำ (ส่งซ้ำ):

Tcp.analysis.retransmission

การแสดงเฟรมที่ไม่ได้รับในลำดับที่ถูกต้อง:

Tcp.analysis.out_of_order

หากต้องการดูเฉพาะการรับส่งข้อมูล UDP:

ไม่มีการใช้แฟล็กสำหรับ UDP สำหรับโปรโตคอลนี้ คุณสามารถระบุพอร์ตได้เท่านั้น

แสดงการรับส่งข้อมูลที่เริ่มต้นจากพอร์ต 53:

Udp.srcport == 53

แสดงทราฟฟิกที่ถูกส่งไปยังบริการรอรับพอร์ต 53:

Udp.dstport == 53

แพ็กเก็ต UDP ที่มีสตริงเฉพาะ เช่น สตริงของแฮ็กแวร์:

Udp มีแฮ็คแวร์

หากต้องการดูเฉพาะการรับส่งข้อมูล ICMP:

หากต้องการดูเฉพาะการรับส่งข้อมูล ICMP v6 (เวอร์ชันที่หก)

แสดงการตอบกลับ ping ทั้งหมด:

Icmp.type == 0

แสดงคำขอ ping ทั้งหมด:

Icmp.type == 8

แสดงโฮสต์และพอร์ตทั้งหมดไม่พร้อมใช้งาน / ข้อผิดพลาดถูกปฏิเสธ

Icmp.type == 3

แสดงความพยายามทั้งหมดในการเปลี่ยนเส้นทางการกำหนดเส้นทางโดยใช้ ICMP:

Icmp.type == 8

ตัวอย่างการใช้ค่า CODE ตัวกรองต่อไปนี้จะแสดงข้อความที่ไม่มีพอร์ต:

Icmp.type == 3 && icmp.code == 3

การรับส่งข้อมูลโปรโตคอลแอปพลิเคชัน

สำหรับโปรโตคอลเลเยอร์แอปพลิเคชัน HTTP, DNS, SSH, FTP, SMTP, RDP, SNMP, RTSP, GQUIC, CDP, LLMNR, SSDP มีตัวกรองที่มีชื่อเหมือนตัวโปรโตคอลเอง แต่เขียนด้วยตัวอักษรขนาดเล็ก

ตัวอย่างเช่น หากต้องการดูการรับส่งข้อมูล HTTP:

หากต้องการดูการรับส่งข้อมูลของโปรโตคอล HTTP / 2: ใหม่:

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

ตัวกรองที่แสดงเฉพาะข้อมูลที่ส่งโดยวิธี POST:

Http.request.method == "โพสต์"

ตัวกรองที่แสดงเฉพาะข้อมูลที่ส่งโดยวิธี GET:

Http.request.method == "GET"

ค้นหาคำขอไปยังไซต์เฉพาะ (โฮสต์):

Http.host == " "

ค้นหาคำขอไปยังไซต์ใดไซต์หนึ่งโดยใช้ชื่อบางส่วน:

Http.host มี "here.partial.name"

ตัวกรองสำหรับแสดงคำขอ HTTP ที่ส่งคุกกี้:

Http.cookie

คำขอที่เซิร์ฟเวอร์ตั้งค่าคุกกี้ให้กับเบราว์เซอร์ของผู้ใช้

Http.set_cookie

หากต้องการค้นหาภาพที่อัปโหลด:

Http.content_type มี "ภาพ"

ในการค้นหารูปภาพบางประเภท:

Http.content_type มี "gif" http.content_type มี "jpeg" http.content_type มี "png"

ในการค้นหาไฟล์บางประเภท:

Http.content_type มี "text" http.content_type มี "xml" http.content_type มี "html" http.content_type มี "json" http.content_type มี "javascript" http.content_type มี "x-www-form-urlencode" http content_type มี "บีบอัด" http.content_type มี "แอปพลิเคชัน"

ค้นหาคำขอรับไฟล์บางประเภทใน Wireshark ตัวอย่างเช่น ในการค้นหาไฟล์ ZIP ที่ถ่ายโอน:

Http.request.uri มี "zip"

สามารถใช้ตัวกรองแทน http.request.uri เพื่อความแม่นยำยิ่งขึ้น http.request.uri.pathหรือ http.request.uri.queryตัวอย่างเช่น การค้นหาคำขอดาวน์โหลดไฟล์ JPG (ลิงก์ไปยังรูปภาพ):

Http.request.uri.path มี "jpg"

คุณยังสามารถกรองคำขอที่มีค่าส่วนหัว REFERER HTTP ที่ระบุออกได้ ตัวอย่างเช่น หากต้องการค้นหาข้อความค้นหาที่ ru-board.com เป็นผู้อ้างอิง:

Http.referer มี "ru-board.com"

Http. การอนุญาต

ค้นหาไฟล์ในสตรีม HTTP:

Http.file_data

หากต้องการดูว่าได้รับข้อมูลเวลาแฝง HTTP ใด จะมีการใช้โครงสร้างต่อไปนี้:

Http.time> 1

จะแสดงการรับส่งข้อมูลที่ได้รับช้ากว่า 1 วินาที

ในการตรวจสอบปัญหา คุณสามารถวิเคราะห์สถานะของรหัสตอบกลับ HTTP ตัวอย่างเช่น ตัวกรองต่อไปนี้จะแสดงการรับส่งข้อมูลที่ได้รับข้อผิดพลาด 404 Not Found:

Http.response.code == 404

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

Http.request &&! (Http.request.uri ประกอบด้วย ".ico" หรือ http.request.uri ประกอบด้วย ".css" หรือ http.request.uri ประกอบด้วย ".js" หรือ http.request.uri มี ".gif" หรือ http.request.uri มี ".jpg")

หากต้องการดูคำขอและการตอบกลับ DNS ทั้งหมด:

หากต้องการดูว่าการค้นหา DNS ใดใช้เวลานาน:

DNS.time> 1

การตอบกลับจะปรากฏในเวลามากกว่าหนึ่งวินาทีหลังจากส่งคำขอ

ตัวกรองนี้แสดงว่าคำขอ DNS ใดที่ไม่สามารถแก้ไขได้อย่างถูกต้อง:

Dns.flags.rcode! = 0

แสดงเฉพาะคำขอ DNS:

DNS.flags.response == 0

แสดงเฉพาะการตอบกลับ DNS:

DNS.flags.response == 1

แสดงคำขอและการตอบกลับซึ่งมีการค้นหา IP สำหรับ google.com:

DNS.qry.name == "google.com"

แสดงการสืบค้น DNS และการตอบสนองสำหรับระเบียน A:

DNS.qry.type == 1

แสดงการสืบค้น DNS และการตอบสนองสำหรับบันทึก AAAA:

DNS.qry.type == 28

แสดงการตอบกลับโดยส่ง 216.58.1196.3 เป็น IP สำหรับบันทึก A:

Dns.a == 216.58.196.3

แสดงการตอบกลับโดยที่ 2a01: 4f8: 172: 1d86 :: 1 ถูกส่งเป็น IP สำหรับบันทึก AAAA:

Dns.aaaa == 2a01: 4f8: 172: 1d86 :: 1

แสดงบันทึกจาก CNAME apollo.archlinux.org:

DNS.cname == "apollo.archlinux.org"

แสดงคำตอบที่ยาวกว่า 30:

Dns.resp.len> 30

แสดงคำขอที่มีความยาวมากกว่า 25:

Dns.qry.name.len> 25

แสดงการตอบสนองของเซิร์ฟเวอร์ DNS ที่มีการเรียกซ้ำ:

DNS.flags.recaavail == 1

แสดงการตอบสนองของเซิร์ฟเวอร์ DNS ที่ไม่สามารถเรียกซ้ำได้:

Dns.flags.recaavail == 0

เป็นการเรียกซ้ำหรือไม่ (หากเซิร์ฟเวอร์ DNS ที่ร้องขอไม่มีข้อมูลชื่อโฮสต์ ควรสอบถามเซิร์ฟเวอร์ DNS อื่นสำหรับข้อมูลนี้):

Dns.flags.recdesired == 1

หากคำขอมี 1 จำเป็นต้องมีการเรียกซ้ำถ้า 0 - ไม่เป็นที่พึงปรารถนา

จะรับข้อมูลที่ไม่ผ่านการตรวจสอบสิทธิ์หรือไม่ ( 0 หมายถึงไม่รับ 1 หมายถึงยอมรับ):

DNS.flags.checkdisable == 0

หากต้องการดูวิธีการกำหนดที่อยู่ IP ผ่าน DHCP:

Udp.dstport == 67

Bootp.option.dhcp

ในการแสดงคำขอ DHCP:

Bootp.option.dhcp == 3

ในการแสดง DHCP Discover:

Bootp.option.dhcp == 1

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

Smb2.cmd == 3 หรือ smb2.cmd == 5

ฟิลเตอร์สำหรับเฟรม Wi-Fi

แสดงองค์ประกอบการจับมือ 4 ทาง (เช่น เฟรม EAPOL):

แสดงเฟรมบีคอน:

Wlan.fc.type_subtype == 0x08

แสดงกรอบการตอบสนองของโพรบ:

Wlan.fc.type_subtype == 0x05

แสดงทุกอย่างพร้อมกัน: EAPOL, บีคอน, การตอบสนองของโพรบ:

Wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol

แสดงเฟรมไร้สายสำหรับอุปกรณ์เฉพาะที่มีที่อยู่ MAC BSSID:

Wlan.addr == BSSID

แสดง EAPOL, Beacons, Probe Response สำหรับอุปกรณ์เฉพาะที่มีที่อยู่ MAC 28: 28: 5D: 6C: 16: 24:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr == 28: 28: 5D: 6C: 16:24

แสดง PMKID ทั้งหมด:

Eapol && wlan.rsn.ie.pmkid

แสดง PMKID, บีคอน, การตอบสนองของโพรบ:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid))

แสดง PMKID, บีคอน, การตอบสนองของโพรบสำหรับ AP ด้วยที่อยู่ MAC 40: 3D: EC: C2: 72: B8:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid)) && wlan.addr == 40: 3D: EC: C2: 72: B8

แสดงเฉพาะข้อความแรกของการจับมือ:

Wlan_rsna_eapol.keydes.msgrr == 1

แสดงเฉพาะข้อความที่สองของการจับมือกัน (สามารถใช้เพื่อส่งข้อความถึงการจับมือด้วยหมายเลขใดก็ได้):

Wlan_rsna_eapol.keydes.msgrr == 2

แสดงเฟรมสำหรับจุดเชื่อมต่อที่มีอัตราข้อมูล 1 Mb / s:

Wlan_radio.data_rate == 1

แสดงเฟรมสำหรับจุดเชื่อมต่อด้วยความเร็วมากกว่า 10 Mb / s:

Wlan_radio.data_rate> 10

แสดงจุดเข้าใช้งานตามความถี่เฉพาะ:

Radiotap.channel.freq == 2412

แสดงจุดเชื่อมต่อที่มีระดับสัญญาณเฉพาะ:

Wlan_radio.signal_dbm> -50

ตัวกรองที่เกี่ยวข้องกับเสาอากาศของอุปกรณ์:

Radiotap.present.antenna == 1

Radiotap.antenna == 1

หากคุณรู้จักตัวกรอง Wireshark ที่น่าสนใจอื่น ๆ โปรดแบ่งปันในความคิดเห็น

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

ในกระบวนการวิเคราะห์ปัญหาประสิทธิภาพของเครือข่ายหรือแอปพลิเคชัน หากบริษัทของคุณไม่มีระบบตรวจสอบประสิทธิภาพของแอปพลิเคชันแบบรวมศูนย์ จากนั้นในการวิเคราะห์ปัญหาจากโมเดลเครือข่าย OSI 4 ถึง 7 ชั้น คุณจะต้องใช้ตัววิเคราะห์โปรโตคอล (หรือที่รู้จักว่า sniffer) ).

หากคุณไม่มีโซลูชันเชิงพาณิชย์ที่มีเครื่องมือวิเคราะห์อัตโนมัติในตัวหรือระบบผู้เชี่ยวชาญ วิธีที่ถูกต้องที่สุดอาจเป็นดังนี้:

    ดาวน์โหลดและติดตั้งบนแล็ปท็อปหนึ่งในเครื่องมือวิเคราะห์โปรโตคอล WireShark ฟรีที่ดีที่สุด (http://www.wireshark.org/download.html);

    ทำความคุ้นเคยกับอินเทอร์เฟซ

    ตรวจสอบโปรโตคอลสแต็คและโครงสร้าง

    เรียนรู้วิธีการทำงานกับตัวกรองเพื่อดึงดูดการเข้าชม

    เรียนรู้การทำงานกับตัวกรองสำหรับการวิเคราะห์การเข้าชม

ในบทความนี้ เราจะเน้นที่จุดสุดท้าย - วิธีกำหนดค่าตัวกรองเพื่อจับภาพการรับส่งข้อมูลใน WireShark

ตัวอย่างการกำหนดค่าตัวกรอง WireShark เพื่อจับภาพการเข้าชม

หลังจากเลือกอินเทอร์เฟซแล้ว เราสามารถดำเนินการจับการรับส่งข้อมูลใน - ทั้งหมดเป็นแถว แต่ไม่แนะนำให้ทำเช่นนี้ เนื่องจากตัวอย่างเช่น ด้วยอินเทอร์เฟซกิกะบิตที่โหลด 50% ใช้เวลาเพียงไม่กี่มิลลิวินาที เพื่อส่ง 100,000 แพ็คเก็ต ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องเข้าใจว่าเรากำลังแก้ปัญหาอะไรอยู่ อย่างน้อยที่สุด เราก็จะมีที่อยู่ (IP หรือ MAC) ของผู้ใช้หรือแอปพลิเคชันที่เขากำลังบ่นอยู่หรือเซิร์ฟเวอร์ที่เขากำลังเข้าถึงอยู่

ดังนั้น ตัวกรองที่ง่ายที่สุดใน Wireshark คือที่อยู่ IP ของอุปกรณ์ (โฮสต์ โฮสต์) และตัวกรองนี้มีลักษณะดังนี้:

หากปัญหาเกิดขึ้นทั่วโลก และเราจำเป็นต้องดักจับการรับส่งข้อมูลจากซับเน็ตที่แยกจากกันโดยไม่คำนึงถึงทิศทางของการส่ง เราจะใช้ตัวกรอง:

    net 192.168.0.0/24 หรือ net 192.168.0.0 มาสก์ 255.255.255.0

เมื่อจับการรับส่งข้อมูลจากซับเน็ต ตัวกรองจะมีลักษณะดังนี้:

    src net 192.168.0.0/24 หรือ src net 192.168.0.0 มาสก์ 255.255.255.0

และหากคุณต้องการดูเฉพาะทราฟฟิกที่เข้ามายังเครือข่ายย่อยของเราเพื่อการวิเคราะห์ ให้ใช้ตัวกรองใดๆ:

    dst net 192.168.0.0/24

    dst net 192.168.0.0 มาสก์ 255.255.255.0

หากผู้ใช้บ่นว่าหน้าไม่เปิดในเบราว์เซอร์ ปัญหาอาจอยู่ที่เซิร์ฟเวอร์ DNS (พอร์ต 53) หรือกับโปรโตคอล HTTP (พอร์ต 80) จากนั้นเราจะบันทึกการรับส่งข้อมูลโดยใช้ตัวกรอง "พอร์ต":

หากเราตัดสินใจที่จะบันทึกการรับส่งข้อมูลทั้งหมดสำหรับเซิร์ฟเวอร์เฉพาะ ยกเว้น HTTP และ FTP ตัวกรองจะได้รับการกำหนดค่าตามตัวอย่างใดตัวอย่างหนึ่งจากสองตัวอย่างต่อไปนี้

    โฮสต์ 192.168.0.1 และไม่ใช่ (พอร์ต 21 หรือพอร์ต 80)

    โฮสต์ 192.168.0.1 และไม่ใช่พอร์ต 21 และไม่ใช่พอร์ต 80

หากเราต้องการดูทราฟฟิกทั้งหมดบนพอร์ต ยกเว้นสำหรับทราฟฟิก DNS, FTP, ARP ตรรกะจะคล้ายกัน:

    พอร์ตไม่ใช่ DNS และไม่ใช่ 21 และไม่ใช่ arp

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

    (tcp> 1500 และ tcp< 1550) or (tcp >1500 และtcp< 1550)

หากเป็นเวอร์ชันที่ใหม่กว่า ตัวกรองจะดูคุกคามและเข้าใจได้น้อยลง:

    tcp portrange 1501-1549

ในการจับภาพเฟรมอีเทอร์เน็ต เช่น EAPOL (โปรโตคอล EAP 802.1x เรียกว่า EAPOL (การห่อหุ้ม EAP ผ่าน LAN)):

    อีเธอร์โปรโต 0x888e

สำหรับการอ้างอิง ฉันจะแสดงรายการประเภทเฟรมอีเทอร์เน็ตสำหรับโปรโตคอลเฉพาะ:

อีเธอร์ไทป์ (เลขฐานสิบหก)

มาตรการ

0x0000 - 0x05DC

ความยาว IEEE 802.3

0x0101 - 0x01FF

IP, อินเทอร์เน็ตโปรโตคอล

ARP, โปรโตคอลการแก้ปัญหาที่อยู่

เฟรมรีเลย์ ARP

รีเลย์เฟรมดิบ

DRARP, RARP แบบไดนามิก RARP, โปรโตคอลความละเอียดที่อยู่ย้อนกลับ

Novell Netware IPX

EtherTalk (AppleTalk ผ่านอีเทอร์เน็ต)

IBM SNA Services ผ่านอีเทอร์เน็ต

AARP, AppleTalk Address Resolution Protocol

EAPS, การสลับการป้องกันอัตโนมัติของอีเธอร์เน็ต

IPX, การแลกเปลี่ยนแพ็กเก็ตอินเทอร์เน็ต

SNMP โปรโตคอลการจัดการเครือข่ายอย่างง่าย

IPv6 อินเทอร์เน็ตโปรโตคอลเวอร์ชัน 6

PPP โปรโตคอลแบบจุดต่อจุด

GSMP, โปรโตคอลการจัดการสวิตช์ทั่วไป

MPLS, การสลับป้ายกำกับหลายโปรโตคอล (unicast)

MPLS, การสลับป้ายกำกับหลายโปรโตคอล (มัลติคาสต์)

PPPoE, PPP Over Ethernet (ระยะการค้นพบ)

PPPoE, PPP Over Ethernet (ระยะเซสชัน PPP)

LWAPP โปรโตคอลจุดเชื่อมต่อน้ำหนักเบา

LLDP, Link Layer Discovery Protocol

EAPOL, EAP ผ่าน LAN

ลูปแบ็ค (โปรโตคอลทดสอบการกำหนดค่า)

ตัวระบุโปรโตคอลแท็ก VLAN

ตัวระบุโปรโตคอลแท็ก VLAN

หากคุณต้องการบันทึกการรับส่งข้อมูลของโปรโตคอล IP เฉพาะ คุณสามารถใช้ตัวกรอง:

    ip proto tcp - ดักจับทราฟฟิก TCP

    ip proto udp - ดักจับทราฟฟิก UDP

ตัวกรองที่สั้นที่สุดใช้เพื่อดักจับการรับส่งข้อมูล IP:

ในการดักจับเฉพาะทราฟฟิก unicast เมื่อวิเคราะห์ทราฟฟิกที่ส่งออกและขาเข้าไปยังอุปกรณ์เครือข่าย ตัวกรองจะถูกใช้ในรูปแบบต่อไปนี้:

    ไม่ออกอากาศและไม่มัลติคาสต์

ตัวกรองอย่างง่ายที่เราพูดถึงสามารถรวมเข้าด้วยกันโดยใช้สัญลักษณ์ง่ายๆ:

    ปฏิเสธ: ! หรือไม่

    สมาคม: && หรือและ

    ทางเลือก: IIหรือหรือ

ตัวอย่าง: ในการดักจับการรับส่งข้อมูลจากหรือไปยังอุปกรณ์ที่มีที่อยู่ 10.10.10.10 แต่ไม่ใช่จากเครือข่าย 192.168.0.0 ตัวกรองจะถูกรวมเข้ากับการปฏิเสธ:

    โฮสต์ 10.10.10.10 &&! net 192.168

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

ย้ายแปดไบต์ในแพ็กเก็ต IP และจับทราฟฟิกด้วย TTL = 1

ดักจับแพ็กเก็ต TCP ทั้งหมดที่มีที่อยู่พอร์ตต้นทาง 80 ซึ่งเทียบเท่ากับตัวกรองพอร์ต src 80

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

ฟิลด์ในแพ็คเกจ

ความยาวเป็นไบต์

กรอง

ความยาวส่วนหัวของ IP

ความยาวของแพ็กเก็ต IP

ที่มาของที่อยู่ IP

ปลายทางที่อยู่ IP

IP Fragmentation

แฟล็ก = 3 และออฟเซ็ต = 13

ip & 0x2000 = 0x2000 หรือ ip & 0x1fff! = 0x0000

พอร์ตปลายทาง TCP

ความยาวส่วนหัว TCP

เพื่อรวมข้อมูลที่ได้รับ เราจะสร้างตัวกรองสำหรับจับการรับส่งข้อมูลด้วยคำขอ HTTP GET HTTP ใช้พอร์ต 80 ซึ่งเป็นโปรโตคอลการขนส่ง TCP ค่าเลขฐานสิบหกของคำว่า GET จะมีลักษณะดังนี้ 0x47455420 ตัวอย่างตัวกรองที่เราได้รับ:

    พอร์ต 80 และ tcp [((tcp & 0xf0 >> 2): 4] = 0x47455420

ในบทความนี้ เราได้พูดถึงวิธีกำหนดค่าและใช้ตัวกรองพื้นฐานที่สุดสำหรับการรับส่งข้อมูลโดยใช้ตัววิเคราะห์โปรโตคอล Wireshark

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

ในกระบวนการวิเคราะห์ปัญหาประสิทธิภาพของเครือข่ายหรือแอปพลิเคชัน หากบริษัทของคุณไม่มีระบบตรวจสอบประสิทธิภาพของแอปพลิเคชันแบบรวมศูนย์ จากนั้นในการวิเคราะห์ปัญหาจากโมเดลเครือข่าย OSI 4 ถึง 7 ชั้น คุณจะต้องใช้ตัววิเคราะห์โปรโตคอล (หรือที่รู้จักว่า sniffer) ).

หากคุณไม่มีโซลูชันเชิงพาณิชย์ที่มีเครื่องมือวิเคราะห์อัตโนมัติในตัวหรือระบบผู้เชี่ยวชาญ วิธีที่ถูกต้องที่สุดอาจเป็นดังนี้:

    ดาวน์โหลดและติดตั้งบนแล็ปท็อปหนึ่งในเครื่องมือวิเคราะห์โปรโตคอล WireShark ฟรีที่ดีที่สุด (http://www.wireshark.org/download.html);

    ทำความคุ้นเคยกับอินเทอร์เฟซ

    ตรวจสอบโปรโตคอลสแต็คและโครงสร้าง

    เรียนรู้วิธีการทำงานกับตัวกรองเพื่อดึงดูดการเข้าชม

    เรียนรู้การทำงานกับตัวกรองสำหรับการวิเคราะห์การเข้าชม

ในบทความนี้ เราจะเน้นที่จุดสุดท้าย - วิธีกำหนดค่าตัวกรองเพื่อจับภาพการรับส่งข้อมูลใน WireShark

ตัวอย่างการกำหนดค่าตัวกรอง WireShark เพื่อจับภาพการเข้าชม

หลังจากเลือกอินเทอร์เฟซแล้ว เราสามารถดำเนินการจับการรับส่งข้อมูลใน - ทั้งหมดเป็นแถว แต่ไม่แนะนำให้ทำเช่นนี้ เนื่องจากตัวอย่างเช่น ด้วยอินเทอร์เฟซกิกะบิตที่โหลด 50% ใช้เวลาเพียงไม่กี่มิลลิวินาที เพื่อส่ง 100,000 แพ็คเก็ต ดังนั้นจึงเป็นสิ่งสำคัญที่จะต้องเข้าใจว่าเรากำลังแก้ปัญหาอะไรอยู่ อย่างน้อยที่สุด เราก็จะมีที่อยู่ (IP หรือ MAC) ของผู้ใช้หรือแอปพลิเคชันที่เขากำลังบ่นอยู่หรือเซิร์ฟเวอร์ที่เขากำลังเข้าถึงอยู่

ดังนั้น ตัวกรองที่ง่ายที่สุดใน Wireshark คือที่อยู่ IP ของอุปกรณ์ (โฮสต์ โฮสต์) และตัวกรองนี้มีลักษณะดังนี้:

หากปัญหาเกิดขึ้นทั่วโลก และเราจำเป็นต้องดักจับการรับส่งข้อมูลจากซับเน็ตที่แยกจากกันโดยไม่คำนึงถึงทิศทางของการส่ง เราจะใช้ตัวกรอง:

    net 192.168.0.0/24 หรือ net 192.168.0.0 มาสก์ 255.255.255.0

เมื่อจับการรับส่งข้อมูลจากซับเน็ต ตัวกรองจะมีลักษณะดังนี้:

    src net 192.168.0.0/24 หรือ src net 192.168.0.0 มาสก์ 255.255.255.0

และหากคุณต้องการดูเฉพาะทราฟฟิกที่เข้ามายังเครือข่ายย่อยของเราเพื่อการวิเคราะห์ ให้ใช้ตัวกรองใดๆ:

    dst net 192.168.0.0/24

    dst net 192.168.0.0 มาสก์ 255.255.255.0

หากผู้ใช้บ่นว่าหน้าไม่เปิดในเบราว์เซอร์ ปัญหาอาจอยู่ที่เซิร์ฟเวอร์ DNS (พอร์ต 53) หรือกับโปรโตคอล HTTP (พอร์ต 80) จากนั้นเราจะบันทึกการรับส่งข้อมูลโดยใช้ตัวกรอง "พอร์ต":

หากเราตัดสินใจที่จะบันทึกการรับส่งข้อมูลทั้งหมดสำหรับเซิร์ฟเวอร์เฉพาะ ยกเว้น HTTP และ FTP ตัวกรองจะได้รับการกำหนดค่าตามตัวอย่างใดตัวอย่างหนึ่งจากสองตัวอย่างต่อไปนี้

    โฮสต์ 192.168.0.1 และไม่ใช่ (พอร์ต 21 หรือพอร์ต 80)

    โฮสต์ 192.168.0.1 และไม่ใช่พอร์ต 21 และไม่ใช่พอร์ต 80

หากเราต้องการดูทราฟฟิกทั้งหมดบนพอร์ต ยกเว้นสำหรับทราฟฟิก DNS, FTP, ARP ตรรกะจะคล้ายกัน:

    พอร์ตไม่ใช่ DNS และไม่ใช่ 21 และไม่ใช่ arp

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

    (tcp> 1500 และ tcp< 1550) or (tcp >1500 และtcp< 1550)

หากเป็นเวอร์ชันที่ใหม่กว่า ตัวกรองจะดูคุกคามและเข้าใจได้น้อยลง:

    tcp portrange 1501-1549

ในการจับภาพเฟรมอีเทอร์เน็ต เช่น EAPOL (โปรโตคอล EAP 802.1x เรียกว่า EAPOL (การห่อหุ้ม EAP ผ่าน LAN)):

    อีเธอร์โปรโต 0x888e

สำหรับการอ้างอิง ฉันจะแสดงรายการประเภทเฟรมอีเทอร์เน็ตสำหรับโปรโตคอลเฉพาะ:

อีเธอร์ไทป์ (เลขฐานสิบหก)

มาตรการ

0x0000 - 0x05DC

ความยาว IEEE 802.3

0x0101 - 0x01FF

IP, อินเทอร์เน็ตโปรโตคอล

ARP, โปรโตคอลการแก้ปัญหาที่อยู่

เฟรมรีเลย์ ARP

รีเลย์เฟรมดิบ

DRARP, RARP แบบไดนามิก RARP, โปรโตคอลความละเอียดที่อยู่ย้อนกลับ

Novell Netware IPX

EtherTalk (AppleTalk ผ่านอีเทอร์เน็ต)

IBM SNA Services ผ่านอีเทอร์เน็ต

AARP, AppleTalk Address Resolution Protocol

EAPS, การสลับการป้องกันอัตโนมัติของอีเธอร์เน็ต

IPX, การแลกเปลี่ยนแพ็กเก็ตอินเทอร์เน็ต

SNMP โปรโตคอลการจัดการเครือข่ายอย่างง่าย

IPv6 อินเทอร์เน็ตโปรโตคอลเวอร์ชัน 6

PPP โปรโตคอลแบบจุดต่อจุด

GSMP, โปรโตคอลการจัดการสวิตช์ทั่วไป

MPLS, การสลับป้ายกำกับหลายโปรโตคอล (unicast)

MPLS, การสลับป้ายกำกับหลายโปรโตคอล (มัลติคาสต์)

PPPoE, PPP Over Ethernet (ระยะการค้นพบ)

PPPoE, PPP Over Ethernet (ระยะเซสชัน PPP)

LWAPP โปรโตคอลจุดเชื่อมต่อน้ำหนักเบา

LLDP, Link Layer Discovery Protocol

EAPOL, EAP ผ่าน LAN

ลูปแบ็ค (โปรโตคอลทดสอบการกำหนดค่า)

ตัวระบุโปรโตคอลแท็ก VLAN

ตัวระบุโปรโตคอลแท็ก VLAN

หากคุณต้องการบันทึกการรับส่งข้อมูลของโปรโตคอล IP เฉพาะ คุณสามารถใช้ตัวกรอง:

    ip proto tcp - ดักจับทราฟฟิก TCP

    ip proto udp - ดักจับทราฟฟิก UDP

ตัวกรองที่สั้นที่สุดใช้เพื่อดักจับการรับส่งข้อมูล IP:

ในการดักจับเฉพาะทราฟฟิก unicast เมื่อวิเคราะห์ทราฟฟิกที่ส่งออกและขาเข้าไปยังอุปกรณ์เครือข่าย ตัวกรองจะถูกใช้ในรูปแบบต่อไปนี้:

    ไม่ออกอากาศและไม่มัลติคาสต์

ตัวกรองอย่างง่ายที่เราพูดถึงสามารถรวมเข้าด้วยกันโดยใช้สัญลักษณ์ง่ายๆ:

    ปฏิเสธ: ! หรือไม่

    สมาคม: && หรือและ

    ทางเลือก: IIหรือหรือ

ตัวอย่าง: ในการดักจับการรับส่งข้อมูลจากหรือไปยังอุปกรณ์ที่มีที่อยู่ 10.10.10.10 แต่ไม่ใช่จากเครือข่าย 192.168.0.0 ตัวกรองจะถูกรวมเข้ากับการปฏิเสธ:

    โฮสต์ 10.10.10.10 &&! net 192.168

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

ย้ายแปดไบต์ในแพ็กเก็ต IP และจับทราฟฟิกด้วย TTL = 1

ดักจับแพ็กเก็ต TCP ทั้งหมดที่มีที่อยู่พอร์ตต้นทาง 80 ซึ่งเทียบเท่ากับตัวกรองพอร์ต src 80

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

ฟิลด์ในแพ็คเกจ

ความยาวเป็นไบต์

กรอง

ความยาวส่วนหัวของ IP

ความยาวของแพ็กเก็ต IP

ที่มาของที่อยู่ IP

ปลายทางที่อยู่ IP

IP Fragmentation

แฟล็ก = 3 และออฟเซ็ต = 13

ip & 0x2000 = 0x2000 หรือ ip & 0x1fff! = 0x0000

พอร์ตปลายทาง TCP

ความยาวส่วนหัว TCP

เพื่อรวมข้อมูลที่ได้รับ เราจะสร้างตัวกรองสำหรับจับการรับส่งข้อมูลด้วยคำขอ HTTP GET HTTP ใช้พอร์ต 80 ซึ่งเป็นโปรโตคอลการขนส่ง TCP ค่าเลขฐานสิบหกของคำว่า GET จะมีลักษณะดังนี้ 0x47455420 ตัวอย่างตัวกรองที่เราได้รับ:

    พอร์ต 80 และ tcp [((tcp & 0xf0 >> 2): 4] = 0x47455420

ในบทความนี้ เราได้พูดถึงวิธีกำหนดค่าและใช้ตัวกรองพื้นฐานที่สุดสำหรับการรับส่งข้อมูลโดยใช้ตัววิเคราะห์โปรโตคอล Wireshark