ตัววิเคราะห์แพ็คเก็ตเครือข่าย ความพร้อมใช้งาน ต้นทุน ความต้องการของระบบ

ต้นฉบับ: การจับแพ็คเก็ตในโปรแกรม C ของคุณด้วย libpcap
ผู้เขียน : ปันกัจ ตันวาร์
วันที่เผยแพร่: 1 กุมภาพันธ์ 2554
แปล: อ. ภานิน
วันที่แปล: 11 ตุลาคม 2555

บทความนี้จะให้ภาพรวมของฟังก์ชันหลักของไลบรารี libpcap และแสดงตัวอย่างการสร้างโปรแกรมดักจับแพ็กเก็ต

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

คำว่า "แพ็กเก็ต" ถูกนำมาใช้ครั้งแรกในระดับเครือข่าย โปรโตคอลหลักในระดับนี้คือ: IP (Internet Protocol), ICMP (Internet Control Message Protocol), IGMP (Internet Group Management Protocol) และ IPsec (ชุดโปรโตคอลสำหรับรับรองการปกป้องข้อมูลที่ส่งผ่านโปรโตคอล IP) โปรโตคอลชั้นการขนส่งประกอบด้วย TCP (Transmission Control Protocol) ซึ่งมุ่งเน้นที่การสร้างการเชื่อมต่อแบบถาวร UDP (User Datagram Protocol) ซึ่งไม่ต้องการการเชื่อมต่อแบบถาวร SCTP (Stream Control Transmission Protocol) รวมคุณสมบัติของทั้งสองโปรโตคอลข้างต้น เลเยอร์แอปพลิเคชันประกอบด้วยโปรโตคอลที่ใช้กันทั่วไปมากมาย เช่น HTTP, FTP, IMAP, SMTP และอื่นๆ อีกมากมาย

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

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

พื้นฐาน libpcap

ไลบรารี libpcap เป็นไลบรารีโอเพ่นซอร์สที่ไม่ขึ้นอยู่กับแพลตฟอร์ม (เวอร์ชัน Windows เรียกว่า winpcap) นักดมกลิ่น tcpdump และ Wireshark ชื่อดังใช้ไลบรารีนี้ในการทำงาน

เพื่อพัฒนาโปรแกรมของเรา เราจำเป็นต้องมีอินเทอร์เฟซเครือข่ายที่จะจับแพ็กเก็ต เราสามารถกำหนดอุปกรณ์นี้เองหรือใช้ฟังก์ชันที่ libpcap ให้ไว้: ถ่าน *pcap_lookupdev(ถ่าน *errbuf).

ฟังก์ชันนี้ส่งคืนตัวชี้ไปยังสตริงที่มีชื่อของอินเทอร์เฟซเครือข่ายแรกที่เหมาะสมสำหรับการจับแพ็คเก็ต หากมีข้อผิดพลาดเกิดขึ้น ระบบจะส่งคืนค่า NULL (ซึ่งก็เป็นจริงสำหรับฟังก์ชัน libpcap อื่นๆ ด้วย) อาร์กิวเมนต์ errbuf มีวัตถุประสงค์เพื่อเป็นบัฟเฟอร์ผู้ใช้ซึ่งข้อความแสดงข้อผิดพลาดจะถูกวางไว้หากมีข้อผิดพลาดเกิดขึ้น - สะดวกมากเมื่อทำการดีบักโปรแกรม ขนาดของบัฟเฟอร์นี้ต้องมีอย่างน้อย PCAP_ERRBUF_SIZE (by ในขณะนี้ 256) ไบต์

การทำงานกับอุปกรณ์

ต่อไปเราจะเปิดรายการที่เลือก อุปกรณ์เครือข่ายโดยใช้ฟังก์ชัน pcap_t *pcap_open_live (อุปกรณ์ const char *, int snaplen, int Promisc, int to_ms, ถ่าน * errbuf)- โดยส่งคืนตัวระบุอุปกรณ์ ซึ่งแสดงเป็นตัวแปรประเภท pcap_t ซึ่งสามารถใช้ในฟังก์ชัน libpcap อื่นๆ ได้ อาร์กิวเมนต์แรกคืออินเทอร์เฟซเครือข่ายที่เราต้องการทำงานด้วย อาร์กิวเมนต์ที่สองคือ ขนาดสูงสุดบัฟเฟอร์สำหรับบันทึกข้อมูลเป็นไบต์

