Clear
Lead Graphic Papers

Nmap

ผู้เขียน: ธงชัย ศิลปวรางกูร
วันที่เผยแพร่: 1 มีนาคม 2556
ปรับปรุงล่าสุด: 1 มีนาคม 2556

Share on Facebook Share on Twitter Share on Google+

ในบรรดาซอฟต์แวร์ที่เกี่ยวข้องกับทางด้าน Network security นั้น Nmap ถือว่าเป็นซอฟต์แวร์ตัวหนึ่งที่ได้รับความนิยมเป็นอย่างสูง และถูกนำไปใช้กันอย่างแพร่หลายโดยเฉพาะผู้ที่ทำงานในด้านการดูแลระบบเครือข่ายและระบบความมั่นคงปลอดภัย เริ่มแรกนั้น Nmap ถูกพัฒนาขึ้นสำหรับระบบปฏิบัติการ Linux เพื่อใช้ในการค้นหาและสร้างรูปแบบการเชื่อมต่อระหว่างอุปกรณ์ภายในระบบเครือข่ายเป็นหลัก แต่ต่อมาได้ถูกพัฒนาให้มีความสามารถในการค้นหาบริการที่เปิดใช้งานอยู่บนระบบคอมพิวเตอร์ และยังถูกนำไปพัฒนาต่อเพื่อให้สามารถใช้บนระบบปฏิบัติการอื่น ๆ ได้อีกด้วย สิ่งที่ทำให้ Nmap ได้รับความนิยมนั้นคือ ฟังก์ชันการทำงานที่มีให้เลือกใช้และสามารถปรับแต่งได้อย่างหลากหลาย รวมถึงสามารถเลือกใช้ได้บนแทบทุกระบบปฏิบัติการที่นิยมใช้กันในปัจจุบัน ไม่ว่าจะเป็น Windows, Linux, Mac OS หรือแม้กระทั่งระบบปฏิบัติการสำหรับอุปกรณ์พกพาอย่างเช่น Android จึงทำให้ Nmap เป็นตัวเลือกแรก ๆ ในบรรดาซอฟต์แวร์ประเภท Network security scanner

ความสามารถโดยทั่วไป

  • Host Discovery: การค้นหาอุปกรณ์ที่กำลังทำงานอยู่ในระบบเครือข่ายเป้าหมาย
  • Port Scanning: การตรวจสอบพอร์ตที่เปิดใช้งานอยู่บนระบบเป้าหมาย เพื่อนำไปหมายเลขพอร์ตที่ได้ไปค้นหาต่อว่าระบบดังกล่าวเปิดให้บริการอะไร
  • Operating System / Service Version Detection: การตรวจสอบเวอร์ชันของระบบปฏิบัติการและบริการที่เปิดใช้งานบนระบบเป้าหมาย
  • Script Scanning: การใช้สคริปต์เพื่อเพิ่มความสามารถของ Nmap ในการทำงานด้านอื่น ๆ โดยทั่วไปจะเกี่ยวข้องกับการตรวจสอบความมั่นคงปลอดภัยของระบบ ความสามารถของ Nmap ในการเรียกใช้สคริปต์นี้มีชื่อว่า Nmap Scripting Engine ซึ่งไม่ได้อธิบายในบทความนี้ แต่จะขอกล่าวในโอกาสต่อไป

การติดตั้งโปรแกรม

Windows, Mac OS และ RPM-based Linux distribution

ระบบปฏิบัติการที่อยู่ในหัวข้อนี้นอกจาก Windows และ Mac OS แล้ว ยังรวมถึง Linux ที่ใช้ RPM เป็นระบบจัดการแพ็คเกจ เช่น Red Hat Enterprise Linux, CentOS, Fedora, openSUSE และ Mandriva ผู้ที่ใช้ระบบปฏิบัติการเหล่านี้สามารถดาวน์โหลดตัวติดตั้งสำเร็จรูปจากหน้า Download ได้โดยตรง [1] ส่วนขั้นตอนการติดตั้งโปรแกรมนั้น หากเป็น Windows หรือ Mac OS จะทำผ่านทาง Installation wizard เหมือนโปรแกรมอื่น ๆ ทั่วไป ส่วน Linux สามารถใช้คำสั่ง rpm ผ่านทาง Command-line เพื่อติดตั้งโปรแกรม

Debian-based Linux distribution

