Network
น้องๆ เคยสงสัยไหมว่าเวลาเกิดปัญหาใน network ของเราเนี่ย เราจะตามหาคนร้าย เอ้ย! ต้นเหตุของปัญหาได้ยังไง? Network Forensics Packet Analysis นี่แหละคือพระเอกของเรา มันคือการแกะรอยจากข้อมูลที่วิ่งผ่านสาย network เหมือน CSI แกะรอยจากหลักฐานในที่เกิดเหตุเลย
สมัยผมทำร้านเน็ต SiamCafe เนี่ย เจอบ่อยมาก เด็กมันชอบโหลดบิท พอเน็ตอืดก็โวยวาย เราก็ต้องใช้ Packet Analysis นี่แหละ ตามไปดูว่าใครมันสูบ bandwidth ไปเยอะสุด แล้วก็จัดการซะ! SiamCafe Blog เรามีบทความเรื่องจัดการ bandwidth ด้วยนะ ลองไปอ่านดู
สำคัญยังไงเหรอ? สำคัญมาก! ไม่ว่าจะเป็นเรื่อง security, performance optimization หรือ troubleshooting, Packet Analysis ช่วยเราได้หมด ถ้า network คือเส้นเลือดใหญ่ Packet Analysis ก็คือหมอที่คอยส่องกล้องดูว่าเส้นเลือดตรงไหนมันตีบตัน หรือมีอะไรแปลกปลอมเข้าไป
อันนี้ต้องรู้เลย น้องๆ ต้องเข้าใจ layer ต่างๆ ของ TCP/IP model ก่อน ตั้งแต่ Application Layer, Transport Layer, Network Layer, Data Link Layer และ Physical Layer แต่ละ layer มันทำงานยังไง มี protocol อะไรบ้างที่ทำงานในแต่ละ layer เพราะข้อมูลที่วิ่งใน network มันผ่าน layer พวกนี้ทั้งหมด ถ้าเราไม่เข้าใจพื้นฐานตรงนี้ จะแกะ packet ไม่รู้เรื่องเลย
ลองนึกภาพเวลาเราส่งจดหมาย แต่ละ layer ก็เหมือนขั้นตอนต่างๆ ในการส่ง ตั้งแต่เขียนจดหมาย (Application Layer), ใส่ซอง (Transport Layer), จ่าหน้าซอง (Network Layer), ส่งไปรษณีย์ (Data Link Layer) และไปถึงบ้านผู้รับ (Physical Layer)
HTTP, HTTPS, DNS, SMTP, SSH, FTP พวกนี้คือ protocol ที่เราเจอบ่อยๆ ในชีวิตประจำวัน แต่ละ protocol ก็มีรูปแบบการทำงานของมันเอง เวลาเราดู packet เราต้องรู้ว่า packet นี้เป็น protocol อะไร แล้วมันควรจะมีรูปแบบยังไง เช่น ถ้าเป็น HTTP เราก็ต้องดู header, body หรือถ้าเป็น DNS เราก็ต้องดู query, response
สมัยผมทำร้านเน็ต เคยเจอเคสเด็กแอบเล่นเกมออนไลน์ที่โรงเรียนบล็อกไว้ มันก็พยายาม bypass โดยใช้ proxy server เราก็ต้องแกะ packet ดูว่ามันคุยกับ proxy server ด้วย protocol อะไร แล้วเราค่อยไปบล็อก proxy server นั้นอีกที
Wireshark คือพระเอกตัวจริง! มันเป็นเครื่องมือฟรี open-source ที่ใช้ดักจับ packet และวิเคราะห์ข้อมูลได้ละเอียดมากๆ นอกจาก Wireshark ก็ยังมีเครื่องมืออื่นๆ อีก เช่น tcpdump, tshark, NetworkMiner แต่ Wireshark นี่แหละใช้ง่ายสุด เหมาะสำหรับมือใหม่
# ตัวอย่างการใช้ tcpdump ดักจับ packet บน interface eth0
tcpdump -i eth0 -w capture.pcap
เริ่มต้นง่ายๆ เลย น้องๆ โหลด Wireshark มาลงเครื่องก่อนเลย Download Wireshark พอลงเสร็จก็เปิดโปรแกรมขึ้นมา มันจะ list interface ต่างๆ ที่เครื่องเรามี เราก็เลือก interface ที่เราต้องการดักจับ packet
แต่ก่อนจะดักจับ packet เราต้องรู้ก่อนว่าเราต้องการจะดูอะไร เช่น ถ้าเราต้องการดู traffic ที่วิ่งไปหา Google เราก็ใส่ filter ใน Wireshark ว่า host google.com หรือถ้าเราต้องการดู traffic ที่ใช้ protocol HTTP เราก็ใส่ filter ว่า http
หลังจากเลือก interface และใส่ filter แล้ว ก็กดปุ่ม Start Capture ได้เลย Wireshark จะเริ่มดักจับ packet ที่วิ่งผ่าน interface นั้นๆ ข้อมูล packet ที่ดักจับได้จะแสดงผลในรูปแบบตาราง เราสามารถคลิกที่ packet เพื่อดูรายละเอียดเพิ่มเติมได้
สมัยผมทำร้านเน็ต เวลาลูกค้าแจ้งว่าเข้าเว็บไม่ได้ ผมก็จะดักจับ packet ดูว่า request มันไปถึง server หรือเปล่า หรือว่า server มัน response อะไรกลับมา ถ้า request ไปไม่ถึง ก็อาจจะเป็นปัญหาที่ network ของเรา แต่ถ้า server response กลับมาเป็น error ก็อาจจะเป็นปัญหาที่ server
หลังจากดักจับ packet ได้แล้ว ขั้นตอนต่อไปคือการวิเคราะห์ packet เราต้องดู header ของแต่ละ layer ว่ามีข้อมูลอะไรบ้าง เช่น source IP, destination IP, source port, destination port, protocol, flags, sequence number, acknowledgement number
เราต้องดู payload ด้วยว่ามีข้อมูลอะไรบ้าง เช่น ถ้าเป็น HTTP packet เราก็ต้องดู header และ body ว่ามีข้อมูลอะไรบ้าง ถ้าเป็น DNS packet เราก็ต้องดู query และ response ว่ามีข้อมูลอะไรบ้าง SiamCafe Blog มีบทความเรื่อง Wireshark อยู่เยอะ ลองไปศึกษาดูนะ
หลังจากวิเคราะห์ packet แล้ว เราก็สามารถระบุปัญหาได้ เช่น ถ้าเราเห็นว่ามี packet retransmission เยอะๆ ก็อาจจะเป็นปัญหาเรื่อง network congestion หรือถ้าเราเห็นว่ามี packet ที่มี flag SYN แต่ไม่มี ACK ก็อาจจะเป็นปัญหาเรื่อง firewall block
การระบุปัญหาต้องอาศัยประสบการณ์พอสมควร น้องๆ ต้องฝึกฝนบ่อยๆ ดู packet เยอะๆ แล้วจะเริ่มจับทางได้เอง
นอกจาก Packet Analysis แล้ว ยังมีทางเลือกอื่นๆ อีกในการ monitor และ troubleshoot network เช่น Network Monitoring Tools, Log Analysis Tools แต่ละทางเลือกก็มีข้อดีข้อเสียต่างกัน
| ทางเลือก | ข้อดี | ข้อเสีย | เหมาะสำหรับ |
|---|---|---|---|
| Network Forensics Packet Analysis | ละเอียด, เจาะลึก, เห็นข้อมูลดิบ | ต้องใช้ความรู้, ใช้เวลานาน | Troubleshooting ปัญหาเฉพาะหน้า, วิเคราะห์ security incident |
| Network Monitoring Tools | Real-time monitoring, แจ้งเตือนอัตโนมัติ | ข้อมูลสรุป, ไม่ละเอียดเท่า Packet Analysis | Monitoring performance, วางแผน capacity |
| Log Analysis Tools | รวบรวม log จากหลายแหล่ง, วิเคราะห์ log ได้ง่าย | ต้องมี log ที่ถูกต้อง, ข้อมูลอาจจะไม่ครบถ้วน | วิเคราะห์ security incident, Audit trail |
Packet Analysis เหมาะสำหรับ troubleshooting ปัญหาเฉพาะหน้า และวิเคราะห์ security incident ที่ต้องการข้อมูลละเอียด Network Monitoring Tools เหมาะสำหรับ monitoring performance และวางแผน capacity ส่วน Log Analysis Tools เหมาะสำหรับวิเคราะห์ security incident และ audit trail
สมัยผมทำร้านเน็ตฯ SiamCafe เนี่ย เรื่อง Network Forensics นี่เจอบ่อยมาก ทั้งเด็กแฮกเกมส์ ยิงเว็บ หรือแม้กระทั่งลูกค้าโหลดบิทฯ จนเน็ตล่มทั้งร้าน (ฮา) เลยต้องมี Best Practices ติดตัวไว้เสมอครับ
อันนี้สำคัญมาก! เซ็ต Mirror Port ที่ Switch ครับ มันคือการ copy traffic ทั้งหมดที่วิ่งผ่าน port นึง ไปยัง port อีก port นึงที่เราเอาเครื่องดักจับสัญญาณ (Sniffer) ไปเสียบไว้
สมัยก่อน switch ราคาถูกๆ จะไม่มีฟังก์ชั่นนี้ ต้องลงทุนหน่อย แต่คุ้มค่าครับ เหมือนเรามีกล้องวงจรปิดไว้ส่องดูทุก activity ใน network เลย
BPF (Berkeley Packet Filter) คือตัวกรอง packet ที่ทรงพลังมาก เราสามารถใช้มันเพื่อเลือกดูเฉพาะ traffic ที่เราสนใจได้ เช่น
tcp port 80 # ดูเฉพาะ HTTP traffic
ip.src == 192.168.1.100 # ดูเฉพาะ traffic ที่มาจาก IP นี้
แรกๆ อาจจะงงๆ syntax แต่ลองเล่นดูครับ แล้วจะติดใจ ผมนี่เขียน BPF filter คล่องกว่าเขียน HTML อีก (ฮา)
เวลาเกิดปัญหา สิ่งแรกที่ต้องทำคือไล่ Timeline ครับ Packet Analysis ต้องมี Time Stamp ที่แม่นยำ ไม่งั้นเราจะงงว่าเหตุการณ์ไหนเกิดก่อนหลัง
แนะนำให้ใช้ NTP Server เพื่อ Sync เวลาของอุปกรณ์ทุกตัวใน Network ให้ตรงกันครับ จะได้ไม่พลาดหลักฐานสำคัญ
ก่อนเกิดปัญหา ให้เราสร้าง Baseline Traffic หรือ Traffic ปกติของ Network เราก่อนครับ จะได้รู้ว่าอะไรคือ "ผิดปกติ"
เหมือนหมอที่ต้องรู้ว่าคนไข้ปกติเป็นยังไง ถึงจะวินิจฉัยโรคได้ถูกต้อง Baseline นี่ช่วยได้เยอะมากๆ ครับ
Log Files มันเป็นแค่สรุปเหตุการณ์ครับ แต่ Packet Analysis คือการดู "ดิบๆ" เลย เห็นทุก byte ที่วิ่งผ่าน network บางที Hacker เก่งๆ เค้าลบ Log Files ทิ้ง แต่ Packet ที่ดักจับได้ มันไม่หายไปไหนครับ
Wireshark คือ GUI-based Sniffer ใช้งานง่าย เหมาะสำหรับคนเริ่มต้น ส่วน tcpdump คือ Command-line Sniffer เหมาะสำหรับ Server ที่ไม่มี GUI หรือต้องการความรวดเร็วในการดักจับ
ช่วยได้เยอะมากครับ! เราสามารถใช้ Packet Analysis เพื่อตรวจจับ Malware, Intrusion Attempts, Data Exfiltration หรือแม้กระทั่งหาช่องโหว่ของ Application ได้หมด
ก็มี tcpdump อย่างที่บอกไป แล้วก็มี Tshark (Command-line version ของ Wireshark), NetworkMiner, Moloch (Elasticsearch-based Packet Analysis Tool) ลองศึกษาดูครับ
Network Forensics Packet Analysis มันเหมือนกับการเป็น "นักสืบ" ในโลกของ Network ครับ ต้องมีความรู้รอบด้าน มีเครื่องมือที่ดี และที่สำคัญคือต้องมี "Sense" ในการจับผิดสังเกต
สมัยนี้ Network มันซับซ้อนขึ้นทุกวัน Hacker ก็เก่งขึ้นทุกวัน เราก็ต้องพัฒนาตัวเองตามให้ทันครับ อย่าหยุดเรียนรู้!
ใครสนใจเรื่อง Forex ลองดู iCafeForex ได้นะครับ เผื่อจะรวยกว่าเปิดร้านเน็ตฯ (ฮา)
แล้วก็อย่าลืมแวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ด้วยนะครับ มีอะไรดีๆ อีกเยอะเลย