Technics

เทคนิคการ HAck
เทคนิคที่ใช้กันโดยทั่วไปในการบุกรุกเข้าสู่ระบบคอมพิวเตอร์

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


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


rsh - เป็นเซอร์วิสที่ไม่ควรนำมาใช้และควรจะลบออกจากระบบ เนื่องจากมันเป็นวิธีการพิสูจน์ตัวผู้ใช้ที่แย่ ง่ายต่อการถูกโจมตี พบว่าส่วนมากผู้ที่ใช้มันเนื่องจากความเกียจคร้านในการพิมพ์รหัสผ่านในการเข้าสู่ระบบอื่น โฮสต์จำนวนมากใช้ระบบเชื่อถือโฮสต์(transitive trust) (โดยใช้ ไฟล์ .rhosts) วิธีนี้ทำให้ระบบต่าง ๆ ถูกบุกรุกเข้าอย่างรวดเร็วแม้ว่าโฮสต์เพียงโฮสต์เดียวในระบบจะถูกบุกรุก ยูนิกซ์ของผู้ผลิตบางรายมีไฟล์ /etc/hosts.equiv มีเครื่องหมาย "+" ที่ยอมให้โฮสต์ใดก็ตามสามารถเข้าถึงระบบได้ นอกจากนี้ rsh daemon จำนวนมากที่ไม่มีการบันทึกการใช้คำสั่งใด ๆ เลย ดังนั้นคุณจึงควรปิดเซอร์วิสนี้และ ลบออกจากระบบเพื่อให้มั่นใจว่าเซอร์วิสนี้จะไม่ได้ใช้งานอีก ถ้าคุณจำเป็นต้องใช้ความสามารถในการรันจากโฮสต์ อื่นและระบบการเชื่อถือโฮสต์สำหรับการทำงานบางอย่างโดยอัตโนมัติควรใช้ SSH แทน


rlogin - ดูในส่วนของ rsh ถ้าจะใช้ rlogin ควรใช้เวอร์ชันที่สามารถปิดการสนับสนุนไฟล์ .rhosts และห้าม ไม่ให้ยูสเซอร์ใช้ไฟล์ .rhosts โดยไม่มีข้อยกเว้นสำหรับยูสเซอร์คนใด ตรวจสอบให้แน่ใจว่าไฟล์ /etc/hosts.equiv ไม่มีเครื่องหมาย "+"


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


rexd - เป็น RPC เซอร์วิสที่ยอมให้โฮสต์อื่นใช้คำสั่งบนระบบที่เป็นเป้าหมายเหมือนกับยูสเซอร์ในระบบตามที่ต้องการ (บางครั้งไม่สามารถใช้คำสั่งเช่นเดียวกับเป็น root) เซอร์วิสนี้มาพร้อมกับยูนิกซ์บางเวอร์ชันที่เปิดเซอร์วิสนี้ไว้ สิ่งสำคัญที่ควรรู้คือความปลอดภัยของ rexd ขึ้นอยู่กับ client ไม่ใช่ตัวเซิร์ฟเวอร์เอง เนื่องจาก ผู้โจมตีสามารถปลอมเป็นยูสเซอร์ใด ๆ ก็ได้ตามที่ต้องการ คุณสามารถตรวจดูได้ง่าย ๆ ว่ามีเซอร์วิสที่ชื่อว่า BOHICA ที่รอการติดต่ออยู่หรือไม่


Anonymous FTP ที่มีการกำหนดค่าไม่ถูกต้อง - อย่ารัน anonymous FTP เซิร์ฟเวอร์ถ้าไม่จำเป็น FTP ไซต์มักจะมีการกำหนดค่าผิด มีผู้ผลิต OS รายหนึ่งที่มี man page ของซอฟท์แวร์ที่ให้รายละเอียดเกี่ยวกับการเซ็ตอัป anonymous FTP ที่ไม่ถูกต้องและไม่ปลอดภัย นอกจากนี้ยังมี FTP daemon หลาย ๆ ตัวมีปัญหาหลายหลายประเด็นที่นำไปสู่การบุกรุกเข้าสู่ระบบถึงแม้ว่าจะไม่ได้เปิดการใช้บริการ anonymous FTP ก็ตาม ถ้าต้องรัน anonymous FTP คุณจำเป็นต้องใส่ใจเรื่องนี้อย่างดีและทำตามทำแนะนำของ Auscert Guidelines เพื่อให้สามารถเซ็ตอัปได้ถูกต้อง ผู้โจมตีสามารถใช้การกำหนดค่าที่ผิดพลาดนี้เพื่อ แลกเปลี่ยนซอฟท์แวร์ละเมิดลิขสิทธิ์ ทำให้ไฟล์สำหรับดาวน์โหลดเสียหาย ได้สิทธิ์ในการเข้าระบบจากภายนอก ผ่านการรักษาความปลอดภัยจากไฟล์วอลและ packet filter และการใช้ในทางที่ผิดอื่น ๆ ได้อีกมากมาย