ระบบปฏิบัติการที่อยู่ในหัวข้อนี้ เช่น Debian และ Ubuntu เป็นต้น ผู้ที่ใช้ระบบปฏิบัติการเหล่านี้สามารถติดตั้งผ่านทางโปรแกรมจัดการแพ็คเกจที่มาพร้อมกับระบบปฏิบัติการ เช่น apt-get ได้โดยใช้คำสั่งต่อไปนี้ผ่านทาง Command-line

sudo apt-get install nmap
sudo apt-get install zenmap (สำหรับผู้ที่ต้องการใช้โปรแกรม Zenmap)

เมื่อติดตั้งเสร็จแล้ว ปกติจะสามารถเรียกใช้ผ่านทาง Command-line โดยใช้โปรแกรม Command Prompt บน Windows หรือโปรแกรม Terminal บน Mac OS และ Linux ได้ทันที แต่สำหรับผู้เริ่มต้นอาจเลือกใช้โปรแกรมผ่านทาง GUI เช่น Zenmap ได้เช่นกัน ซึ่งจะอธิบายในหัวข้อถัด ๆ ไป อย่างไรก็ตาม วิธีดังกล่าวมักไม่ได้ติดตั้งโปรแกรมที่เป็นเวอร์ชันล่าสุด ดังนั้นหากผู้ที่ใช้ระบบปฏิบัติการในหัวข้อนี้ต้องการติดตั้งโปรแกรมเวอร์ชันล่าสุด จะต้องดาวน์โหลด Source code มา Compile และติดตั้งด้วยตัวเอง หรือใช้คำสั่ง alien ในการแปลงไฟล์แพ็คเกจ .rpm ให้เป็น .deb ก่อนที่จะติดตั้งด้วยคำสั่ง dpkg ผ่านทาง Command-line [2]

คำสั่งการใช้งานพื้นฐาน

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

nmap <scan-technique> <options> <target>

คำสั่งของ Nmap นั้นประกอบด้วย 3 ส่วนหลักดังที่เห็นข้างบน ในส่วนของ <scan-technique> เป็นการระบุเทคนิคที่จะใช้ในการสแกนระบบเป้าหมาย เช่น TCP SYN scan หรือ UDP scan ซึ่งสามารถระบุได้หลายเทคนิคพร้อมกัน ส่วน <options> เป็นการระบุตัวเลือกอื่น ๆ ประกอบซึ่งมีให้เลือกใช้เป็นจำนวนมาก ตัวอย่างเช่น การตรวจสอบระบบปฏิบัติการ การระบุหมายเลขพอร์ตที่จะสแกน และการกำหนดรูปแบบของผลลัพธ์ที่ได้ ส่วนสุดท้ายคือ <target> เป็นส่วนที่ใช้ระบุเป้าหมายที่จะทำการตรวจสอบ โดยทั่วไปจะนิยมระบุเป็น IP address, กลุ่มของ IP address ในรูปของ CIDR notation (เช่น 192.168.1.0/24), Hostname หรือ Domain name ทั้งนี้บางคำสั่ง เช่น การตรวจสอบระบบปฏิบัติการ จำเป็นที่จะต้องใช้สิทธิ์ของผู้ดูแลระบบ (Administrator account ใน Windows หรือ root ใน Mac OS และ Linux) ในการใช้งาน เนื่องจากคำสั่งเหล่านี้ต้องการที่จะสร้างแพ็คเก็ตเพื่อส่งไปยังระบบเป้าหมาย ในรูปแบบพิเศษที่ไม่อ้างอิงกับมาตรฐานการทำงานของโพรโทคอลตามปกติ หรือไม่ใช้รูปแบบที่ระบบปฏิบัติการจัดเตรียมไว้ให้

การตรวจสอบหาระบบที่กำลังทำงาน

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

nmap -sn <target>

ตัวแปร -sn หมายถึงการทำ Ping scan ในอีกความหมายหนึ่งคือการกำหนดไม่ให้ทำ Port scan

การตรวจสอบบริการ เวอร์ชันของบริการ และระบบปฏิบัติการ

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

nmap -sS -sV -O <target>

ตัวแปร -sS หมายถึง ใช้เทคนิคการสแกนแบบ TCP SYN Scan ซึ่งเป็นเทคนิคพื้นฐานที่มักนิยมใช้ทั่วไป โดยผู้ใช้สามารถเปลี่ยนหรือเพิ่มเทคนิคการสแกนรูปแบบอื่นได้ ส่วนตัวแปร -sV และ -O หมายถึงการตรวจสอบหาเวอร์ชันของบริการและระบบปฏิบัติการตามลำดับ

