วันเสาร์ที่ 19 ตุลาคม พ.ศ. 2562

Cross-Origin Resource Sharing (CORS) เป็นสิ่งที่ Web Developer ต้องควรรู้




Cross-Origin Resource Sharing (CORS) เป็นสิ่งที่ Web Developer ต้องควรรู้



 
ขอบอกก่อนเลยว่า Cross-Origin Resource Sharing (CORS) ไม่ใช่สิ่งแปลกใหม่อะไรสำหรับเว็บเดฟ หากเราไม่ได้เขียนเว็บดึง API จาก Domain อื่นหรือ Server ก็แทบจะไม่เจอปัญหาเรื่อง CORS เลย
บทความนี้จะพูดถึงเรื่อง CORS และวิธีการแก้ปัญหา





Cross-Origin Resource Sharing (CORS)

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


หากต้องการร้องขอข้อมูลจาก domain-b.com ก็จะเจอ Error แบบนี้



ตัวอย่าง โดเมน domain-a.com ไม่ได้รับอนุญาติจาก domain-b.com

เพราะปัจจุบันเรามักจะแยกฝั่ง Front-end และ Back-end ออกจากกันเป็นคนละโดเมน ด้วยเหตุผลเรื่องความปลอดภัยของ Browsers HTTP การอนุญาตให้เข้าถึงแหล่งข้อมูลจะต้องอยู่โดเมนเดียวกันเท่านั้น เว้นแต่ว่าแหล่งข้อมูลนั้นจะอนุญาตให้โดเมนของ Browsers สามารถเข้าถึงข้อมูลเหล่านั้นได้
ก่อนเข้าถึงวิธีแก้ เรามาเข้าใจการทำงานของมันซะก่อน

การทำงานของ Browser กับ Server

 

 



เมื่อรันแอป เว็บบราวเซอร์จะส่ง request ไปหา Server โดยแบ่งออกเป็น 2 รอบ
รอบที่ 1 บราวเซอร์จะส่ง request method เป็น OPTIONS โดยข้างใน OPTIONS จะมีการแนบโดเมนต้นทาง หากโดเมนที่แนบมาได้รับอนุญาตจากเซิร์ฟเวอร์ รอบที่2เขาก็สามารถส่ง request เรียกใช้ API ข้อมูลได้จากเซิร์ฟเวอร์ได้

วิธีการแก้ไขปัญหา CORS กับ Browser

หากเราเป็นเจ้าของ Server
เราก็สามารถอนุญาตโดเมนที่ต้องการให้เข้าถึงแหล่งข้อมูลได้ โดยกำหนด
Access-Control-Allow-Origin: ‘domain-a.com’


ตัวอย่าง การกำหนด CORS ใน Node.js

Access-Control-Allow-Origin: คือ Origin ที่อนุญาตให้ใช้ Resource ร่วมกันได้
Access-Control-Allow-Methods: คือ Methods ที่อนุญาตให้ใช้ในการติดต่อได้
Access-Control-Allow-Headers: คือ Headers ที่อนุญาตให้ใช้ในการติดต่อได้
หากต้องการอนุญาติให้ทุกโดเมนสามารถเข้าถึงแหล่งข้อมูลได้ดังนี้
Access-Control-Allow-Origin: ‘*’

แต่เดียวก่อน ถ้าใน code มี Access-Control-Allow-Credentials: true
ไม่ควร ใช้ ‘*’
แล้วถ้าอยาก Allow Origin มากกว่า 1 ละ


app.use((req, res, next) => {

let ALLOW_ORIGIN = req.headers.origin

if (

ALLOW_ORIGIN == 'domain-a.com' ||

ALLOW_ORIGIN == 'domain-b.com' ||

ALLOW_ORIGIN == 'domain-c.com'

) {

res.header('Access-Control-Allow-Origin', ALLOW_ORIGIN)

res.header('Access-Control-Allow-Credentials', 'true')

res.header(

'Access-Control-Allow-Methods',

'POST, GET, PUT, PATCH, DELETE, OPTIONS'

)

res.header('Access-Control-Allow-Headers', 'Content-Type, Option')

}

next()

})