finger - เซอร์วิส finger สามารถใช้เพื่อหาข้อมูลเกี่ยวกับ account จากโฮสต์ที่เป็นเป้าหมาย finger บาง เวอร์ชันยอมให้คุณใช้คำสั่งที่สามารถแสดงรายการของทุก ๆ ยูสเซอร์ในโฮสต์นั้น บางเวอร์ชันยอมให้แสดง ไฟล์ utmp ซึ่งดูได้ว่ายูสเซอร์ login มาจากที่ไหนและเมื่อใด บางเวอร์ชันยอมให้ผู้โจมตีรันคำสั่งที่อยู่ใน โฮสต์นั้น หรือเซ็ตอัปไฟล์ .plan เพื่อให้เมลล์ข้อมูลข่าวสารที่เกี่ยวข้องกับระบบนั้นไปให้ผู้โจมตี ดังนั้นจึงควร ปิดเซอร์วิสนี้


Generic Recon Mechanisms - เซอร์วิสอย่างเช่น finger, systat, netstat, rusersd และอื่น ๆ สามารถใช้เพื่อรวบรวมข้อมูลเกี่ยวกับชื่อยูสเซอร์ ข้อมูลเกี่ยวกับเน็ตเวิร์ค network accounting และข้อมูล อื่น ๆ ช่วยให้ผู้โจมตีสามารถรู้ข้อมูลเกี่ยวกับโฮสต์เป้าหมายและเน็ตเวิร์ค systat และ netstat สามารถให้ข้อมูล เกี่ยวกับ process ที่รันอยู่บนโฮสต์นั้นและข้อมูลเกี่ยวกับการกำหนดค่าของเน็ตเวิร์ค เซอร์วิสที่เกี่ยวกับ rpc เช่น rusersd และ rstatd ยอมให้ผู้โจมตีดูได้ว่าใครที่ login เข้าสู่ระบบบ้างและเผ้าดูระบบเพื่อการวางแผนการโจมตี


NIS (ชื่อเก่าคือ YP) - เซอร์วิสนี้มีปัญหามากมาย ยอมให้ผู้โจมตีสำเนาไฟล์รหัสผ่านจากโฮสต์ภายนอก ในบางกรณี สามารถรันคำสั่งจากโฮสต์ภายนอกได้ด้วย ถ้าต้องการใช้เซอร์วิสนี้ให้อัปเกรดเป็น NIS+ แบบ และตรวจสอบ ให้แน่ใจว่าซอฟทแวร์นี้ได้รับการ patch แล้ว


RPC Portmapper - บางเวอร์ชันยอมให้ผู้โจมตีทำการโจมตีที่เรียกว่า "proxy attack" ที่ยอมให้ผู้โจมตี ผ่านการรักษาความปลอดภัยจากโฮสต์นั้นโดยการทำให้ RPC call ที่ดูเหมือนมาจากโฮสต์นั้นเอง (localhost) เซอร์วิสนี้ยังสามารถใช้เพื่อหา RPC เซอร์วิสที่มีช่องโหว่ คุณควรปิด RPC เซอร์วิสทั้งหมดถ้าคุณไม่ใช่มัน หรือเปลี่ยนไปใช้ portmapper replacement ของ Venema แทนซึ่งได้แก้ไขปัญหาเหล่านี้แล้ว ซึ่งซอฟท์แวร์ นี้ช่วยเพียงแต่ป้องกันไม่ให้หาข้อมูลโดยใช้ portmapper เท่านั้น อย่างไรก็ตามผู้บุกรุกที่มีความรู้เรื่องนี้ดีสามารถหลีกเลี่ยง portmapper (และสิ่งที่ใช้ป้องกัน) ไปใช้วิธีอื่นเพื่อสแกนหาเซอร์วิสได้โดยตรง ดังนั้นจึงมีความจำเป็นที่ คุณต้องปิด RPC เซอร์วิสทั้งหมดที่ไม่ใช้ ข้อควรระวัง: ไซต์ของ Wietse Vnema เคยถูกบุกรุกและหลายโปรแกรมถูกแทนที่โดย trojan horses(รวมถึง TCP Wrapper โปรแกรมยอดนิยมของเขาด้วย) ดังนั้น คุณจึงควรตรวจซอฟท์แวร์ทั้งหมดที่อยู่ที่ไซต์ของเขาโดยใช้ PGP key ของ Wietse Venema ก่อนที่จะ install ซอฟท์แวร์ลงไป


