Nmap ย่อมาจาก Network Mapper เป็นหนึ่งใน portmapper และเครื่องมือสแกนเครือข่ายที่ใช้มากที่สุด แม้ว่าจะสามารถเรียกใช้ฟังก์ชันพื้นฐานบางอย่างของ Nmap ในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษ/ผู้ใช้ปกติได้ แต่การใช้คุณลักษณะขั้นสูงส่วนใหญ่ต้องใช้สิทธิ์รูทหรือ sudo
ตัวอย่างเช่น คุณลักษณะการสแกนพอร์ตขั้นสูงบางอย่าง เช่น NULL, Stealth SYN Scan และอื่นๆ อีกมากมายสามารถทำงานได้โดยใช้สิทธิ์ของรูทเท่านั้น เนื่องจาก Nmap จำเป็นต้องเข้าถึงข้อมูลแพ็คเก็ตดิบเพื่อให้คุณได้ผลลัพธ์ที่เพียงพอ/ใช้งานได้
เมื่อใดก็ตามที่คุณพยายามเรียกใช้คุณสมบัติขั้นสูงดังกล่าวโดยไม่มีสิทธิ์ sudo เครื่องมือจะแจ้งให้คุณทราบด้วยข้อความ “ต้องการสิทธิ์รูท”
น่าเสียดายที่ต้องใช้ sudo เพื่อเรียกใช้ Nmap อาจเป็นปัญหาได้ โดยเฉพาะถ้าคุณไม่ได้อยู่ในกลุ่ม sudo
โชคดีที่คุณสามารถใช้ความสามารถเพื่อเรียกใช้ Nmap ได้โดยไม่ต้องใช้สิทธิ์รูทหรือ sudo
ความสามารถคืออะไร
ความสามารถของ Linux คือแอตทริบิวต์เคอร์เนลของ Linux ที่อนุญาตให้โปรแกรมและกระบวนการใช้สิทธิ์ที่สงวนไว้สำหรับผู้ใช้รูทเป็นอย่างอื่น
โดยพื้นฐานแล้ว ความสามารถของ Linux จะแชร์พลังหรือสิทธิ์ของผู้ใช้รูท ทำให้กระบวนการที่ไม่มีสิทธิ์ทำงานเป็นสิทธิ์พิเศษได้ ซึ่งหมายความว่าจะไม่ผ่านการตรวจสอบสิทธิ์
มีความสามารถ Linux มากมาย คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับความสามารถของ Linux ในหน้าคู่มือ
สาระสำคัญของคู่มือนี้คือการแสดงวิธีใช้ความสามารถสามอย่าง:CAP_NET_RAW, CAP_NET_ADMIN และ CAP_NET_BIND_SERVICE เพื่อให้ Nmap มีสิทธิ์ที่จำเป็นในการรันโดยไม่ต้องตรวจสอบสิทธิ์ผู้ใช้รูท
หมายเหตุ: โปรดใช้ความระมัดระวังเมื่อตั้งค่าความสามารถระดับสูง เนื่องจากผู้ใช้ที่เป็นอันตรายสามารถใช้ประโยชน์จาก Scripting Engine ของ Nmap เพื่อเข้าถึงสิทธิ์ sudo แบบเต็มและใช้สคริปต์เพื่อใช้ประโยชน์จากช่องโหว่ของโฮสต์ในพื้นที่ ดังนั้น โปรดใช้การตั้งค่าเหล่านี้อย่างระมัดระวังหรือจำกัดการเข้าถึงของ Nmap เฉพาะบางกลุ่ม
ต่อไปนี้เป็นความสามารถของ Linux ที่เรามอบให้กับ Nmap เพื่อขจัดความจำเป็นในการอนุญาต sudo และรูท
- CAP_NET_RAW: การตั้งค่าความสามารถนี้ทำให้กระบวนการเข้าถึงและใช้ข้อมูลแพ็คเก็ตดิบและซ็อกเก็ตได้
- CAP_NET_ADMIN: ความสามารถนี้ทำให้กระบวนการมีความสามารถในการทำกิจกรรมเครือข่ายต่างๆ เช่น การดูแลไฟร์วอลล์ IP การกำหนดค่าอินเทอร์เฟซ ตั้งค่าประเภทบริการของ TOS เปลี่ยนตารางเส้นทาง ฯลฯ
- CAP_NET_BIND_SERVICE: ความสามารถนี้ผูกซ็อกเก็ตกับพอร์ตที่มีสิทธิพิเศษของโดเมนอินเทอร์เน็ต
ความสามารถของ Linux ถูกกำหนดเป็นชุด "มีประสิทธิภาพ" "สืบทอดได้" "อนุญาต" และ "แวดล้อม" สำหรับเธรดและไฟล์ตามลำดับ เพื่อให้ Nmap มีความสามารถที่จำเป็นในการรันโดยไม่มีสิทธิ์รูทหรือ sudo เรากำลังใช้ eip
ซึ่งทำให้ Nmap ใช้ความสามารถเหล่านี้ได้โดยไม่คำนึงว่าผู้ใช้คนใดจะเรียกใช้
ขั้นตอนที่ 1:ติดตั้ง libcap
ในการตั้งค่าความสามารถของ Linux คุณต้องติดตั้งแพ็คเกจ libcap แพ็คเกจนี้อนุญาตให้คุณใช้คำสั่ง setcap ใช้คำสั่ง:
sudo apt-get install libcap2-bin
ตอนนี้เราได้ติดตั้ง libcap แล้ว เราสามารถใช้ setcap
คำสั่งแก้ไขความสามารถของลินุกซ์
ขั้นตอนที่ 2:ตั้งค่าความสามารถของ Nmap
ในการตั้งค่าความสามารถของ Nmap ที่จะอนุญาตให้เรียกใช้โดยไม่มีสิทธิ์ผู้ใช้รูท ให้ดำเนินการคำสั่ง:
sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)
เมื่อคุณตั้งค่าความสามารถแล้ว คุณสามารถยืนยันได้โดยใช้ getcap
คำสั่ง
getcap $(which nmap)
หมายเหตุ: จำเป็นต้องระบุพาธแบบเต็มไปยังโฟลเดอร์การติดตั้ง Nmap ของคุณ
ขั้นตอนที่ 3:เรียกใช้ Nmap ด้วยแฟล็กสิทธิ์
ตอนนี้เรามีชุดความสามารถทั้งสามนี้แล้ว เราสามารถเรียกใช้ Nmap โดยไม่ต้องใช้สิทธิ์ sudo โดยใช้แฟล็กสิทธิ์เพื่อให้ Nmap รู้ว่ามีความสามารถเหล่านี้ ในการทำเช่นนั้น ให้ดำเนินการ:
nmap --privileged -sS 192.168.0.112
หมายเหตุ :คุณต้องใช้ --privileged
มิฉะนั้น Nmap จะไม่ทราบว่ามีสิทธิ์เหล่านี้
หากคุณต้องการประหยัดเวลาในการพิมพ์ nmap --privileged
ตั้งค่าสถานะทุกครั้ง คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม NMAP_PRIVILEGED อย่างถาวรโดยเพิ่มบรรทัดการส่งออกไปที่:
- ~/.xsessionrc: ใช้งานได้กับเดสก์ท็อป/สภาพแวดล้อมแบบกราฟิกส่วนใหญ่ และสามารถสืบทอดโดยเชลล์และเทอร์มินัล
- ~/.profile: ใช้ได้กับเชลล์ที่ต้องการการเข้าสู่ระบบ
- ~/.bashrc: ทำงานเพื่อทุบตี
- ~/.gnomerc: ใช้ได้กับ GNOME . เท่านั้น
บทสรุป
การสแกนพอร์ต Nmap และวิธีค้นหาโฮสต์ส่วนใหญ่ต้องการสิทธิ์รูทหรือ sudo ตามที่กล่าวไว้ในบทช่วยสอน คุณสามารถแทนที่ฟังก์ชันนี้และเรียกใช้ Nmap โดยไม่ต้องรูทหรือในกลุ่ม sudoers ลองดูเครื่องสแกนพอร์ต Linux ที่ดีที่สุดที่คุณสามารถใช้ได้