การตั้งค่าพารามิเตอร์ตัวที่สองเป็นค่าต่ำสุดจะมีประโยชน์เมื่อคุณต้องการจับเฉพาะส่วนหัวของแพ็กเก็ตเท่านั้น ขนาดของเฟรมอีเทอร์เน็ตคือ 1518 ไบต์ ค่า 65535 จะเพียงพอที่จะจับแพ็กเก็ตจากเครือข่ายใดก็ได้ อาร์กิวเมนต์ Promisc ระบุว่าอุปกรณ์จะทำงานในโหมดที่หลากหลายหรือไม่ (ในโหมดที่หลากหลาย การ์ดเครือข่ายจะสร้างการขัดจังหวะสำหรับข้อมูลทั้งหมดที่ได้รับ ไม่ใช่แค่ข้อมูลที่ตรงกับที่อยู่ MAC อ่านเพิ่มเติมใน Wikipedia)

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

การเก็บข้อมูล

ตอนนี้เราต้องเริ่มจับแพ็คเก็ต ลองใช้ฟังก์ชันกัน u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)- ที่นี่ *p เป็นตัวชี้ที่ส่งคืนโดย pcap_open_live() ; อาร์กิวเมนต์ถัดไปคือตัวชี้ไปยังตัวแปรประเภท struct pcap_pkthdr ซึ่งส่งคืนแพ็กเก็ตแรกที่ได้รับ

การทำงาน int pcap_loop (pcap_t *p, int cnt, โทรกลับ pcap_handler, u_char * ผู้ใช้)ใช้ในการประกอบบรรจุภัณฑ์และแปรรูป ส่งคืนจำนวนแพ็กเก็ตที่ระบุโดยอาร์กิวเมนต์ cnt ฟังก์ชั่นการโทรกลับใช้ในการประมวลผลแพ็กเก็ตที่ได้รับ (เราจะต้องกำหนดฟังก์ชันนี้) สำหรับการโอน ข้อมูลเพิ่มเติมในฟังก์ชันนี้ เราจะใช้พารามิเตอร์ *user ซึ่งเป็นตัวชี้ไปยังตัวแปรประเภท u_char (เราจะต้องทำการแปลงประเภทของเราเอง ขึ้นอยู่กับประเภทข้อมูลที่ต้องการที่ส่งไปยังฟังก์ชัน)

ต้นแบบฟังก์ชันการเรียกกลับมีลักษณะดังนี้: เป็นโมฆะ callback_function (u_char *arg, const struct pcap_pkthdr* pkthdr, const u_char* แพ็กเก็ต)- อาร์กิวเมนต์แรกคือ *อาร์กิวเมนต์ผู้ใช้ที่ส่งผ่านไปยัง pcap_loop() ; อาร์กิวเมนต์ถัดไปคือตัวชี้ไปยังโครงสร้างที่มีข้อมูลเกี่ยวกับแพ็กเก็ตที่ได้รับ ฟิลด์ของโครงสร้าง struct pcap_pkthdr แสดงอยู่ด้านล่าง (นำมาจากไฟล์ pcap.h): struct pcap_pkthdr ( struct timeval ts; /* การประทับเวลา */ bpf_u_int32 caplen; /* ความยาวของส่วนปัจจุบัน */ bpf_u_int32 len ; /* ความยาว ของแพ็กเก็ตนี้ (ปิดสาย) */ )

อีกทางเลือกหนึ่งของ pcap_loop() คือฟังก์ชัน pcap_dispatch (pcap_t *p, int cnt, โทรกลับ pcap_handler, u_char * ผู้ใช้)- ข้อแตกต่างเพียงอย่างเดียวคือฟังก์ชันนี้จะส่งคืนผลลัพธ์หลังจากเวลาที่ระบุเมื่อการโทร pcap_open_live() ผ่านไป

การกรองการจราจร

จนถึงขณะนี้ เราได้รับแพ็กเก็ตทั้งหมดที่มาถึงอินเทอร์เฟซเครือข่าย ตอนนี้เรามาใช้ฟังก์ชัน pcap ซึ่งช่วยให้คุณสามารถกรองการรับส่งข้อมูลที่มาถึงพอร์ตที่กำหนดได้ นอกจากนี้เรายังสามารถใช้ฟังก์ชันนี้เพื่อทำงานกับแพ็กเก็ตสำหรับโปรโตคอลที่กำหนดเท่านั้น เช่น ARP หรือ FTP ก่อนอื่นเราต้องสร้างตัวกรองโดยใช้ ฟังก์ชั่นนี้: int pcap_compile(pcap_t *p, struct bpf_program *fp, const char *str, int ปรับให้เหมาะสม, หน้ากาก bpf_u_int32);

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