NFS - NFS มีปัญหาอื้อฉาวมาก ผู้โจมตีสามารถใช้เซอร์วิสนี้เพื่ออ่านหรือเขียนไฟล์และได้สิทธิ์ในการเข้าถึงระบบโดยหลายวิธีการ ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณใช้ daemon เวอร์ชันล่าสุดสำหรับ OS ของคุณ จะแก้ปัญหาโดยทั่วไปได้หลายปัญหา และตรวจให้แน่ใจว่าไม่ได้ export ไดเร็กทอรีออกสู่ภายนอก (the world) โดย export เฉพาะไดเร็กทอรีที่โฮสต์ต้องใช้เท่านั้นและไม่จำเป็นต้อง export เกินกว่าที่จำเป็น (ทำไมต้อง export ไดเร็กทอรี "/" ทั้งที่จำเป็นเพียง ไดเร็กทอรี "/usr/local/tools") คุณควรใช้ซอฟท์แวร์ fsirand หรือ ยูทิลิตีที่คล้ายคลึงหลังจากการลง patch แล้วเพื่อให้การจัดการเกี่ยวกับไฟล์(filehandle) เป็นแบบสุ่ม ควร export แบบ read-only เท่านั้น เมื่อ export แบบ read-write ตรวจดูให้แน่นอนว่าระบบไม่อนุญาตให้ผู้มีสิทธิ์เป็นผู้บริหารระบบ(root) สามารถใช้สิทธิ์ของผู้บริหารระบบต่อระบบไฟล์ export mount ได้ เซอร์วิส mountd ของลีนุกซ์มักจะมีช่องโหว่ที่นำไปสู่การใช้สิทธิ์การเข้าสู่ระบบจากภายนอก ตรวจให้แน่ใจว่า ระบบของคุณได้รับการแก้ไขแล้ว และถ้าคุณไม่ได้รัน NFS ให้ปิด daemon ที่เกี่ยวข้องกับ NFS ด้วย


WWW server - ถ้าคุณไม่จำเป็นต้องรัน www เซิร์ฟเวอร์คุณควรจะเปิดมันเสีย ผู้โจมตีหลาย ๆ คนสามารถ ใช้ไฟล์ cgi-bin ที่มากับเซิร์ฟเวอร์เหล่านี้เพื่อเข้าถึงระบบจากภายนอก ถ้าคุณกำลังรัน www เซิร์ฟเวอร์ คุณ ควรไปที่ไดเร็กทอรีที่เก็บไฟล์ cgi-bin และ "rm" ไฟล์ cgi-bin ทั้งหมดแล้วแทนที่ด้วย CGI สคริปต์ของคุณเอง CGI สคริปต์ตัวอย่างทั้งหมดที่มากับ www เซิร์ฟเวอร์อาจมีช่องโหว่ ซึ่งควรจะลบทิ้งเสีย


SMTP - ตรวจดูให้แน่ใจว่า SMTP เซิร์ฟเวอร์ของคุณใช้ daemon เวอร์ชันล่าสุด Sendmail,smail และอื่น ๆ ทั้งหมดมีปัญหาตั้งแต่เรื่อง denial of service จนถึงการได้สิทธิ์เข้าระบบจากภายนอก ถ้าโฮสต์ของคุณไม่ใช่ mail คุณควรปิดเซอร์วิสนี้เสีย ถ้าคุณใช้ mail ให้ยกเลิกการใช้ Sendmail ไปใช้ qmail หรือ vmailer ซึ่งปลอดภัยกว่ามาก (ในขณะที่เขียนอยู่)


SNMP - SNMP daemon และเซอร์วิสหลาย ๆ อันที่ถูกเซ็ตอัปด้วยcommunity string ที่ง่ายต่อการเดา ทำให้ผู้โจมตีสามารถกำหนดค่าของ network device ที่สำคัญได้ใหม่ ได้ข้อมูลที่เกี่ยวข้องและทำให้เกิดสถานการณ์ ที่ควบคุมไม่ได้ ให้ปิดการใช้ SNMP ในเน็ตเวิร์คของคุณเสีย หรือถ้าจำเป็นต้องใช้ให้อัปเกรดเป็น SNMPv2 เป็นอย่างต่ำ และใช้ community name ที่เดาไม่ได้ ถึงกระนั้นก็ตามเซอร์วิสยังสามารถถูกโจมตีได้


TFTP - Trivial File Transfer Protocol บริการนี้มักจะยอมให้ผู้โจมตีสามารถสำเนาไฟล์สำคัญ เช่น /etc/passwd เนื่องจากมันไม่ต้องการพิสูจน์ตัวผู้ใช้ ผู้ใช้ใด ๆ สามารถติดต่อมาและอ่านไฟล์ใดที่เขาต้องการ