การตรวจสอบบริการที่เปิดใช้งานโดยระบุหมายเลขพอร์ต

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

nmap -p <port-range> <target>

ตัวแปร -p หมายถึงเป็นการกำหนดให้สามารถระบุหมายเลขพอร์ตได้ ส่วน <port-range> คือช่วงของหมายเลขพอร์ตที่ต้องการตรวจสอบ ซึ่งสามารถระบุได้หลายรูปแบบดังนี้

  • ระบุหมายเลขพอร์ตเดียว
  • ระบุหลายหมายเลขพอร์ต เช่น 80,443
  • ระบุหมายเลขพอร์ตเป็นช่วงที่ต่อเนื่องกัน เช่น 21-25
  • ระบุหมายเลขพอร์ตและช่วงของหมายเลขพอร์ตผสมกัน เช่น 21-25,80,443
  • ระบุหมายเลขพอร์ตและโพรโทคอล (TCP หรือ UDP) เช่น T:21-25,80,443,U:53

ตัวเลือกคำสั่งอื่น ๆ

การกำหนดความเร็วในการสแกน

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

-T<number>

<number> สามารถระบุได้ตั้งแต่ 0 ถึง 5 ยิ่งมีค่ามากก็จะยิ่งทำการสแกนได้เร็ว แต่ก็แลกกับความถูกต้องแม่นยำของผลลัพธ์ที่ได้ โดยปกติหากไม่ระบุตัวแปรนี้ลงในคำสั่งจะมีค่าเท่ากับการใช้ตัวแปร -T3 สำหรับวิธีการใช้ตัวแปรนี้ ให้ระบุควบคู่ไปกับตัวแปรที่ระบุเทคนิคการสแกนและตัวแปรที่ระบุระบบเป้าหมาย ตัวอย่างเช่น nmap -sS -T4 192.168.1.1 อย่างไรก็ตาม ยังมีอีกหลายตัวแปรสำหรับใช้กำหนดค่าต่าง ๆ ที่เกี่ยวกับการรับส่งแพ็ตเก็ตอย่างละเอียด เช่น การกำหนด Timeout และ Delay แต่จะขอไม่อธิบายวิธีการใช้ในบทความนี้ ผู้ที่สนใจสามารถศึกษาเพิ่มเติมได้จากเว็บไซต์ทางการของ Nmap ในหัวข้อ Timing and Performance [3]

การกำหนดรูปแบบของผลลัพธ์

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

  • -oN <output-file>: แสดงผลลัพธ์ในรูปแบบปกติทั่วไป (เป็นค่าตั้งต้น ไม่จำเป็นต้องระบุก็ได้)
  • -oX <output-file>: แสดงผลลัพธ์ในรูปของ XML

ส่วน <output-file> คือ Path ของไฟล์ที่จะบันทึกผลลัพธ์การสแกนไว้

Runtime Interaction

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

  • p: เปิดการทำงาน Packet tracing
  • v: แสดงสถานะการทำงานในแต่ละขั้นตอนให้มากขึ้น
  • d: แสดงการทำงานเบื้องหลังที่ละเอียดมากขึ้น
  • ?: แสดงรายละเอียดคำสั่งที่สามารถใช้ได้ในโหมดนี้

หากผู้ใช้ต้องการยกเลิกคำสั่งใด ให้พิมพ์อักษรตัวพิมพ์ใหญ่ของคำสั่งนั้น ๆ

การใช้งานผ่านโปรแกรม Zenmap

สำหรับผู้ใช้ในระดับเริ่มต้นที่ไม่ถนัดจะใช้โปรแกรม Nmap ผ่านทาง Command-line สามารถเลือกใช้โปรแกรม Zenmap ซึ่งเป็น GUI front-end ของโปรแกรม Nmap ที่มาพร้อมกับตัวติดตั้งมาตรฐานแทนได้ โดยเมื่อเปิดโปรแกรม Zenmap ขึ้นมาจะพบกับหน้าต่างดังรูปที่ 1

Pa2013te001-1.jpg
รูปที่ 1 หน้าต่างหลักของโปรแกรม Zenmap