อาร์กิวเมนต์ถัดไปจะตั้งค่าสถานะการปรับให้เหมาะสม (0 - ไม่ปรับให้เหมาะสม, 1 - ปรับให้เหมาะสม) ถัดมาคือเน็ตเวิร์กมาสก์ที่ตัวกรองใช้งานได้ ฟังก์ชันส่งคืน -1 ในกรณีที่เกิดข้อผิดพลาด (หากตรวจพบข้อผิดพลาดในนิพจน์)

หลังจากคอมไพล์แล้ว ลองใช้ฟิลเตอร์โดยใช้ฟังก์ชันดู int pcap_setfilter (pcap_t *p, struct bpf_program *fp)- อาร์กิวเมนต์ที่สองของฟังก์ชันคือเวอร์ชันที่คอมไพล์ของนิพจน์สำหรับการกรองการรับส่งข้อมูล

การรับข้อมูล IPv4

Int pcap_lookupnet (อุปกรณ์ const ถ่าน, bpf_u_int32 * netp, bpf_u_int32 * maskp, ถ่าน * errbuf)

เมื่อใช้ฟังก์ชันนี้ คุณจะสามารถรับที่อยู่เครือข่าย IPv4 และเน็ตเวิร์กมาสก์ที่กำหนดให้กับอินเทอร์เฟซเครือข่ายที่กำหนดได้ ที่อยู่เครือข่ายจะถูกเขียนที่ *netp และเน็ตเวิร์กมาสก์ที่ *mask

โปรแกรมจับแพ็คเก็ตขนาดเล็ก

ตอนนี้เรามาเขียนโปรแกรมที่จะช่วยให้เราเข้าใจว่า pcap ทำงานอย่างไร ลองเรียกไฟล์ด้วยซอร์สโค้ด sniff.c นี่เป็นโปรแกรมจากส่วนคู่มือของ tcpdump.org ประพันธ์โดย Martin Casado ก่อนอื่น เรามารวมไฟล์ส่วนหัวที่จำเป็นกันก่อน #รวม #รวม #รวม #รวม #รวม #รวม #รวม

#รวม

ทีนี้มาดูฟังก์ชัน main() กันดีกว่า ที่นี่เราใช้ฟังก์ชันที่เราวิเคราะห์ไว้ก่อนหน้านี้: int main(int argc,char **argv) ( int i; char *dev; char errbuf; pcap_t* descr; const u_char *packet; struct pcap_pkthdr hdr; struct ether_header *eptr; / * net/ethernet.h */ struct bpf_program fp; /* นิพจน์การกรองที่ประกอบด้วย */ bpf_u_int32 maskp; /* subnet mask */ bpf_u_int32 netp; /* ip */ if(argc != 2)( fprintf(stdout, " การใช้งาน: %s \"expression\"\n" ,argv); return 0; /* รับชื่ออุปกรณ์ */ dev = pcap_lookupdev(errbuf); if(dev == NULL) ( fprintf(stderr, "%s \ n", errbuf); exit(1); ) /* รับที่อยู่เครือข่ายและ netmask สำหรับอุปกรณ์ */ pcap_lookupnet(dev, &netp, &maskp, errbuf); /* การเปิดอุปกรณ์ในโหมดที่หลากหลาย */ descr = pcap_open_live( dev, BUFSIZ, 1,-1, errbuf); if(descr == NULL) ( printf("pcap_open_live(): %s\n", errbuf); exit(1); ) /* ตอนนี้นิพจน์ตัวกรองถูกเขียนแล้ว */ if(pcap_compile(descr, &fp, argv, 0, netp) == -1) ( fprintf(stderr, "เกิดข้อผิดพลาดในการเรียก pcap_compile\n");

ออก(1);

) /* การใช้ตัวกรอง */ if(pcap_setfilter(descr, &fp) == -1) ( fprintf(stderr, "Error setting filter\n"); exit(1); ) /* ฟังก์ชั่นโทรกลับที่ใช้ในการวนซ้ำ * / pcap_loop(คำอธิบาย, -1, my_callback, NULL);

กลับ 0; -

คอมไพล์โปรแกรมโดยใช้คำสั่งด้านล่างและรันในฐานะรูท (จำเป็นสำหรับการเปิดใช้งานโหมดที่หลากหลาย): $ gcc -lpcap sniff.c -o sniffer # ./sniffer ip

รูปที่ 1 แสดงตัวอย่างเอาต์พุตของโปรแกรม len;i++) ( if(isprint(packet[i])) /* ตรวจสอบว่าอักขระนั้นสามารถพิมพ์ได้หรือไม่ */ printf("%c ",packet[i]); /* พิมพ์อักขระ */ else printf(" . " ,packet[i]); /* หากไม่สามารถพิมพ์อักขระได้ */ if((i%16==0 && i!=0) || i==pkthdr->len-1) printf("\n " ); ) )

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