X-Windows - ผู้โจมตีสามารถใช้ X-Windows clinets ที่เปิดไว้เพื่ออ่านข้อมูลที่ป้อนจากคีย์บอร์ด ทำ screen shot, รันคำสั่งเช่นเดียวกับยูสเซอร์และกระทำการอันมุ่งร้าย ตรวจสอบให้แน่ใจว่าอุปกรณ์ที่เกี่ยวข้องกับ X-Windows มีความปลอดภัยโดยการใช้คำสั่ง xhost หรือ xauth ที่เกี่ยวข้องกับการรักษาความปลอดภัย ถ้าคุณใช้ Microsoft Windows X clients คุณก็ทำเช่นเดียวกัน


Generic RPC services - RPC เซอร์วิสหลายอย่างมีปัญหาที่สามารถใช้เพื่อการโจมตีได้ ถ้าคุณไม่ใช่เซอร์วิส ให้ปิดมันเสีย ( rusers, sprayd,walld,rexd และอื่น ๆ) โดยเฉพาะเซอร์วิส statd (บางครั้งมีชื่อเรียกเป็น "status" ใน portmapper) ถูกใช้อย่างกว้างขวางโดยผู้บุกรุกเข้าสู่ระบบ เซอร์วิสนี้ควรได้รับการ patch หรือปิดไปเสียถ้าไม่จำเป็น (มันถูกใช้โดย NFS เพื่อให้สามารถใช้งาน file locking ได้ดียิ่งขึ้น ดังนั้นคุณอาจจะปิดไม่ได้ถ้าคุณใช้ NFS) ให้ติดต่อผู้ขายซอฟท์แวร์สำหรับ update อีกเซอร์วิสหนึ่งคือ ttdbserverd สามารถบุกรุกเข้าสู่ระบบจากภายนอก (remotely exploitable overflow) ปิด RPC เซอร์วิสเสียหรือทำการ patch ซอฟท์แวร์เหล่านี้


DNS - ตรวจให้แน่ใจว่าคุณใช้ DNS เวอร์ชันล่าสุดใน name server ของคุณเพื่อป้องกัน cache poisoning และ buffer overrun attack,เซ็ตไม่ไห้มีการใช้ zone transfer ไปสู่ไซต์ที่ไม่ใช่ secondary name server เพื่อไม่ใช่ผู้โจมตีดูชื่อโฮสต์ทั้งหมดเพื่อหาเป้าหมายเพื่อการโจมตี ควรระวังเกี่ยวกับชื่อของ DNS เซิร์ฟเวอร์ด้วย ชื่อโฮสต์ไม่ควรบอกถึงลักษณะของเซิร์ฟเวอร์แก่ยูสเซอร์ภายนอก การตั้งชื่อเครื่องว่า "gauntlet-fw.somedomain.com" บอกได้ว่าคุณอาจใช้ TIS Gauntlet firewall หรือเครื่องที่ใช้ชื่อ "temp123.somedomain.com" ทำให้รู้ได้ว่าเครื่องนั้นควรจะเป็นเป้าหมายที่ดีเนื่องจากมันอาจจะไม่ได้รีบการเฝ้าดู(monitered) คุณอาจรัน BIND ใน ระบบที่ใช้ chroot() ดูคำแนะนำได้ทีนี่ http://www.psionic.com/papers/dns


IMAP/POP - เป็นวิธีที่ใช้บุกรุกโดยทั่วไปสำหรับผู้โจมตี บางเวอร์ชันจะมีช่องโหว่ที่ร้ายแรงและง่ายต่อการโจมตีแบบ buffer overrun ยอมให้รันคำสั่งโดยใช้สิทธิ์เช่นเดียวกับ root ให้ update daemon หรือ ปิดเซอร์วิสนี้ถ้าคุณไม่ใช้ POP เซิร์ฟเวอร์บางเครื่องจะไม่รายงานการ login ที่ล้มเหลวด้วย ดังนั้นผู้โจมตีจึงอาจเดารหัสผ่านแบบสุ่มจนเข้าระบบได้ (brute force) คุณจะไม่มีทางรู้ได้เลย ดังนั้นคุณจึงควรอัปเกรด ซอฟท์แวร์นี้


Samba - เป็นวิธีการที่นิยมใช้กันเพื่อโจมตีลีนุกซ์เวอร์ชันที่มาพร้อมกับเซอร์วิสนี้ โดยค่าเริ่มต้นมันมีปัญหาเกี่ยว กับ buffer overrun ที่ยอมให้ผู้โจมตีรันคำสั่งโดยใช้สิทธิ์ของ root จึงควรปิดเซอร์วิสนี้หรืออัปเดทซอฟท์แวร์เสีย