หน้าต่างหลักของโปรแกรม Zenmap แบ่งออกเป็น 3 ส่วนดังนี้

  1. ส่วนที่เกี่ยวข้องกับคำสั่ง ประกอบด้วย
    • Target: ระบบเป้าหมายที่จะทำการตรวจสอบ ในช่องนี้สามารถระบุเป็น IP address, Hostname หรือ Domain name ก็ได้
    • Profile: ลักษณะการสแกนในรูปแบบต่าง ๆ เช่น Ping scan หรือการสแกนเฉพาะพอร์ต TCP โดยโปรแกรม Zenmap จะมีโปรไฟล์มาให้เลือกใช้อยู่แล้วส่วนหนึ่ง
    • Command: คำสั่งที่จะใช้ในการประมวลผล ซึ่งจะปรากฏหลังจากที่ระบุค่าในช่อง Target และเลือกโปรไฟล์แล้ว ทั้งนี้ผู้ใช้สามารถระบุคำสั่งลงในช่องนี้ได้โดยตรง โดยไม่ต้องระบุค่าในช่อง Target และเลือกโปรไฟล์ก็ได้
  2. หน้าต่างสำหรับกรองผลการสแกนตามอุปกรณ์หรือบริการที่ตรวจพบ เมื่อเลือกรายการใด ๆ ในหน้าต่างนี้จะทำให้หน้าต่างทางด้านขวาแสดงผลลัพธ์ที่สัมพันธ์กับรายการที่เลือกไว้ แบ่งออกเป็น 2 ส่วนย่อยคือ
    • Hosts: รายการอุปกรณ์ทั้งหมดที่ตรวจพบว่ากำลังทำงานอยู่ในระบบเครือข่าย โดยแสดงข้อมูลของระบบปฏิบัติการที่ใช้, Hostname (ถ้ามี) และ IP address ของแต่ละเครื่อง
    • Services: บริการที่ตรวจพบว่ากำลังเปิดใช้งานอยู่บนระบบ
  3. หน้าต่างแสดงผลการสแกนระบบเป้าหมาย แบ่งออกเป็น 5 แท็บได้แก่
    • Nmap Output: แสดงผลลัพธ์การสแกนที่ได้ทั้งหมด ซึ่งจะมีหน้าตาเหมือนกับผลลัพธ์ที่ได้จากการเรียกใช้ Nmap ผ่านทาง Command line
    • Ports / Hosts: รายละเอียดของบริการที่เปิดใช้งานอยู่บนระบบเป้าหมาย ประกอบไปด้วยหมายเลขและสถานะของพอร์ต โพรโทคอล ชื่อและเวอร์ชันของบริการ
    • Topology: รูปแบบโครงสร้างการเชื่อมต่อของอุปกรณ์ที่ตรวจพบภายในเครือข่าย ซึ่งสร้างขึ้นจากผลลัพธ์ที่ได้จากการสแกน
    • Host Details: รายละเอียดของระบบเป้าหมายที่ตรวจพบ เช่น IP address, MAC address และ Hostname
    • Scans: รายการคำสั่งที่เคยเรียกใช้

ในการใช้งานทั่วไปนั้น ผู้ใช้เพียงระบุค่าในช่อง Target จากนั้นเลือกโปรไฟล์แล้วคลิกปุ่ม Scan ก็ถือว่าเป็นอันเสร็จสิ้น แต่ในกรณีที่ผู้ใช้ต้องการสแกนในรูปแบบอื่น ๆ นอกเหนือจากโปรไฟล์ที่มีให้เลือก ผู้ใช้สามารถเพิ่มโปรไฟล์ได้เองโดยการเลือกเมนู Profile -> New Profile or Command จะพบกับหน้าต่าง Profile Editor ดังรูปที่ 2 โดยคำสั่งพื้นฐานของ Nmap จะอยู่ในแท็บ Scan และ Ping ผู้ใช้เพียงระบุชื่อโปรไฟล์ในแท็บ Profile จากนั้นเลือกคำสั่งที่ต้องการในแท็บอื่น ๆ แล้วคลิกปุ่ม Save Changes ก็สามารถนำโปรไฟล์ดังกล่าวไปใช้งานได้

Pa2013te001-2.jpg
รูปที่ 2 หน้าต่าง Profile Editor

เมื่อทำการสแกนเสร็จแล้ว ผู้ใช้สามารถบันทึกผลลัพธ์ของการสแกนได้โดยเลือกเมนู Scan -> Save Scan

สรุป

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

อ้างอิง

  1. http://nmap.org/download.html
  2. http://nmap.org/book/inst-linux.html
  3. http://nmap.org/book/man-performance.html
Clear