รูปที่ 2: เอาต์พุตแสดงเนื้อหาของแพ็กเก็ต

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

Wireshark ใช้ไลบรารี libpcap หรือ WinPcap สำหรับ Windows เพื่อบันทึกการรับส่งข้อมูลเครือข่าย ไลบรารี WinPcap ไม่รองรับการใช้ระบบไร้สาย การ์ดเครือข่ายดังนั้นจึงไม่อนุญาตให้คุณบันทึกการรับส่งข้อมูล Wi-Fi โดยตรง โดยใช้ Wiresharkและแอปพลิเคชันอื่นๆ เช่น Cain & Abel หรือ Elcomsoft Wireless Security Auditor สำหรับ Windows

ข้อจำกัดการรับส่งข้อมูล WinPcap และ Wi-Fi ใน Wireshark

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

มีไดรเวอร์ของตัวเองสำหรับการดักจับการรับส่งข้อมูลโดยใช้เทคโนโลยี NDIS จับการรับส่งข้อมูลบนเครือข่าย WiFi ใน Windows OS และอนุญาต บันทึกการรับส่งข้อมูลไร้สายโดยใช้ Wireshark บน Windowsวิสตา, วินโดวส์ 7, วินโดวส์ 8 และวินโดวส์ 8.1 การใช้ไดรเวอร์นี้ทำให้คุณสามารถจัดเตรียมโปรแกรมอื่นๆ โดยอัตโนมัติเพื่อวิเคราะห์การรับส่งข้อมูล Wi-Fi พร้อมความสามารถในการเก็บข้อมูลบนเครือข่ายไร้สายภายใต้ Windows

ไดรเวอร์ NDIS และอินเทอร์เฟซ WiFi ใน Wireshark

เพื่อเปิดใช้งานการโต้ตอบนี้ Acrylic จะติดตั้งไลบรารีของตัวเองบนคอมพิวเตอร์ airpcap.dllโดยจำลองไลบรารีของการ์ด AirPcap ดั้งเดิม เมื่อ Wireshark โหลดสิ่งที่เกี่ยวข้อง ไลบรารีระบบ AirPcap by Acrylic ไลบรารีจะส่งคืนรายการจำลองของอุปกรณ์ AirPcap ที่ติดตั้ง หนึ่งรายการสำหรับแต่ละรายการ แผนที่ภายใน Wi-Fi หรืออะแดปเตอร์ Wi-Fi USB ภายนอก

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

โดยคลิกที่ปุ่ม "การตั้งค่า" เครือข่ายไร้สาย» ( “การตั้งค่าไร้สาย”) คุณสามารถเลือกตัวเลือกเพิ่มเติมได้ เช่น ช่อง Wi-Fi เพื่อตรวจสอบและเปิดใช้งานการตรวจสอบ FCS FCS คือลำดับการตรวจสอบเฟรมที่ช่วยให้คุณกำหนดความสมบูรณ์ของแพ็กเก็ต Wi-Fi และละทิ้งแพ็กเก็ตที่ส่งไม่ถูกต้อง

บันทึกการรับส่งข้อมูล Wi-Fi โดยใช้ Wireshark บน Windows

ดังนั้นหลังการติดตั้ง ให้รัน Wireshark ในฐานะผู้ดูแลระบบ (คลิกขวาที่ทางลัด Wireshark แล้วเลือก “Run as Administrator”) จากนั้นเลือกการ์ดที่มีการกำหนดอินเทอร์เฟซเครือข่าย NDIS จากรายการ ในกรณีของเรา นี่คือ Wi-Fi ในตัว การ์ดเดลล์ (เดลล์ไร้สาย 1702/b/g/n)

วิดีโอคำแนะนำการใช้ Acrylic WiFi กับ Wireshark บน Windows

เราได้เตรียมวิดีโอสาธิตกระบวนการที่จะช่วยคุณได้หากคุณยังมีคำถามหรือต้องการดูว่าการรับส่งข้อมูลแบบไร้สายโดยใช้อุปกรณ์ใด ๆ การ์ด Wi-Fiใน Wireshark สำหรับ Windows

Intercepter-NG คืออะไร