Password Sniffing - เป็นวิธีการโจมตีแบบหนึ่งที่มีประสิทธิภาพมาก ไม่ใช่เพราะว่ามันซับซ้อนแต่เพราะ มันทำให้ผู้โจมตีเข้าถึงระบบเป็นร้อย ๆ ระบบได้อย่างรวดเร็วถ้าผู้โจมตีใช้ sniffer ในที่ซึ่งมีการติดต่อทางเน็ตเวิร์คอย่างหนาแน่น เมื่อได้รหัสผ่านมาแล้วก็ยากที่จะหาตัวผู้โจมตีเนื่องจากพวกเขาเป็นเหมือนเป็นยูสเซอร์ธรรมดาเท่านั้น การป้องกันการโจมตีวิธีนี้จึงทำได้โดยการไม่ยอมให้ผู้โจมตีเข้าถึงโฮสต์ได้และใช้การติดต่อที่เข้ารหัส ในการต่อระหว่างโฮสต์โดยใช้เครื่องมืออย่างเช่น SSH แทน โชคไม่ดีที่โปรโตคอลอื่นเปิดโอกาสให้มีการโจมตี นี้ได้เช่นกัน (POP, FTP,HTTP) คุณอาจแก้ไขโดยการใช้ SSH ผ่านระบบการทำงานของ SSH เพื่อการใช้เซอร์วิสเหล่านี้ แต่ยูสเซอร์หลายคนปฏิเสธที่จะใช้ถ้าไม่ได้บังคับอย่างจริงจัง วิธีแก้ปัญหาจริงคือการใช้ โปรโตคอล IPSec อย่างกว้างขวาง ซึ่งอาจจะต้องใช้เวลาอีกหลายปี


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


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

(FingerPrint)

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


--------------------------------------------------------------------------------



เรียบเรียงโดย : ภูวดล ด่านระหาญ
เรียบเรียงเมื่อ : 27 กันยายน 2544

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

ในขั้นตอนของการหาข้อมูลของเครื่องเป้าหมายนั้น ผู้บุกรุกจำเป็นต้องทราบว่าเครื่องเป้าหมายนั้น service อะไรอยู่บ้าง และถ้าได้ข้อมูลของ network topology และระบบปฏิบัติการด้วยแล้วก็จะเป็นข้อมูลที่มีประโยชน์มาก มีเครื่องมือหลายตัวและมีหลายวิธีในการตรวจสอบ network topology และ service ของเครื่องเป้าหมาย Firewalk ก็เป็นอีกเครื่องมือหนึ่งที่ David Goldsmith และ Michael Schiffman สร้างขึ้นมา โดยลักษณการทำงานจะคล้ายๆ กับ traceroute เพื่อใช้ตรวจสอบว่ามี service อะไรที่ไฟร์วอลล์เปิดให้ผ่านเข้าไปได้ และใช้ตรวจสอบ access control ได้ด้วย

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

Traceroute (อ่านว่า เทรซเร้าว์) อ่านผิดอายเค้าแย่เลย
คำสั่ง tracert (Windows) หรือ traceroute (*NIX) เป็นเครื่องมือช่วยในการตรวจสอบเครือข่าย โดยจะแสดง IP ของ router หรือ gateway ที่ packet วิ่งผ่านจากที่หนึ่งไปยังอีกเครือข่ายหนึ่งทีละ hop โดย traceroute ใช้คุณสมบัติของ IP Time To Live (TTL) ในการทำงาน

TTL ถูกนำไปใช้ในโปรโตคอล IP เพื่อป้องการการเกิดลูปที่ไม่รู้จบจากการวนของ pakcet โดยในแต่ละ device ที่ได้รับ packet จะลดค่าของ TTL ลงทีละ 1 และถ้า TTL มีค่าเป็นศูนย์หรือน้อยกว่า packet นั้นจะถูก drop ไป และ router ก็จะส่งข้อมูล ICMP "TTL Exceed in Transit" กลับมายังเครื่องที่รันคำสั่งนี้

Traceroute ใช้หลักการนี้ในการทำงาน โดยมันจะกำหนดค่า TTL counter ที่ทำให้ router ที่ packet ผ่านไปนั้นต้องสร้าง ICMP message กลับมาเสมอ สำหรับคำสั่ง tracert ใน Windows นั้น จะใช้ ping (ICMP Echo) เป็นตัวส่ง packet ออกไป ในขณะที่ traceroute ใน Unix นั้น จะใช้ UDP datagram เป็นตัวส่งข้อมูลออกไป datagram ที่ถูกส่งออกไปนั้นจะถูกส่งไปยัง port 33434 โดยดีฟอลต์ และ ค่าหมายเลข port นี้จะถูกเพิ่มขึ้นเมื่อได้รับ packet ที่ตอบกลับมาอย่างถูกต้อง โดยปกติแล้ว traceroute มักจะส่ง datagram ออกไปจำนวน 3 datagram เพื่อป้องกันการสูญหายระหว่างทาง