https://gist.github.com/t4eng/e653f5eeb3d3b5e69bb7937b564a8d81#file-cors_multi_example-js
ตัวอย่าง การอนุญาติโดเมนที่มากกว่า 1

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



 

สรุป

หากเราต้องการรับ-ส่งข้อมูลผ่านแหล่งข้อมูล อย่าลืมกำหนดเรื่อง Cross-Origin Resource Sharing (CORS) ให้โดเมน Browser ของเราสามารถเข้าถึงข้อมูลได้
หวังว่าบทความนี้จะเป็นประโยชน์กับคนที่ติดปัญหาเรื่องนี้ ได้รู้วิธีการแก้ไขและสามารถนำไปปรับใช้ในชีวิตการทำงานได้นะครับ ^_^

ที่มา:https://medium.com/nellika/cors-%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99%E0%B8%AA%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88-web-developer-%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%84%E0%B8%A7%E0%B8%A3%E0%B8%A3%E0%B8%B9%E0%B9%89-c906b1b47958

วันศุกร์ที่ 4 ตุลาคม พ.ศ. 2562

Nmap

Nmap


ในบรรดาซอฟต์แวร์ที่เกี่ยวข้องกับทางด้าน 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

การติดตั้ง

On Debian

apt-get install nmap

On Ubuntu

sudo apt-get install nmap

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

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

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

Nmap อนุญาตให้ผู้ใช้สามารถเลือกรูปแบบของผลลัพธ์และบันทึกผลลัพธ์ดังกล่าวลงในไฟล์ได้ ในปัจจุบันนิยมใช้อยู่ 2 ตัวแปรคือ
  • -oN <output-file>: แสดงผลลัพธ์ในรูปแบบปกติทั่วไป (เป็นค่าตั้งต้น ไม่จำเป็นต้องระบุก็ได้)
  • -oX <output-file>: แสดงผลลัพธ์ในรูปของ XML
ส่วน <output-file> คือ Path ของไฟล์ที่จะบันทึกผลลัพธ์การสแกนไว้

Runtime Interaction

คำสั่งในหมวดนี้ใช้สำหรับดูรายละเอียดการทำงานเบื้องหลัง โดยวิธีการใช้นั้นจะให้ผู้ใช้กดปุ่มคีย์บอร์ดในขณะที่ Nmap กำลังทำการสแกนดังต่อไปนี้
  • p: เปิดการทำงาน Packet tracing
  • v: แสดงสถานะการทำงานในแต่ละขั้นตอนให้มากขึ้น
  • d: แสดงการทำงานเบื้องหลังที่ละเอียดมากขึ้น
  • ?: แสดงรายละเอียดคำสั่งที่สามารถใช้ได้ในโหมดนี้
หากผู้ใช้ต้องการยกเลิกคำสั่งใด ให้พิมพ์อักษรตัวพิมพ์ใหญ่ของคำสั่งนั้น ๆ
    ตัวอย่างการใช้งาน

Nmap Target Selection

Scan a single IPnmap 192.168.1.1
Scan a hostnmap www.testhostname.com
Scan a range of IPsnmap 192.168.1.1-20
Scan a subnetnmap 192.168.1.0/24
Scan targets from a text filenmap -iL list-of-ips.txt
These are all default scans, which will scan 1000 TCP ports. Host discovery will take place.

Nmap Port Selection

Scan a single Portnmap -p 22 192.168.1.1
Scan a range of portsnmap -p 1-100 192.168.1.1
Scan 100 most common ports (Fast)nmap -F 192.168.1.1
Scan all 65535 portsnmap -p- 192.168.1.1

Nmap Port Scan types

Scan using TCP connectnmap -sT 192.168.1.1
Scan using TCP SYN scan (default)nmap -sS 192.168.1.1
Scan UDP portsnmap -sU -p 123,161,162 192.168.1.1
Scan selected ports - ignore discoverynmap -Pn -F 192.168.1.1
Privileged access is required to perform the default SYN scans. If privileges are insufficient a TCP connect scan will be used. A TCP connect requires a full TCP connection to be established and therefore is a slower scan. Ignoring discovery is often required as many firewalls or hosts will not respond to PING, so could be missed unless you select the -Pn parameter. Of course this can make scan times much longer as you could end up sending scan probes to hosts that are not there.
Take a look at the Nmap Tutorial for a detailed look at the scan process.