เรามาพิจารณาสาระสำคัญของการทำงานของ ARP กัน ตัวอย่างง่ายๆ- คอมพิวเตอร์ A (ที่อยู่ IP 10.0.0.1) และคอมพิวเตอร์ B (ที่อยู่ IP 10.22.22.2) เชื่อมต่อกันด้วยเครือข่ายอีเธอร์เน็ต คอมพิวเตอร์ A ต้องการส่งแพ็กเก็ตข้อมูลไปยังคอมพิวเตอร์ B โดยรู้ที่อยู่ IP ของคอมพิวเตอร์ B อย่างไรก็ตาม เครือข่ายอีเทอร์เน็ตที่เชื่อมต่ออยู่ใช้งานไม่ได้กับที่อยู่ IP ดังนั้นในการส่งผ่านอีเธอร์เน็ต คอมพิวเตอร์ A จำเป็นต้องทราบที่อยู่ของคอมพิวเตอร์ B บนเครือข่ายอีเธอร์เน็ต (ที่อยู่ MAC ในแง่อีเธอร์เน็ต) โปรโตคอล ARP ใช้สำหรับงานนี้ เมื่อใช้โปรโตคอลนี้ คอมพิวเตอร์ A จะส่งคำขอออกอากาศไปยังคอมพิวเตอร์ทุกเครื่องในโดเมนออกอากาศเดียวกัน สาระสำคัญของคำขอ: “คอมพิวเตอร์ที่มีที่อยู่ IP 10.22.22.2 ให้ที่อยู่ MAC ของคุณแก่คอมพิวเตอร์ที่มีที่อยู่ MAC (เช่น a0:ea:d1:11:f1:01)” เครือข่ายอีเธอร์เน็ตส่งคำขอนี้ไปยังอุปกรณ์ทั้งหมดบนเซกเมนต์อีเธอร์เน็ตเดียวกัน รวมถึงคอมพิวเตอร์ B คอมพิวเตอร์ B ตอบสนองต่อคอมพิวเตอร์ A ตามคำขอและรายงานที่อยู่ MAC ของมัน (เช่น 00:ea:d1:11:f1:11) ตอนนี้ มี ได้รับที่อยู่ MAC ของคอมพิวเตอร์ B คอมพิวเตอร์ A สามารถส่งข้อมูลใด ๆ ไปยังคอมพิวเตอร์นั้นผ่านเครือข่ายอีเธอร์เน็ต

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

อย่างที่เราเพิ่งเห็น ARP ได้รวมคำขอและการตอบกลับไว้ด้วย ที่อยู่ MAC จากการตอบกลับถูกเขียนลงในตาราง MAC/IP เมื่อได้รับการตอบกลับ จะไม่ตรวจสอบความถูกต้องแต่อย่างใด ยิ่งไปกว่านั้น มันไม่ได้ตรวจสอบด้วยซ้ำว่ามีการร้องขอหรือไม่ เหล่านั้น. คุณสามารถส่งการตอบสนอง ARP ไปยังอุปกรณ์เป้าหมายได้ทันที (แม้ว่าจะไม่มีการร้องขอก็ตาม) ด้วยข้อมูลที่ปลอมแปลง และข้อมูลนี้จะจบลงในตาราง MAC/IP และจะถูกใช้สำหรับการถ่ายโอนข้อมูล นี่คือแก่นแท้ของการโจมตีด้วยการปลอมแปลง ARP ซึ่งบางครั้งเรียกว่า ARP etching หรือ ARP cache Poisoning

คำอธิบายของการโจมตีด้วยการปลอมแปลง ARP

คอมพิวเตอร์สองเครื่อง (โหนด) M และ N บนข้อความแลกเปลี่ยนเครือข่ายท้องถิ่นอีเทอร์เน็ต ผู้โจมตี X ซึ่งอยู่บนเครือข่ายเดียวกัน ต้องการสกัดกั้นข้อความระหว่างโหนดเหล่านี้ ก่อนที่จะใช้การโจมตีด้วยการปลอมแปลง ARP บนอินเทอร์เฟซเครือข่ายของโฮสต์ M ตาราง ARP จะมี IP และ ที่อยู่ MACโหนด N นอกจากนี้บนอินเทอร์เฟซเครือข่ายของโหนด N ตาราง ARP ยังมี IP และ MAC ของโหนด M

ในระหว่างการโจมตีด้วยการปลอมแปลง ARP โหนด X (ผู้โจมตี) จะส่งการตอบสนอง ARP สองครั้ง (โดยไม่ต้องร้องขอ) ไปยังโหนด M และโหนด N การตอบสนองของ ARP ไปยังโหนด M ประกอบด้วยที่อยู่ IP ของ N และที่อยู่ MAC ของ X การตอบสนอง ARP ไปยังโหนด N มีที่อยู่ IP M และที่อยู่ MAC X