ด้านล่างนี้แสดงตัวอย่างการใช้ tracert.exe ใน Windows

C:\WINDOWS>tracert quote.yahoo.com
Tracing route to finance.yahoo.com [204.71.203.155]
over a maximum of 30 hops:
1 99 ms 100 ms 119 ms tnt3.culpeper.va.da.uu.net [206.115.221.174]
2 99 ms 119 ms 115 ms 206.115.233.205
3 106 ms 104 ms 102 ms Fddi0-0.HR1.DCA1.ALTER.NET [137.39.33.130]
4 112 ms 95 ms 113 ms 102.ATM3-0.XR1.DCA1.ALTER.NET [146.188.160.254]
5 103 ms 98 ms 104 ms 195.at-7-2-0.XR1.DCA8.ALTER.NET [146.188.163.6]
6 98 ms 111 ms 111 ms POS6-0.BR3.DCA8.ALTER.NET [152.63.36.5]
7 110 ms 102 ms 104 ms 137.39.52.18
8 106 ms 104 ms 112 ms pos2-0-155M.cr1.WDC2.gblx.net [208.178.174.53]
9 172 ms 180 ms 167 ms pos7-0-2488M.cr2.SNV.gblx.net [208.50.169.86]
10 168 ms 165 ms 167 ms ge1-0-1000M.hr8.SNV.gblx.net [206.132.254.41]
11 168 ms 174 ms 165 ms bas1r-ge3-0-hr8.snv.yahoo.com [208.178.103.62]
12 176 ms 169 ms 175 ms finance.yahoo.com [204.71.203.155]
Trace complete.

เมื่อไฟร์วอลล์ถูกติดตั้งให้ไม่ตอบสนองต่อ traceroute และ ping จากโลกภายนอก เพื่อป้องกันไม่ให้ผู้บุกรุกเก็บข้อมูลของเครือข่ายภายในได้ ตัวอย่างด้านล่างนี้แสดงถึงผลลัพธ์ที่ได้จาก tracert.exe เมื่อถูกป้องกัน traffic ของ ping โดยไฟร์วอลล์หรือ router

C:\WINDOWS>tracert vanguard.com
Tracing route to vanguard.com [192.175.182.6]
over a maximum of 30 hops:
1 103 ms 98 ms 97 ms tnt3.culpeper.va.da.uu.net [206.115.221.174]
2 105 ms 104 ms 104 ms 206.115.233.205
3 103 ms 97 ms 104 ms Fddi0-0.HR1.DCA1.ALTER.NET [137.39.33.130]
4 101 ms 736 ms 103 ms 102.ATM2-0.XR2.DCA1.ALTER.NET [146.188.160.250]
5 105 ms 105 ms 103 ms 294.at-7-2-0.XR2.DCA8.ALTER.NET [146.188.163.30]
6 100 ms 104 ms 118 ms POS7-0.BR2.DCA8.ALTER.NET [152.63.35.193]
7 107 ms 105 ms 106 ms uu-gw.wswdc.ip.att.net [192.205.32.133]
8 103 ms 104 ms 103 ms gbr4-p50.wswdc.ip.att.net [12.123.9.54]
9 100 ms 102 ms 98 ms gbr1-p60.wswdc.ip.att.net [12.122.1.221]
10 101 ms 117 ms 126 ms ar1-a3120s4.wswdc.ip.att.net [12.123.8.45]
11 118 ms 103 ms 104 ms 12.127.47.50
12 * * * Request timed out.
13 * * * Request timed out.

จากตัวอย่างแสดงให้เห็นว่า ไม่สามารถ trace ได้อย่างสมบูรณ์ และจะได้รับ timeout message เมื่อคำสั่ง ping ถูก drop โดยปลายทาง และให้คุณสังเกตุแต่ละ hop (จากตัวอย่างได้ 11 hob) ถ้าคุณใช้คำสั่ง nslookup และตามด้วย IP ของแต่ละ hob คุณก็จะทราบว่า ก่อนที่เครื่องของคุณจะไปถึงเว็บ vanguard.com นั้นต้องผ่านที่ไหน ประเทศไหนบ้าง เราพิมพ์ไอพีแอดเดรสลงไป ในที่นี้เราพิมพ์ 203.94.12.01 (ซึ่งเป็นไอพีที่ผมต้องการหา)


$>nslookup 203.94.12.01