Service and OS Detection

Detect OS and Servicesnmap -A 192.168.1.1
Standard service detectionnmap -sV 192.168.1.1
More aggressive Service Detectionnmap -sV --version-intensity 5 192.168.1.1
Lighter banner grabbing detectionnmap -sV --version-intensity 0 192.168.1.1
Service and OS detection rely on different methods to determine the operating system or service running on a particular port. The more aggressive service detection is often helpful if there are services running on unusual ports. On the other hand the lighter version of the service will be much faster as it does not really attempt to detect the service simply grabbing the banner of the open service.

Nmap Output Formats

Save default output to filenmap -oN outputfile.txt 192.168.1.1
Save results as XMLnmap -oX outputfile.xml 192.168.1.1
Save results in a format for grepnmap -oG outputfile.txt 192.168.1.1
Save in all formatsnmap -oA outputfile 192.168.1.1
The default format could also be saved to a file using a simple file redirect command > file. Using the -oN option allows the results to be saved but also can be monitored in the terminal as the scan is under way.

Digging deeper with NSE Scripts

Scan using default safe scriptsnmap -sV -sC 192.168.1.1
Get help for a scriptnmap --script-help=ssl-heartbleed
Scan using a specific NSE scriptnmap -sV -p 443 –script=ssl-heartbleed.nse 192.168.1.1
Scan with a set of scriptsnmap -sV --script=smb* 192.168.1.1

A scan to search for DDOS reflection UDP services

Scan for UDP DDOS reflectorsnmap –sU –A –PN –n –pU:19,53,123,161 –script=ntp-monlist,dns-recursion,snmp-sysdescr 192.168.1.0/24
UDP based DDOS reflection attacks are a common problem that network defenders come up against. This is a handy Nmap command that will scan a target list for systems with open UDP services that allow these attacks to take place. Full details of the command and the background can be found on the Sans Institute Blog where it was first posted.

HTTP Service Information

Gather page titles from HTTP servicesnmap --script=http-title 192.168.1.0/24
Get HTTP headers of web servicesnmap --script=http-headers 192.168.1.0/24
Find web apps from known pathsnmap --script=http-enum 192.168.1.0/24
There are many HTTP information gathering scripts, here are a few that are simple but helpful when examining larger networks. Helps in quickly identifying what the HTTP service that is running on the open port. Note the http-enum script is particularly noisy. It is similar to Nikto in that it will attempt to enumerate known paths of web applications and scripts. This will inevitably generated hundreds of 404 HTTP responses in the web server error and access logs.

Detect Heartbleed SSL Vulnerability

Heartbleed Testingnmap -sV -p 443 --script=ssl-heartbleed 192.168.1.0/24
Heartbleed detection is one of the available SSL scripts. It will detect the presence of the well known Heartbleed vulnerability in SSL services. Specify alternative ports to test SSL on mail and other protocols (Requires Nmap 6.46).

IP Address information

Find Information about IP addressnmap --script=asn-query,whois,ip-geolocation-maxmind 192.168.1.0/24
Gather information related to the IP address and netblock owner of the IP address. Uses ASN, whois and geoip location lookups. See the IP Tools for more information and similar IP address and DNS lookups.

Remote Scanning

Testing your network perimeter from an external perspective is key when you wish to get the most accurate results. By assessing your exposure from the attackers perspective you can validate firewall rule audits and understand exactly what is allowed into your network. This is the reason we offer a hosted or online version of the Nmap port scanner. To enable remote scanning easily and effectively because anyone who has played with shodan.io knows very well how badly people test their perimeter networks.

 

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

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


รูปที่ 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 ก็สามารถนำโปรไฟล์ดังกล่าวไปใช้งานได้

รูปที่ 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

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...