เนื่องจากคอมพิวเตอร์ M และ N รองรับ ARP ที่เกิดขึ้นเอง หลังจากได้รับการตอบกลับ ARP พวกเขาจึงเปลี่ยนตาราง ARP และตอนนี้ตาราง ARP M มีที่อยู่ MAC X ที่เชื่อมโยงกับที่อยู่ IP N และตาราง ARP N มีที่อยู่ MAC X ผูกไว้กับที่อยู่ IP M.

ดังนั้นการโจมตีด้วยการปลอมแปลง ARP จึงเสร็จสิ้น และตอนนี้แพ็กเก็ต (เฟรม) ทั้งหมดระหว่าง M และ N จะส่งผ่าน X ตัวอย่างเช่น หาก M ต้องการส่งแพ็กเก็ตไปยังคอมพิวเตอร์ N จากนั้น M จะค้นหาในตาราง ARP และค้นหารายการ ด้วยที่อยู่ IP ของโฮสต์ N เลือกที่อยู่ MAC จากที่นั่น (และมีที่อยู่ MAC ของโหนด X อยู่แล้ว) และส่งแพ็กเก็ต แพ็กเก็ตมาถึงอินเทอร์เฟซ X ได้รับการวิเคราะห์ จากนั้นส่งต่อไปยังโหนด N

ตัววิเคราะห์แพ็กเก็ตเครือข่ายหรือตัวดมกลิ่นได้รับการพัฒนาขึ้นเพื่อใช้แก้ปัญหา ปัญหาเครือข่าย- พวกเขาสามารถดักจับ ตีความ และจัดเก็บแพ็กเก็ตที่ส่งผ่านเครือข่ายเพื่อการวิเคราะห์ในภายหลัง ประการหนึ่ง ช่วยให้ผู้ดูแลระบบและวิศวกรฝ่ายสนับสนุนด้านเทคนิคสามารถสังเกตวิธีการถ่ายโอนข้อมูลผ่านเครือข่าย วินิจฉัยและแก้ไขปัญหาที่เกิดขึ้นได้ ในแง่นี้ Packet Sniffers เป็นเครื่องมือที่มีประสิทธิภาพในการวินิจฉัยปัญหาเครือข่าย ในทางกลับกัน เช่นเดียวกับเครื่องมืออันทรงพลังอื่น ๆ อีกมากมายที่เดิมมีจุดประสงค์เพื่อการบริหาร เมื่อเวลาผ่านไป นักดมกลิ่นเริ่มถูกนำมาใช้เพื่อจุดประสงค์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง แท้จริงแล้วการดมกลิ่นในมือของผู้โจมตีเป็นเครื่องมือที่ค่อนข้างอันตรายและสามารถใช้เพื่อรับรหัสผ่านและข้อมูลที่เป็นความลับอื่น ๆ อย่างไรก็ตาม คุณไม่ควรคิดว่าการดมกลิ่นเป็นเครื่องมือวิเศษชนิดหนึ่งที่แฮ็กเกอร์สามารถดูข้อมูลที่เป็นความลับที่ส่งผ่านเครือข่ายได้อย่างง่ายดาย และก่อนที่เราจะพิสูจน์ว่าอันตรายที่เกิดจากนักดมกลิ่นนั้นไม่มากเท่าที่มักเกิดขึ้น ให้เราพิจารณารายละเอียดเพิ่มเติมเกี่ยวกับหลักการทำงานของพวกมัน

หลักการทำงานของเครื่องดมกลิ่นแพ็กเก็ต

นอกจากนี้ในบทความนี้เราจะพิจารณาเฉพาะซอฟต์แวร์ดมกลิ่นที่ออกแบบมาเพื่อเท่านั้น เครือข่ายอีเทอร์เน็ต- Sniffer เป็นโปรแกรมที่ทำงานในระดับ NIC (Network Interface Card) (เลเยอร์ลิงก์) และ ในทางที่ซ่อนเร้นสกัดกั้นการรับส่งข้อมูลทั้งหมด เนื่องจากนักดมกลิ่นทำงานที่ดาต้าลิงค์เลเยอร์ของโมเดล OSI พวกเขาจึงไม่จำเป็นต้องเล่นตามกฎของโปรโตคอลระดับที่สูงกว่า นักดมกลิ่นเลี่ยงผ่านกลไกการกรอง (ที่อยู่ พอร์ต ฯลฯ) ที่ไดรเวอร์อีเทอร์เน็ตและสแต็ก TCP/IP ใช้ในการตีความข้อมูล แพ็คเก็ตดมกลิ่นจับทุกสิ่งที่ผ่านเข้ามาจากเส้นลวด นักดมกลิ่นสามารถจัดเก็บเฟรมในรูปแบบไบนารีและถอดรหัสในภายหลังเพื่อเปิดเผยข้อมูลระดับสูงที่ซ่อนอยู่ภายใน (รูปที่ 1)

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

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