คุณจะเห็นผลลัพธ์ออกมาเป็น: mail2.nol.net.in ในตอนนี้ถ้าคุณดูที่ชื่อ hostname ที่เปลี่ยนมาจากไอพีแอดเดรสอย่างตั้งใจ จะเห็นได้ว่าส่วนหลังสุดจะบอกถึง ประเทศที่ระบบนั้นตั้งอยู่ จากตัวอย่างคุณเห็น '.in' ซึ่งบอกว่าระบบนี้อยู่ในประเทศอินเดีย ทุกประเทศมีรหัสประเทศของตัวเองซึ่งจะเห็นได้บ่อยมากกว่าชื่อท้ายสุดที่ไม่ใช่รหัสประเทศ วิธีนี้สามารถใช้เพื่อค้นหาว่าคน ๆ นั้น อยู่ในประเทศใหนถ้าคุณรู้อีเมลของเขา เช่น ถ้าคนนั้นมีที่อยู่อีเมลลงท้ายด้วย .ph แสดงว่าเขาอาจจะอาศัยอยู่ใน ประเทศฟิลิปปินส์ ประเทศอื่น ๆ ก็ทำนองเดียวกันนี้ รหัสประเทศ โดยทั่ว ๆ ไปเช่น:

ประเทศ รหัสประเทศ

ฟิลิปปินส์ .ph

ออสเตรเลีย .au

อินโดนีเซีย .id

อินเดีย .in

ญี่ปุ่น .jp

อิสราเอล .il

สหราชอาณาจักร .uk


รายการรหัสประเทศที่ครบสมบูรณ์ดูได้ที่: http://www.alldomains.com/ และ http://www.iana.org/domain-names.html

รายการรหัสรัฐต่าง ๆ ของสหรัฐ ฯ ดูที่: http://www.usps.gov/ncsc/lookups/abbr_state.txt

ผู้ที่ใช้วินโดวส์สามารถแปลงไอพีให้เป็น hostname ได้โดยการดาวน์โหลดยูทิลิตี้ที่ชื่อ Samspade จาก http://www.samspade.com/

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

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

คุณสามารถใช้บริการ WHOIS ที่ http://www.alldomains.com/ นอกจากนี้คุณสามารถป้อนชื่อ hostname เข้าไปในบราวเซอร์ของคุณเพื่อใช้บริการ WHOIS โดยใช้ URL นี้: http://205.177.25.9/cgi-bin/whois?abc.com โดยเปลี่ยนชื่อ abc.com เป็นชื่อโดเมนที่คุณต้องการถามข้อมูลโดยใช้ WHOIS

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

ถ้าบุคคลนั้นลงทะเบียนชื่อโดเมน และคุณต้องการใช้มันเพื่อค้นหาว่าเขาอยู่ในเมืองไหน สิ่งที่ควรสังเกตในกรณีนี้ คือถ้าบุคคลนั้นลงทะเบียนชื่อโดเมนที่ใช้บริการฟรี เช่น Namezero.com ดังนั้นชื่อโดเมนอาจจะลงทะเบียน โดยใช้ชื่อของบริษัทนั้นและไม่ใช่ชื่อของบุคคลที่เราต้องการค้นหา ฉะนั้นการใช้บริการ WHOIS จะให้ข้อมูล เกี่ยวกับไอเอสพีไม่ใช่บุคคลที่เราต้องการค้นหา

ข้อสังเกต: บริการ WHOIS โดยค่าเริ่มต้นจะรันอยู่ที่พอร์ต 43 ของระบบนั้น ลองใช้บริการโดยการ telnet ไปที่พอร์ต 43 และลองพิมพ์ค้นหา ผมไม่เคยลอง แต่มันต้องสนุกแน่ ๆ

Firewalking
ไฟร์วอลล์จะเป็นตัวหยุดยั้ง traceroute packet และจะไม่ยินยอมให้ traceroute packet ผ่านไปยังเครื่องเป้าหมาย วิธีการทำงานของ firewalking นั้น ใช้พื้นฐานที่ว่า ถ้าไฟร์วอลล์อนุญาตให้ traffic ชนิดใดผ่านไปได้ firewalking ก็จะส่ง packet ชนิดนั้นๆ ผ่านเข้าไป เช่น ถ้าไฟร์วอลล์อนุญาตให้ UDP port 53 (DNS queries) ผ่านเข้าไปยัง DNS server ที่ตั้งอยู่ภายในเครือข่ายนั้นๆ ผู้บุกรุกก็สามารถส่ง UDP port 53 พร้อมกับค่า TTL ของ hop ถัดไป เพื่อให้ผ่านไฟร์วอลล์เข้าไปได้ และได้ข้อมูลกลับออกมา และเนื่องจาก traceoute ถูกออกแบบให้ใช้งานฟิลด์ TTL ซึ่งทำงานบน IP protocol (network layer) ดังนั้นมันจึงสามารถใช้งานได้กับ upper layer protocol อื่นๆ ได้ เช่น UDP, TCP, ICMP ดังนั้นจึงทำให้สามารถตรวจสอบ service ที่เปิดให้บริการหลังไฟร์วอลล์ได้

