วิธีตรวจหา sniffer ในเน็ตเวิร์คของคุณ
เป็น ซอฟท์แวร์หรือฮาร์ดแวร์ที่เฝ้าดูการติดต่อสื่อสารที่ผ่านไปมาระหว่าง เน็ตเวิร์คทุกอย่าง ไม่เหมือนกับเครื่องมือเฝ้าดูเน็ตเวิร์คทั่วไปที่จะเฝ้าดูเพียงการติดต่อ สื่อสารที่ส่งไปมากับเน็ตเวิร์คอย่างชัดแจ้งเท่านั้น
ซอฟท์แวร์ sniffer
เป็นสามาถทำความเสียหายให้กับเน็ตเวิร์คนั้นได้อย่างแท้จริง ในสมัยก่อน sniffer ใช้
ฮาร์ดแวร์ ที่มีขนาดใหญ่ซึ่งต่อเข้ากับเน็ตเวิร์คและเฝ้าดูการติดต่อสื่อสารที่ผ่านไป มาในเน็ตเวิร์ค แต่ในปัจจุปัน sniffer เป็นเพียงซอฟท์แวร์ง่าย ๆ ที่สามารถทำงานได้บนยูนิกซ์ ลีนุกซ์ หรือแม้แต่วินโดวส์ สิ่งที่ sniffer สามารถทำความเสียหายให้กับเน็ตเวิร์คคือ มันสามารถดักจับการสื่อสารที่กำลังดำเนินอยู่ รวมถึง
รหัสผ่านและข้อมูลที่มีความสำคัญ โดยทฤษฏีแล้ว sniffer จะไม่สามารถหาเจอได้ ไม่แสดงตัวให้เห็น
และทำงานเพียงแต่ดักจับข้อมูลเท่านั้น อย่างไรก็ตาม เป้าหมายของมักจะเป็นเครื่องที่ใช้ยูนิกซ์หรือลีนุกซ์
(เพราะง่ายสำหรับการเซ็ตอัป sniffer) จึง มีวิธีที่จะหา sniffer ที่กำลังรันอยู่ในเครื่องที่ใช้ลีนุกซ์โดยทั่วไป
วิธีการตรวจสอบว่าเครื่องของคุณกำลังรัน sniffer อยู่เหรือไม่ ถ้าเครื่องของคุณใช้ยูนิกซ์ ผู้โจมตีที่สามารถได้สิทธิ์ของ root สามารถรัน sniffer เพื่อให้สามารถเข้าถึงเน็ตเวิร์คได้มากขึ้น (เช่นเพื่อให้ได้รหัสผ่านของโฮสต์อื่นในเน็ตเวิร์ค)การตรวจหาโปรเซสที่รัน sniffer นั้น ยากเพราะชื่อของโปรเซสสามารถซ่อนในชื่อซึ่งดูไม่มีอันตรายได้ นอกจากนี้ยังอาจโปรแกรมที่เกี่ยวข้อง ที่มีโทรจันฮอร์สอยู่ในโปรแกรมได้ด้วย (ในกรณีนี้ผู้โจมตีไม่จำเป็นต้องมีสิทธิ์ของ root ในเครื่องนั้น เพียงแต่
ใส่ โทรจันไว้ในโปรแกรมแล้วรอให้ผู้บริหารระบบรันมันเท่านั้นเอง) เพียงวิธีเดียวที่สามารถตรวจหา sniffer คือ การตรวจดูว่า network interface อยู่ใน promiscuous mode หรือไม่ ซึ่งหมายความว่ามันดักจับการสื่อสารทั้งหมดในเน็ตเวิร์คทั้งหมดไม่เพียงแต่ การสื่อสารที่มีปลายทางที่เครื่องนั้นเท่านั้น เครื่องที่ใช้ยูนิกซ์ไม่ควรอยู่ในโหมด promiscuous ถ้าไม่มีเหตุจำเป็นจริง ๆ ดังนั้นเครื่องที่อยู่ใน promiscuous mode จึงเป็นเครื่องบ่งชี้ว่ามี sniffer รันอยู่ที่นั่น มีโปรแกรมหนึ่งที่สามารถตรวจได้ว่า network interface อยู่ใน promiscuous
หรือไม่คือ CPM (check Promiscuous Mode) ของ Carnegie Mellon University อีกวิธีการหนึ่งคือการใช้คำสั่ง: ifconfig -a ซึ่งจะบอกถึง network interface ที่มีทั้งหมดและแสดงข้อมูลเกี่ยวกับมันทั้งหมด
คำว่า PROMISC หมายถึง network interface นั้นอยู่ใน promiscuous mode ถ้าใช้คำสั่ง:
ifconfig -a | grep PROMISC
จะแสดงผลออกมาให้เห็นถ้า network interface
อยู่ใน promiscuous mode (สามารถประยุกต์ใช้ใน cron เพื่อตรวจเป็นรายชั่วโมง หรือรายวันเพื่อหา sniffer ที่กำลังรันอยู่)
ข้อควรสังเกตคือบางครั้งโปรแกรม ifconfig จะถูกเปลี่ยนแปลงโดยผู้โจมตีเพื่อไม่ให้ตรวจพบ sniffer จึงควรใช้โปรแกรม
checksum (หรือ MD5 signature) เพื่อทำหลักฐานไว้ให้แน่ใจว่าโปรแกรมนี้จะไม่ถูกเปลี่ยนแปลงไป
วิธีการตรวจหา sniffer ที่อยู่ในเครื่องอื่นในเน็ตเวิร์ค
วิธีการตรวจหานี้ยากมาก(และบางครั้งก็เป็นไปไม่ได้)
แต่การตรวจดูว่าเครื่องที่ใช้ลีนุกซ์นั้นมี sniffer ที่กำลัง รันอยู่หรือไม่มีวิธีที่สามารถทำได้โดยการใช้ประโยชน์จากจุดอ่อน
ในการดำเนินการเกี่ยวกับ TCP/IP stack ของลีนุกซ์ ถ้าเครื่องที่ใช้ลีนุกซ์เครื่องนั้นอยู่ใน promiscuous mode มันจะตอบ
TCP/IP packet ที่ถูกส่งถึง IP ของมันถึงแม้ว่า MAC address ของ packet นั้นจะผิดก็ตาม (โดยปกติ packet ที่มี MAC address ที่ผิดจะไม่รับคำตอบเพราะ network interface จะไม่สนใจมัน)
ดังนั้นการส่ง TCP/IP packet ไปยังทุก ๆ IP address ที่อยู่ใน subnet นั้นโดยให้ MAC address ที่ผิด
ก็ จะสามารถบอกคุณได้ว่าลีนกซ์เครื่องใดที่อยู่ใน promiscuous mode (คำตอบจากเครื่องเหล่านี้จะเป็น RST packet) ถึงแม้ว่าวิธีนี้จะไม่เป็นวิธีที่ตรวจสอบได้อย่างแน่นอนแต่ก็สามารถตรวจหา กิจกรรมที่น่าสงสัยในเน็ตเวิร์คได้
วิธีหลีกเลี่ยงจากการถูกดักจับ packet จาก sniffer
Active hubs จะส่งข้อมูลไปยังเป้าหมายที่ต้องการเท่านั้น
วิธี นี้สามารถป้องกัน sniffer ได้เนื่องจากมันไม่สามารถรับ packet ที่ไม่ตั้งใจส่งไปยังเครื่องที่ต้องการ Cisco, HP และ 3Com มีผลิตภัณฑ์ที่ใช้ Active hubs ยูทิลิตี้อื่น ๆ CPM (ตรวจว่าเครื่องนั้นอยู่ใน promicuous หรือไม่)
ftp://coast.cs.purdue.edu/pub/tools/unix/cpm/โปรแกรม AntiSniff และ Neped เป็นเครื่องมือที่ดีเยี่ยมสำหรับการตรวจหา sniffer ในเน็ตเวิร์คนั้น Sniffer Utilities