ข้อจำกัดของการใช้ดมกลิ่น

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

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

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

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

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

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

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

ภาพรวมของซอฟต์แวร์ดมกลิ่นแพ็กเก็ต

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

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

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

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

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

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

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

CommView ให้ความสามารถในการรักษาสถิติเกี่ยวกับการเชื่อมต่อ IP ทั้งหมด ถอดรหัสแพ็กเก็ต IP ได้สูงสุด ระดับต่ำและวิเคราะห์พวกเขา ระบบตัวกรองในตัวตามพารามิเตอร์หลายตัวทำให้คุณสามารถกำหนดค่าการติดตามเฉพาะสำหรับแพ็คเกจที่จำเป็น ซึ่งทำให้การวิเคราะห์มีประสิทธิภาพมากขึ้น โปรแกรมสามารถจดจำแพ็กเก็ตจากโปรโตคอลทั่วไปมากกว่าเจ็ดโหล (รวมถึง DDNS, DHCP, DIAG, DNS, FTP, HTTP, HTTPS, ICMP, ICQ, IMAP, IPsec, IPv4, IPv6, IPX, LDAP, MS SQL, NCP, NetBIOS, NFS, NLSP, POP3, PPP, PPPoE, SMB, SMTP, SOCKS, SPX, SSH, TCP, TELNET, UDP, WAP ฯลฯ) และยังบันทึกลงในไฟล์เพื่อการวิเคราะห์ในภายหลัง เครื่องมืออื่นๆ อีกมากมาย เช่น การตรวจจับผู้ผลิตอะแดปเตอร์เครือข่ายด้วยที่อยู่ MAC การสร้าง HTML ใหม่และการใช้การจับแพ็กเก็ตระยะไกล ยูทิลิตี้เพิ่มเติม CommView Remote Agent ยังมีประโยชน์ในบางกรณีอีกด้วย

การทำงานกับโปรแกรม

ก่อนอื่นคุณต้องเลือกอินเทอร์เฟซเครือข่ายที่จะตรวจสอบการรับส่งข้อมูล

CommView รองรับอะแดปเตอร์อีเธอร์เน็ตทุกประเภท - 10, 100 และ 1,000 Mbps รวมถึง โมเด็มแบบอะนาล็อก, xDSL, Wi-Fi ฯลฯ ด้วยการวิเคราะห์การรับส่งข้อมูลของอะแดปเตอร์อีเทอร์เน็ต CommView จึงสามารถดักจับไม่เพียงแต่ขาเข้าและขาออกเท่านั้น แต่ยังรวมไปถึงแพ็กเก็ตการส่งผ่านที่ส่งไปยังคอมพิวเตอร์เครื่องใดก็ได้ในส่วนเครือข่ายท้องถิ่น เป็นที่น่าสังเกตว่าหากงานคือการตรวจสอบการรับส่งข้อมูลทั้งหมดบนส่วนเครือข่ายท้องถิ่นก็จำเป็นต้องเชื่อมต่อคอมพิวเตอร์ในนั้นผ่านฮับไม่ใช่ผ่านสวิตช์ บาง โมเดลที่ทันสมัยสวิตช์มีฟังก์ชั่นการมิเรอร์พอร์ตซึ่งช่วยให้สามารถกำหนดค่าสำหรับการตรวจสอบเครือข่ายโดยใช้ CommView คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ โดยการเลือก การเชื่อมต่อที่ถูกต้องคุณสามารถเริ่มจับแพ็กเก็ตได้ ปุ่มเริ่มและหยุดจับภาพจะอยู่ใกล้กับเส้นเลือกอินเทอร์เฟซ หากต้องการทำงานกับตัวควบคุมการเข้าถึงระยะไกล VPN และ PPPoE คุณต้องติดตั้งไดรเวอร์ที่เหมาะสมเมื่อติดตั้งโปรแกรม