สรุป
เราสามารถหยุดการใช้งาน Firewalking ได้โดยการบล็อค TTL Exceeded in Transit packet ขาออกที่ไฟร์วอลล์ หรือใช้ NAT (Network Address Translation) เพื่อซ่อน IP address ของโฮสต์ภายในเครือข่าย

สิ่งที่บทความนี้ต้องการจะเน้นย้ำก็คือ การใช้ระบบป้องกันเพียง layer เดียวนั้นไม่เพียงพอแล้วในปัจจุบัน และเราก็ไม่สามารถที่จะไว้วางใจไฟร์วอลล์ได้ว่าจะสามารถปกป้องเครือข่ายจากการหาข้อมูลของบรรดาผู้บุกรุกได้ ดูเหมือน host based detection จะเป็นตัวช่วยที่ดีอีกทางหนึ่งได้เช่นกัน นอกจากนี้ network intrusion detection system (NIDS) ก็ยังสามารถเป็นหูเป็นตาให้ผู้ดูแลระบบได้ด้วย

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


--------------------------------------------------------------------------------

แบบโปรแกรมที่แสดงผลเป็น Graphic

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



จากภาพตัวอย่างคุณสามารถเห็นเส้นทางการเดินทางของ packet ในแต่ละ hop ได้โดยง่าย คืออย่าคุณจะเข้าไปดูที่เว็บไหนสักแห่งหนึ่งนั้น เครื่องคุณต้องไปผ่านประเทศไหนบ้าง เมืองอะไร คือคุณไม่ต้องอาศัยเทคนิคหรือความเข้าใจในคำสั่ง tracert ,whois , nslookup มากเท่าไหร่ คุณก็ได้ข้อมูลที่สมบูรณ์มาแล้วด้วยโปรแกรมนี้ แจ่มฮะ

จาก http://www.geocities.com/qillip_hack/
คอนโทรล (Ctrl) ออลติเนต (Alt) และดีลีท (Delete) คือคำสั่งยอดฮิตสำหรับจัดการกับคอมพิวเตอร์ที่ไม่สามารถควบคุมได้ที่ผู้ใช้คอมพิวเตอร์ทั่วไปรู้จักกันดี โดยทั้งสามปุ่มนี้จะต้องกดพร้อม ๆ กัน จากนั้นระบบจะทำการบูตเครื่องใหม่ ซึ่งทั้งสามปุ่มนี้ เป็นที่รู้จักและยอมรับอย่างแพร่หลายมาตลอด 10 ปีที่คอมพิวเตอร์มีบทบาทกับชีวิตของมนุษย์เรา

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

บรัดเลย์เข้าร่วมงานกับไอบีเอ็มเป็นครั้งแรกในปี ค.ศ. 1975 ในตำแหน่งวิศวกร ประจำอยู่ที่โบคา ราตัน รัฐฟลอริด้า จากนั้นในปี 1980 เขาคือทีมงาน 1 ใน 12 คนของไอบีเอ็มที่ปลุกปั้นคอมพิวเตอร์พีซีขึ้นมา ซึ่งนั่นทำให้เขาย้ายมาทำในส่วนของการวิจัยและพัฒนาให้กับไอบีเอ็ม

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

“ในตอนนั้นผมไม่ทราบหรอกว่ามันจะกลายเป็นคำสั่งสำคัญของคอมพิวเตอร์พีซีในอนาคต เพราะว่าผมก็ต้องคิดคำสั่งต่าง ๆ อีกมากมาย นอกเหนือจาก Ctrl+Alt+Delete แต่ปรากฏว่าคำสั่งดังกล่าวนี้ เป็นที่รู้จักมากที่สุด”

แต่ก็อาจกล่าวได้ว่า ชื่อเสียงที่โด่งดังของเขานั้น ขึ้นอยู่กับความผิดพลาดของคนสร้างโปรแกรม ว่าจะสร้างพลาดมากน้อยเพียงไร โดยเขากล่าวว่า “ผมอาจจะเป็นคนสร้างมันขึ้นมา แต่บิล เกตต์ คือคนที่ทำให้มันเป็นที่รู้จัก” ซึ่งการสรรเสริญของบรัดเลย์ต่อบิล เกตต์ครั้งนี้ ทำให้เจ้าของค่ายยักษ์ใหญ่อย่างไมโครซอฟท์ ผู้สร้างซอฟต์แวร์Microsoft’s Windows ชื่อดังถึงกับหัวเราะไม่ออกมาแล้ว เพราะอีกนัยหนึ่งก็คือ การตอกย้ำให้เห็นถึงความผิดพลาดในการทำงานของซอฟต์แวร์ของบิล เกตต์นั่นเอง

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