หน้าต่างหลักของโปรแกรมแบ่งออกเป็นหลายแท็บที่รับผิดชอบงานด้านใดด้านหนึ่ง คนแรกของพวกเขา "การเชื่อมต่อ IP ปัจจุบัน", แสดงผล ข้อมูลรายละเอียดเกี่ยวกับการเชื่อมต่อ IP ปัจจุบันของคอมพิวเตอร์ ที่นี่คุณสามารถเห็นท้องถิ่นและ ที่อยู่ IP ระยะไกล, จำนวนแพ็กเก็ตที่ส่งและรับ, ทิศทางของการส่ง, จำนวนเซสชัน IP ที่สร้างขึ้น, พอร์ต, ชื่อโฮสต์ (หากฟังก์ชั่นการรับรู้ DNS ไม่ได้ปิดใช้งานในการตั้งค่าโปรแกรม) และชื่อของกระบวนการรับหรือส่งแพ็กเก็ต สำหรับเซสชั่นนี้ ข้อมูลล่าสุดไม่มีให้บริการสำหรับแพ็คเกจการขนส่งสาธารณะหรือบนคอมพิวเตอร์ที่ใช้ Windows 9x/ME

แท็บการเชื่อมต่อ IP ปัจจุบัน

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

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

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

แท็บที่สอง "แพ็คเกจ"จะแสดงแพ็กเก็ตทั้งหมดที่ดักจับบนอินเทอร์เฟซเครือข่ายที่เลือก และข้อมูลโดยละเอียดเกี่ยวกับแพ็กเก็ตเหล่านั้น

แท็บแพ็คเกจ

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

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

หน้าต่างด้านล่างจะแสดงข้อมูลโดยละเอียดที่ถอดรหัสแล้วเกี่ยวกับแพ็คเกจที่เลือก

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

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

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

ข้อมูลผลลัพธ์สามารถส่งออกเป็นข้อความ RTF หรือไฟล์ไบนารีได้

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

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

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

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

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

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

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

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

CommView ช่วยให้คุณสามารถกำหนดประเภทเหตุการณ์ต่อไปนี้เพื่อติดตาม:

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

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

หน้าต่างสถิติในโหมด "ทั่วไป"

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

ความพร้อมใช้งาน ต้นทุน ความต้องการของระบบ

เวอร์ชันปัจจุบันของโปรแกรมคือ CommView 5.1 จากเว็บไซต์ Tamosoft คุณสามารถทำได้ ซึ่งจะใช้งานได้เป็นเวลา 30 วัน

นักพัฒนาซอฟต์แวร์เสนอทางเลือกใบอนุญาตแก่ลูกค้าสองทาง:

  • ใบอนุญาตบ้าน (ใบอนุญาตบ้าน) มูลค่า 2,000 รูเบิล ให้สิทธิ์ในการใช้โปรแกรมที่บ้านบนพื้นฐานที่ไม่ใช่เชิงพาณิชย์ ในขณะที่จำนวนโฮสต์ที่พร้อมใช้งานสำหรับการตรวจสอบบนเครือข่ายในบ้านของคุณนั้นจำกัดอยู่ที่ห้า ใบอนุญาตประเภทนี้ไม่อนุญาตให้คุณทำงานจากระยะไกลด้วย โดยใช้รีโมทตัวแทน.
  • ใบอนุญาตองค์กร (องค์กร ราคา - 10,000 รูเบิล) ให้สิทธิ์ในการใช้โปรแกรมในเชิงพาณิชย์และไม่ใช่เชิงพาณิชย์โดยบุคคลหนึ่งรายที่ใช้โปรแกรมเป็นการส่วนตัวบนเครื่องหนึ่งเครื่องหรือหลายเครื่อง สามารถติดตั้งโปรแกรมได้ในตัวเดียว เวิร์กสเตชันและใช้ได้หลายคนแต่ไม่พร้อมกัน

แอปพลิเคชันทำงานใน ระบบปฏิบัติการ Windows 98/ฉัน/NT/2000/XP/2003 ในการทำงาน คุณต้องมีอะแดปเตอร์เครือข่ายอีเทอร์เน็ต อีเทอร์เน็ตไร้สาย แหวนโทเค็นพร้อมรองรับมาตรฐาน NDIS 3.0 หรือตัวควบคุมการเข้าถึงระยะไกลมาตรฐาน

ข้อดี:

  • อินเทอร์เฟซที่แปลแล้ว
  • ระบบช่วยเหลือที่ยอดเยี่ยม
  • รองรับอะแดปเตอร์เครือข่ายประเภทต่างๆ
  • เครื่องมือขั้นสูงสำหรับการวิเคราะห์แพ็กเก็ตและระบุโปรโตคอล
  • การแสดงภาพสถิติ
  • ระบบเตือนการทำงาน

จุดด้อย:

  • ต้นทุนสูงเกินไป
  • ขาดการตั้งค่าล่วงหน้าสำหรับกฎการสกัดกั้นและการเตือน
  • ไม่ใช่กลไกที่สะดวกมากในการเลือกแพ็คเกจในแท็บ "แพ็คเกจ"

บทสรุป

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