คอมพิวเตอร์ Windows อินเทอร์เน็ต

คู่มืออ้างอิง Nmap (Man Page) วิธีใช้ Nmap เพื่อสแกนเครือข่าย การสแกนโฮสต์เดียวหรือที่อยู่ IP

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

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

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

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

มาดูสคริปต์ NSE กันดีกว่า และบางทีศักยภาพของสคริปต์เหล่านี้อาจจะทำให้คุณประหลาดใจ

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

ความสามารถในการเขียนสคริปต์ Nmap Scripting Engine

ทีมพัฒนาเครื่องสแกนพอร์ต Nmap ได้คิดและสร้างเอ็นจิ้นการเขียนสคริปต์เพื่อแก้ไขปัญหาเป็นหลัก เช่น:

1. การสำรวจเครือข่าย

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

  • ค้นหาข้อมูล WHOIS (โปรโตคอลเครือข่ายเลเยอร์แอปพลิเคชันตามโปรโตคอล TCP แอปพลิเคชันหลักคือการรับข้อมูลการลงทะเบียนจากเจ้าของชื่อโดเมน ที่อยู่ IP และระบบอัตโนมัติในรูปแบบข้อความ) สำหรับโดเมนที่เกี่ยวข้อง
  • ส่งคำถามไปยังเซิร์ฟเวอร์ WHOIS ระดับภูมิภาคหลัก ARIN (อเมริกาเหนือ), RIPE (ยุโรปและตะวันออกกลาง) หรือ APNIC (เอเชียและแปซิฟิก) เพื่อระบุเจ้าของที่อยู่ IP เฉพาะ
  • identd-search บนพอร์ตที่เปิดอยู่ (ช่วยให้คุณสามารถระบุผู้ใช้ที่เชื่อมต่อกับพวกเขา);
  • การส่งคำขอผ่านโปรโตคอล SNMP (โปรโตคอลอินเทอร์เน็ตสำหรับจัดการอุปกรณ์ในเครือข่าย IP ตามสถาปัตยกรรม TCP/UDP)
  • รวบรวมรายการทรัพยากรและบริการที่มีอยู่ผ่านโปรโตคอลเครือข่ายสำหรับการเข้าถึงระยะไกล NFS, SMB หรือ RPC

2. การกำหนดเวอร์ชันที่ซับซ้อนยิ่งขึ้น

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

3. ค้นหาจุดอ่อน

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

4. การตรวจจับแบ็คดอร์

ผู้โจมตีทางไซเบอร์จำนวนมาก เช่นเดียวกับเวิร์มอัตโนมัติบางตัว ทิ้งแบ็คดอร์ไว้เพื่อให้ตัวเองมีช่องโหว่ในอนาคตเพื่อเจาะระบบของคุณได้ง่ายขึ้น แบ็คดอร์เหล่านี้บางส่วนสามารถตรวจพบได้โดยใช้การกำหนดเวอร์ชัน Nmap มาตรฐานตามการจับคู่ลายเซ็นนิพจน์ทั่วไป แต่เวิร์มและแบ็คดอร์ที่ซับซ้อนกว่าจำนวนมากต้องการความสามารถ NSE ขั้นสูงเพื่อตรวจจับได้อย่างน่าเชื่อถือ โดยเฉพาะอย่างยิ่ง NSE ใช้เพื่อตรวจจับแบ็คดอร์ DoublePulsar ซึ่งใช้ช่องโหว่ในการใช้งานโปรโตคอล SMB เวอร์ชันแบ็คดอร์สำหรับเซิร์ฟเวอร์ UnrealIRCd IRC เช่นเดียวกับเซิร์ฟเวอร์ vsftpd และ ProFTPd FTP

5. การตรวจจับช่องโหว่

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

มีสคริปต์ NSE ประเภทใดบ้าง

ขณะนี้มีสคริปต์ NSE 598 รายการที่คุณสามารถค้นหาได้ในโฟลเดอร์ "สคริปต์" ซึ่งเป็นไดเรกทอรีย่อยของไดเรกทอรี Nmap หลัก เพื่อประสิทธิภาพที่ดีขึ้น สคริปต์ทั้งหมดจะได้รับการจัดทำดัชนีในฐานข้อมูล "scripts/script.db" ซึ่งระบุว่าแต่ละสคริปต์เป็นของหมวดหมู่หรือหมวดหมู่ใด

สคริปต์ NSE จะถูกจัดกลุ่มตามหมวดหมู่ต่างๆ เพื่อให้ใช้งานได้ง่ายขึ้น ทั้งนี้ขึ้นอยู่กับวัตถุประสงค์ในการใช้งาน และเพื่อให้การใช้งานง่ายขึ้น ปัจจุบันมีการกำหนดหมวดหมู่ของสคริปต์ NSE ต่อไปนี้: auth, broadcast, brute, default การค้นพบ, dos, การหาประโยชน์, ภายนอก, fuzzer, ล่วงล้ำ, มัลแวร์, ปลอดภัย, เวอร์ชันและ vuln (ชื่อหมวดหมู่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ด้านล่างนี้เป็นมุมมองโดยละเอียดเพิ่มเติมของแต่ละหมวดหมู่:

  • รับรองความถูกต้อง- สคริปต์ประเภทนี้เกี่ยวข้องกับข้อมูลรับรองการพิสูจน์ตัวตน (หรือข้ามผ่าน) บนระบบเป้าหมาย ตัวอย่างของสคริปต์ดังกล่าว ได้แก่ "x11-access", "ftp-anon" และ "oracle-enum-users" โปรดทราบว่าสคริปต์ที่ใช้การโจมตีแบบเดรัจฉานเพื่อพยายามระบุข้อมูลประจำตัวจะถูกจัดประเภทเป็นแบบเดรัจฉาน
  • ออกอากาศ- สคริปต์ในหมวดหมู่นี้มักจะใช้เพื่อค้นหาโฮสต์ที่ไม่ได้ระบุไว้ในบรรทัดคำสั่งผ่านการสื่อสารบรอดแบนด์กับเครือข่ายท้องถิ่น เมื่อใช้อาร์กิวเมนต์สคริปต์ "newtargets" พวกเขาจะเพิ่มโฮสต์ที่พบลงในคิวการสแกนโดยอัตโนมัติ
  • เดรัจฉาน- สคริปต์ประเภทนี้ใช้เพื่อโจมตีด้วยกำลังเดรัจฉานเพื่อรับข้อมูลรับรองการพิสูจน์ตัวตนของเซิร์ฟเวอร์ระยะไกล Nmap เสนอสคริปต์สำหรับการโจมตีแบบเดรัจฉานบนโปรโตคอลหลายสิบรายการ ซึ่งรวมถึงสคริปต์ต่อไปนี้: "http-brute", "oracle-brute", "snmp-brute" เป็นต้น
  • ค่าเริ่มต้น- สคริปต์หมวดหมู่นี้กำหนดสคริปต์ที่เลือกโดยนักพัฒนา Nmap ว่ามีประโยชน์สำหรับการขยายฟังก์ชันการทำงานของเครื่องสแกนหรือเพิ่มประสิทธิภาพการทำงาน และอ้างอิงถึงชุด "ค่าเริ่มต้น" พื้นฐาน โดยจะทำงานเมื่อใช้ตัวเลือก "-sC" หรือ "-A" และไม่เรียกใช้โดยการระบุรายการสคริปต์เฉพาะผ่านตัวเลือก "--script" เป็นไปได้ที่จะระบุประเภทของสคริปต์นี้อย่างชัดเจน เช่นเดียวกับประเภทอื่นๆ โดยใช้ "--script=default" ทีม Nmap เมื่อพิจารณาว่าควรจัดประเภทสคริปต์ใดสคริปต์หนึ่งเป็นค่าเริ่มต้นหรือไม่ พยายามใช้ข้อกำหนดต่อไปนี้:
    • ความเร็ว- การสแกนตามค่าเริ่มต้นควรเสร็จสิ้นอย่างรวดเร็ว ซึ่งไม่รวมการรวมอยู่ในหมวดหมู่ของแคร็กเกอร์ตรวจสอบสิทธิ์เดรัจฉาน สไปเดอร์เว็บ และสคริปต์อื่นๆ ที่มีการคำนวณเวลาในการสแกนสำหรับบริการหนึ่งๆ เป็นนาทีหรือเป็นชั่วโมง
    • คุณประโยชน์- การสแกนในหมวดหมู่เริ่มต้นจำเป็นต้องได้รับข้อมูลที่มีค่าและเป็นปัจจุบัน กล่าวอีกนัยหนึ่ง ผลลัพธ์ของการสแกนสคริปต์ดังกล่าวควรเข้าใจได้และมีประโยชน์สำหรับผู้เชี่ยวชาญด้านความปลอดภัยเครือข่ายโดยเฉลี่ย มิฉะนั้น จะไม่สมเหตุสมผลที่จะเรียกใช้โดยค่าเริ่มต้น
    • ความสั้น- เอาต์พุตของข้อมูลที่ได้รับจากเครื่องสแกน Nmap นั้นใช้เพื่อวัตถุประสงค์และความต้องการที่หลากหลาย ดังนั้นข้อมูลนี้จึงควรอ่านได้และกระชับ สคริปต์ที่มักจะสร้างหลายหน้าที่มีข้อมูลทั้งหมดที่ได้รับอย่างครบถ้วนไม่อยู่ในหมวดหมู่สคริปต์เริ่มต้น กล่าวอีกนัยหนึ่ง สคริปต์ NSE ที่จัดประเภทเป็นค่าเริ่มต้นเมื่อไม่พบข้อมูลสำคัญใดๆ จะไม่แสดงสิ่งใดในรายงาน สิ่งนี้เป็นจริงเช่นกันสำหรับสคริปต์เริ่มต้นที่มองหาช่องโหว่ที่ซ่อนอยู่ โดยจะแสดงผลลัพธ์เมื่อพบช่องโหว่เหล่านี้เท่านั้น
    • ความน่าเชื่อถือ- สคริปต์จำนวนมากในงานของพวกเขาสามารถพึ่งพาการวิเคราะห์ฮิวริสติกและข้อมูลการจับคู่ลายเซ็นแบบคลุมเครือเพื่อสรุปข้อสรุปเกี่ยวกับโฮสต์หรือบริการเป้าหมาย ตัวอย่างของสคริปต์ดังกล่าว ได้แก่ "sniffer-detect" และ "sql-injection" สคริปต์ดังกล่าวจะไม่รวมอยู่ในหมวดหมู่เริ่มต้น เนื่องจากผลงานมักผิดพลาดและอาจทำให้ผู้ใช้เข้าใจผิดซึ่งไม่เข้าใจรายละเอียดเฉพาะของงานทั้งหมดอย่างชัดเจน
    • ไม่สร้างความรำคาญ- สคริปต์บางตัวล่วงล้ำเกินไปเมื่อใช้ทรัพยากรที่สำคัญของระบบระยะไกล ซึ่งอาจนำไปสู่ความล้มเหลวของระบบหรือบริการนี้ หรือการกระทำของสคริปต์เหล่านี้ถือได้ว่าเป็นการโจมตีโดยผู้ดูแลระบบระยะไกล สคริปต์ดังกล่าวไม่รวมอยู่ในหมวดหมู่เริ่มต้น อย่างไรก็ตาม สคริปต์ "เชิงรุกปานกลาง" บางรายการได้รับการจัดประเภทโดยทีม Nmap เป็นค่าเริ่มต้นตามประโยชน์และความสามารถในการปฏิบัติตน โดยพิจารณาจากปัจจัยอื่นๆ
    • ความลับ- สคริปต์จำนวนมากสามารถเปิดเผยข้อมูลที่เป็นความลับแก่บุคคลที่สามตามลักษณะเฉพาะของงานของพวกเขา ตัวอย่างเช่น สคริปต์สำหรับค้นหาข้อมูล WHOIS ต้องรายงานที่อยู่ IP เป้าหมายไปยังผู้รับจดทะเบียนในภูมิภาค กล่าวอีกนัยหนึ่ง ในหมวดหมู่เริ่มต้นของสคริปต์ NSE ทีม Nmap พยายามไม่เพิ่มสคริปต์ที่อาจละเมิดความเป็นส่วนตัว
  • การค้นพบ- สคริปต์ประเภทนี้พยายามเรียนรู้เพิ่มเติมเกี่ยวกับเครือข่ายโดยส่งคำขอสาธารณะไปยังผู้รับจดทะเบียน อุปกรณ์ที่เปิดใช้งาน SNMP บริการไดเรกทอรี ฯลฯ ตัวอย่างของสคริปต์ดังกล่าว ได้แก่ "html-title" (รับชื่อของเส้นทางรูทของเว็บไซต์), "smb-enum-shares" (แสดงรายการแชร์ของ Windows) และ "snmp-sysdescr" (ดึงข้อมูลระบบโดยละเอียดผ่านโปรโตคอลอินเทอร์เน็ตมาตรฐาน สำหรับการจัดการอุปกรณ์ SNMP)
  • dos- สคริปต์ในหมวดหมู่นี้ควรใช้ด้วยความระมัดระวังอย่างยิ่ง เนื่องจากอาจนำไปสู่การปฏิเสธการให้บริการ ผู้ทดสอบความปลอดภัยบางครั้งใช้พวกเขาเพื่อทดสอบช่องโหว่ของระบบในการปฏิเสธการโจมตีบริการ แต่การทดสอบดังกล่าวสามารถนำไปสู่ผลข้างเคียงที่ไม่ต้องการ เช่น ทำให้บริการที่มีช่องโหว่บางบริการขัดข้อง
  • เอาเปรียบ- สคริปต์เหล่านี้มุ่งเป้าไปที่การใช้ประโยชน์จากช่องโหว่เฉพาะอย่างแข็งขัน ตัวอย่างของสคริปต์ประเภทนี้ ได้แก่ "jdwp-exec" และ "http-shellshock"
  • ภายนอก- สคริปต์ในหมวดหมู่นี้สามารถส่งข้อมูลไปยังบุคคลที่สามที่ควบคุมฐานข้อมูลหรือทรัพยากรเครือข่ายอื่นๆ ตัวอย่างของสคริปต์ดังกล่าวคือ "whois-ip" ซึ่งเชื่อมต่อกับเซิร์ฟเวอร์ WHOIS เพื่อรับข้อมูลเกี่ยวกับที่อยู่ IP ของเป้าหมาย มีความเป็นไปได้เสมอที่ผู้ให้บริการฐานข้อมูลบุคคลที่สามจะบันทึกทุกสิ่งที่คุณส่ง ซึ่งในหลายๆ กรณีจะมีข้อมูลเกี่ยวกับที่อยู่ IP ของคุณและที่อยู่ IP ของเป้าหมายของคุณ สคริปต์ส่วนใหญ่ที่จัดการเฉพาะการรับส่งข้อมูลระหว่างคอมพิวเตอร์ที่สแกนและไคลเอ็นต์ไม่จัดอยู่ในหมวดหมู่นี้
  • ฟัซเซอร์เป็นหมวดหมู่ของสคริปต์ที่ออกแบบมาเพื่อส่งฟิลด์ที่ไม่คาดคิดหรือสุ่มไปยังซอฟต์แวร์เซิร์ฟเวอร์ในแต่ละแบตช์ แม้ว่าวิธีนี้จะมีประโยชน์ในการค้นหาจุดบกพร่องและจุดอ่อนที่ไม่รู้จักในซอฟต์แวร์ แต่ก็เป็นกระบวนการที่ช้าและใช้แบนด์วิดท์สูงเช่นกัน ตัวอย่างของสคริปต์ประเภทนี้คือ "dns-fuzz" ซึ่งจะโจมตีเซิร์ฟเวอร์ DNS ด้วยการค้นหาโดเมนที่แก้ไขบางส่วน จนกว่าเซิร์ฟเวอร์จะหยุดทำงานหรือหมดเวลาที่กำหนดโดยผู้ใช้
  • ล่วงล้ำ- สคริปต์ประเภทนี้รวมถึงสคริปต์ที่ไม่สามารถจัดประเภทว่าปลอดภัย (ปลอดภัย) เนื่องจากความเสี่ยงสูงเกินไปที่ระบบเป้าหมายจะล่มสลายภายใต้แรงกดดัน ทรัพยากรจำนวนมากจะต้องใช้บนโฮสต์เป้าหมาย (เช่น แบนด์วิดท์หรือเวลาของตัวประมวลผล ) หรืออย่างอื่น ผู้ดูแลระบบจะรับรู้ว่าการดำเนินการดังกล่าวเป็นกิจกรรมที่เป็นอันตราย ตัวอย่างของสคริปต์ดังกล่าว ได้แก่ "http-open-proxy" (ซึ่งพยายามใช้เซิร์ฟเวอร์เป้าหมายเป็นพร็อกซี HTTP) และ "snmp-brute" (ซึ่งพยายามคาดเดาสิ่งที่เรียกว่า "สตริงชุมชน" ของอุปกรณ์ SNMP โดยส่งความนิยม ค่านิยมต่างๆ เช่น ภาครัฐ เอกชน และซิสโก้) หากสคริปต์ไม่ได้อยู่ในหมวดหมู่พิเศษของเวอร์ชัน สคริปต์นั้นต้องได้รับการจัดประเภทว่าปลอดภัยหรือล่วงล้ำ
  • มัลแวร์- สคริปต์เหล่านี้จะตรวจสอบว่าแพลตฟอร์มเป้าหมายติดมัลแวร์หรือแบ็คดอร์หรือไม่ ตัวอย่างของสคริปต์ในสคริปต์ประเภทนี้ ได้แก่ "smtp-strangeport" ซึ่งตรวจสอบเซิร์ฟเวอร์ SMTP ที่ทำงานบนหมายเลขพอร์ตที่ผิดปกติ และ "auth-spoof" ซึ่งตรวจพบ identd daemons ที่ปลอมแปลง (ใช้การสนับสนุนโปรโตคอลการระบุตัวตนของผู้ใช้) ที่ให้การตอบสนองปลอม ก่อนที่พวกเขาจะได้รับการร้องขอ ไม่ว่าจะเป็นตัวอย่างแรกหรือตัวอย่างที่สอง หากตรวจพบ พฤติกรรมนี้มักจะเป็นสัญญาณของการติดมัลแวร์ในระบบ
  • ปลอดภัย- สคริปต์ทั้งหมดที่ไม่ได้สร้างขึ้นเพื่อทำให้บริการล้มเหลว ใช้แบนด์วิดท์เครือข่ายจำนวนมากหรือทรัพยากรอื่นๆ และไม่ได้มุ่งเป้าไปที่ช่องโหว่ด้านความปลอดภัย จะถูกจัดประเภทว่าปลอดภัย มีแนวโน้มน้อยกว่ามากที่จะดึงดูดความสนใจของผู้ดูแลระบบระยะไกล แม้ว่า (เช่นเดียวกับฟังก์ชัน Nmap อื่นๆ) ก็ไม่สามารถรับประกันได้ 100% ว่าจะไม่ดึงดูดความสนใจหลักประกัน สคริปต์เหล่านี้ส่วนใหญ่ทำงานที่เกี่ยวข้องกับการสำรวจเครือข่ายทั่วไป ตัวอย่างของสคริปต์ในหมวดหมู่นี้คือ "ssh-hostkey" (รับคีย์ SSH ของโฮสต์) และ "html-title" (ดึงชื่อจากหน้าเว็บ) สคริปต์ในหมวดหมู่เวอร์ชันไม่ได้จัดอยู่ในหมวดหมู่ที่ปลอดภัย แต่สคริปต์อื่นๆ ที่ไม่ปลอดภัยต้องได้รับการกำหนดให้เป็นการล่วงล้ำ
  • รุ่น- สคริปต์จากหมวดหมู่พิเศษนี้เป็นส่วนขยายของฟังก์ชันการตรวจจับเวอร์ชันและไม่สามารถเลือกได้อย่างชัดเจน โดยจะถูกเลือกให้ทำงานเมื่อได้รับแจ้งให้ระบุเวอร์ชัน Nmap ("-sV") เท่านั้น เอาต์พุตไม่สามารถแยกจากเอาต์พุตของฟังก์ชันการกำหนดเวอร์ชัน และจะไม่ทำงานเป็นโฮสต์หรือสคริปต์บริการ ตัวอย่างของสคริปต์ดังกล่าว ได้แก่ "skypev2-version", "pptp-version" และ "iax2-version"
  • vuln- สคริปต์ในหมวดหมู่นี้ตรวจสอบการมีอยู่ของช่องโหว่ที่ทราบโดยเฉพาะ และมักจะให้ผลลัพธ์ที่ยืนยันว่าพบช่องโหว่ดังกล่าวเท่านั้น ตัวอย่างของสคริปต์ดังกล่าว ได้แก่ "realvnc-auth-bypass" และ "afp-path-vuln"

สคริปต์ ขึ้นอยู่กับการวางแนวการทำงาน เช่นเดียวกับขั้นตอนการสแกนระหว่างการทำงาน แบ่งออกเป็นสี่ประเภท (สคริปต์บางตัวสามารถรองรับการทำงานได้หลายประเภทพร้อมกัน):

  • สคริปต์เบื้องต้น - สคริปต์ประเภทนี้จะทำงานก่อนดำเนินการ Nmap ใดๆ ดังนั้นสคริปต์เหล่านี้จึงถูกดำเนินการก่อนขั้นตอนการสแกน เมื่อ Nmap ยังไม่ได้รวบรวมข้อมูลใดๆ เกี่ยวกับเป้าหมาย สคริปต์เหล่านี้มีประโยชน์สำหรับการทำงานที่ไม่ขึ้นกับเป้าหมายการสแกนเฉพาะ เช่น การส่งคำขอออกอากาศเพื่อสำรวจเซิร์ฟเวอร์ DHCP และ DNS SD สคริปต์เหล่านี้บางตัวสามารถสร้างเป้าหมายใหม่สำหรับการสแกน Nmap (เฉพาะเมื่อคุณระบุอาร์กิวเมนต์ NSE "newtargets") ตัวอย่างเช่น สคริปต์ "dns-zone-transfer" สามารถรับรายการที่อยู่ IP ในโดเมนโดยใช้คำขอโอนโซน จากนั้นเพิ่มลงในรายการเป้าหมายสำหรับการสแกน Nmap โดยอัตโนมัติ สคริปต์พรีรูลจะถูกระบุโดยใช้ฟังก์ชันพรีรูล
  • สคริปต์โฮสต์ - สคริปต์เหล่านี้ทำงานในระหว่างขั้นตอนการสแกน Nmap มาตรฐาน หลังจากที่เครื่องสแกน Nmap ได้ดำเนินการตามปกติ เช่น การค้นหาโฮสต์ การสแกนพอร์ต การกำหนดเวอร์ชัน และการตรวจจับ OS บนโฮสต์เป้าหมาย สคริปต์ประเภทนี้ถูกเรียกหนึ่งครั้งสำหรับแต่ละโฮสต์เป้าหมายที่ตรงกับฟังก์ชัน hostrule ตัวอย่าง ได้แก่ "whois-ip" ซึ่งค้นหาข้อมูลเจ้าของสำหรับที่อยู่ IP เป้าหมาย และ "path-mtu" ซึ่งพยายามกำหนดขนาดสูงสุดของแพ็กเก็ต IP ที่สามารถเข้าถึงเป้าหมายได้โดยไม่ต้องมีการแยกส่วน
  • สคริปต์บริการ - สคริปต์ประเภทนี้จะทำงานเมื่อพบบริการบางอย่างบนโฮสต์เป้าหมาย ตัวอย่างเช่น Nmap มีสคริปต์บริการ http มากกว่า 15 รายการที่รันเพื่อทำงานกับเว็บเซิร์ฟเวอร์ หากโฮสต์มีเว็บเซิร์ฟเวอร์ที่ทำงานบนหลายพอร์ต สคริปต์เหล่านี้สามารถเรียกใช้ได้หลายครั้ง (หนึ่งรายการสำหรับแต่ละพอร์ต) นี่เป็นสคริปต์ประเภททั่วไปที่สุดใน Nmap และต่างกันตรงที่พวกเขามีฟังก์ชัน portrule เพื่อกำหนดบริการที่ค้นพบที่สคริปต์ควรรันด้วย
  • สคริปต์หลังกฎ - สคริปต์ประเภทนี้จะเรียกใช้เพียงครั้งเดียว หลังจากที่ Nmap สแกนเป้าหมายที่ต้องการทั้งหมดแล้ว สิ่งเหล่านี้มีประโยชน์สำหรับการจัดรูปแบบและนำเสนอผลลัพธ์ของข้อมูลที่ได้รับจากเครื่องสแกน Nmap ตัวอย่างเช่น สคริปต์ "ssh-hostkey" เป็นที่รู้จักกันทั่วไปว่าเป็นสคริปต์บริการ (โดยมีการกำหนดพอร์ต) ที่เชื่อมต่อกับเซิร์ฟเวอร์ SSH ค้นพบกุญแจสาธารณะ และพิมพ์ออกมา แต่ยังรวมถึงฟังก์ชันหลังกฎที่ตรวจสอบคีย์ที่ซ้ำกันระหว่างโฮสต์ที่ตรวจสอบแล้วทั้งหมด แล้วพิมพ์คีย์ที่พบทั้งหมด กรณีการใช้งานที่เป็นไปได้อีกกรณีหนึ่งสำหรับสคริปต์ประเภทนี้คือการพิมพ์ย้อนกลับเอาต์พุตของเครื่องสแกน Nmap - ตัวอย่างเช่น การแสดงรายชื่อโฮสต์ทั้งหมดที่เรียกใช้บริการเฉพาะ แทนที่จะแสดงรายการโฮสต์ทั้งหมดที่เรียกใช้บริการบนนั้น สคริปต์หลังกฎถูกระบุโดยใช้ฟังก์ชันหลังกฎ

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

หวาดระแวงชั่วนิรันดร์ Anton Kochukov


ดูสิ่งนี้ด้วย:

แผนที่[ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

คำอธิบาย

nmap(" ผู้ทำแผนที่เครือข่าย ») เป็นยูทิลิตี้สำรวจเครือข่ายโอเพนซอร์สและทดสอบความปลอดภัย ได้รับการออกแบบมาเพื่อสแกนเครือข่ายขนาดใหญ่อย่างรวดเร็ว แม้ว่าจะทำงานได้ดีสำหรับเป้าหมายเดียวก็ตาม Nmap ใช้แพ็คเก็ต IP ดิบในวิธีดั้งเดิมเพื่อกำหนดว่าโฮสต์ใดบ้างที่พร้อมใช้งานบนเครือข่าย บริการใด (ชื่อแอปพลิเคชันและเวอร์ชัน) ที่พวกเขาเสนอ ระบบปฏิบัติการใด (และเวอร์ชันของระบบปฏิบัติการ) ที่ใช้ ตัวกรองแพ็กเก็ต/ไฟร์วอลล์ประเภทใด และคุณสมบัติอื่นๆ อีกมากมาย แม้ว่า Nmap มักใช้สำหรับการตรวจสอบความปลอดภัย แต่ผู้ดูแลระบบจำนวนมากพบว่ามีประโยชน์สำหรับงานทั่วไป เช่น การตรวจสอบโครงสร้างเครือข่าย การจัดการกำหนดการเริ่มต้นบริการ และการติดตามโฮสต์หรือเวลาทำงานของบริการ

ผลลัพธ์ของ Nmap คือรายการของเป้าหมายที่สแกน โดยมีข้อมูลเพิ่มเติมในแต่ละเป้าหมายขึ้นอยู่กับตัวเลือกที่ให้ไว้ ข้อมูลสำคัญคือ « ตารางพอร์ตที่สำคัญ» . ตารางนี้ประกอบด้วยหมายเลขพอร์ต โปรโตคอล ชื่อบริการ และสถานะ สถานะสามารถเปิด (เปิด) กรองแล้ว (กรองแล้ว) ปิด (ปิด) หรือไม่กรอง (ไม่ได้กรอง) เปิดหมายความว่าแอปพลิเคชันบนเครื่องเป้าหมายพร้อมที่จะเชื่อมต่อ/รับแพ็กเก็ตบนพอร์ตนี้ กรองแล้วหมายความว่าไฟร์วอลล์ ตัวกรองเครือข่าย หรือการรบกวนเครือข่ายอื่นๆ กำลังบล็อกพอร์ต และ Nmap ไม่สามารถระบุได้ว่าพอร์ตนั้นเปิดหรือปิดอยู่ พอร์ตที่ปิดจะไม่เชื่อมโยงกับแอปพลิเคชันใดๆ แต่สามารถเปิดได้ตลอดเวลา พอร์ตจะถือว่าไม่มีการกรองเมื่อตอบสนองต่อคำขอ Nmap แต่ Nmap ไม่สามารถบอกได้ว่าเปิดหรือปิดอยู่ Nmap ออกชุดค่าผสม open|filter and closed|filtered เมื่อไม่สามารถระบุได้ว่าพอร์ตใดในสองสถานะนี้ ตารางนี้อาจให้รายละเอียดของเวอร์ชันซอฟต์แวร์ด้วยหากมีการร้องขอ เมื่อสแกนผ่านโปรโตคอล IP (-sO) Nmap จะให้ข้อมูลเกี่ยวกับโปรโตคอลที่รองรับ ไม่ใช่เกี่ยวกับพอร์ตที่เปิดอยู่

นอกจากตารางพอร์ตที่สำคัญแล้ว Nmap ยังสามารถให้ข้อมูลเป้าหมายเพิ่มเติม: ชื่อ DNS ที่แก้ไข การเดาระบบปฏิบัติการ ประเภทอุปกรณ์ และที่อยู่ MAC

การสแกนทั่วไปโดยใช้ Nmap จะแสดงในตัวอย่างที่ 1 อาร์กิวเมนต์เดียวที่ใช้ในตัวอย่างนี้คือ -A สำหรับเวอร์ชัน OS การสแกนสคริปต์ และการติดตาม -T4 เพื่อการดำเนินการที่เร็วขึ้น แล้วสองโฮสต์เป้าหมาย

ตัวอย่างที่ 1 ตัวอย่างทั่วไปของการสแกนด้วย Nmap

# nmap -A -T4 scanme..org) พอร์ตที่น่าสนใจบน scanme.site (64.13.134.52): (พอร์ต 1663 ที่สแกน แต่ไม่แสดงด้านล่างอยู่ในสถานะ: กรองแล้ว) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (โปรโตคอล 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed auth ประเภทอุปกรณ์: วัตถุประสงค์ทั่วไป กำลังรัน: Linux 2.4.X|2.5.X| รายละเอียดระบบปฏิบัติการ 2.6.X: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 พอร์ตที่น่าสนใจบนสนามเด็กเล่น..168.0.40): (พอร์ต 1659 ที่สแกนแต่ไม่แสดงด้านล่างอยู่ในสถานะ: ปิด) PORT รุ่นบริการของรัฐ 135/tcp เปิด msrpc Microsoft Windows RPC 139/tcp เปิด netbios-ssn 389/tcp เปิด ldap? 445/tcp เปิด microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp เปิด windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC 1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http RealVNC 4.0 (ความละเอียด 400x250; พอร์ต VNC: 5900) 5900/tcp open vnc VNC (โปรโตคอล 3.8) MAC ที่อยู่: 00:A0:CC:63:85:4B (Lite-on Communications) ประเภทอุปกรณ์: วัตถุประสงค์ทั่วไป การใช้งาน: Microsoft Windows NT/2K/XP OS รายละเอียด: Microsoft Windows XP Pro RC1+ จนถึงรุ่นสุดท้าย ข้อมูลบริการ: OS: Windows , Windows XP Nmap เสร็จสิ้น: 2 ที่อยู่ IP (โฮสต์ 2 โฮสต์ขึ้นไป) สแกนใน 88.392 วินาที


สามารถดาวน์โหลด Nmap เวอร์ชันล่าสุดได้จาก

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

คำสองสามคำเกี่ยวกับ Nmap

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

  • Nmap เป็นเครื่องมือข้ามแพลตฟอร์มสำหรับการสแกนเครือข่าย ตรวจสอบความปลอดภัย กำหนดเวอร์ชันของระบบปฏิบัติการและบริการต่างๆ และอื่นๆ อีกมากมาย นี่เป็นยูทิลิตี้ที่ยืดหยุ่นและขยายได้ง่ายมาก และเอ็นจิ้นการเขียนสคริปต์ NSE ก็ทำให้มันเป็นเช่นนั้น
  • NSE (Nmap Scripting Engine) เป็นองค์ประกอบ Nmap อันทรงพลังที่ช่วยให้ผู้ใช้สามารถเขียนสคริปต์เพื่อทำงานเครือข่ายที่หลากหลายโดยอัตโนมัติ: การโต้ตอบที่ยืดหยุ่นยิ่งขึ้นกับความสามารถ Nmap ที่มีอยู่ การตรวจจับและการใช้ประโยชน์จากช่องโหว่ และอื่นๆ NSE ใช้ล่ามภาษา Lua;
  • Lua เป็นภาษาสคริปต์ที่คล้ายกับ JavaScript

การกำหนดปัญหา

ดังที่ได้กล่าวไปแล้ว วันนี้เราจะขยายการทำงานของ Nmap โดยการเขียนสคริปต์ของเราเอง การแฮ็ก/เพ็นเทสต์ใดๆ มักจะเริ่มต้นด้วยการสอดแนมและการรวบรวมข้อมูล การตรวจสอบประการแรกคือการมีอยู่ของพอร์ตที่เปิดอยู่บนโฮสต์ภายใต้การศึกษาและการระบุบริการที่ทำงานอยู่ คงไม่มีเครื่องมือใดที่ดีไปกว่าการรวบรวมข้อมูลดังกล่าว Nmap ขั้นตอนต่อไปหลังจากการสแกนมักจะค้นหา sploit สำหรับบริการที่มีช่องโหว่ หรือเลือกคู่ login:password โดยใช้วิธีการบังคับแบบเดรัจฉาน

สมมติว่าคุณใช้ THC-Hydra brute-forcer เพื่อเดารหัสผ่านของบริการต่างๆ (เช่น HTTP-Basic, SSH, MySQL) ในกรณีนี้ คุณต้องตั้งค่าไฮดราในแต่ละบริการแยกกัน คุณต้องจำคุณสมบัติของบริการและแฟล็กที่จำเป็นในการเปิดใช้ไฮดรา และถ้าจำเป็นต้องเดรัจฉานมากกว่าห้าบริการ .. ทำไมไม่ทำให้มันเป็นอัตโนมัติล่ะ

ดังนั้น เรามาเขียนสคริปต์ง่ายๆ ที่จะทำให้กระบวนการเริ่มต้น Hydra เป็นไปโดยอัตโนมัติเพื่อเลือกล็อกอิน / รหัสผ่านสำหรับบริการเดียว (เช่น PostgreSQL) สำหรับสิ่งนี้เราต้องการเครื่องมือดังต่อไปนี้:

  • nmap;
  • THC-ไฮดรา;
  • โปรแกรมแก้ไขข้อความใด ๆ

หากคุณยังไม่ได้ติดตั้ง Nmap และ/หรือ Hydra ให้แก้ไขทันที:

$ sudo apt-get ติดตั้ง nmap hydra

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

$ vim hydra.nse

โครงสร้างสคริปต์ NSE

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

คำอธิบายของสคริปต์ (คำอธิบาย)

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

สำหรับสคริปต์ของเราที่เลือกล็อกอิน / รหัสผ่านสำหรับ PostgeSQL คำอธิบายจะมีลักษณะดังนี้:

Description = [[ Brute บังคับให้บริการทั้งหมดทำงานบนโฮสต์เป้าหมาย ผลลัพธ์จะถูกส่งกลับในตารางที่มีแต่ละพาธ เมธอดที่ตรวจพบ ล็อกอินและ/หรือรหัสผ่าน ]] --- -- @usage -- nmap --script hydra [--script-args "lpath= , ppath= "] -- -- @output -- PORT STATE SERVICE -- 80/tcp open http -- | ไฮดรา: -- | รหัสผ่านเข้าสู่ระบบวิธีเส้นทาง -- | 127.0.0.1/private/index.html Digest log pass -- |_ 127.0.0.1/simple/index.txt qwerty ผู้ใช้พื้นฐาน -- -- @args hydra.lpath: พาธไปยังไฟล์ที่มีการเข้าสู่ระบบ ตัวอย่างเช่น -- nmap --script hydra --script-args="lpath=/home/my_logins.txt" -- @args hydra.ppath: พาธไปยังไฟล์ด้วยรหัสผ่าน ตัวอย่างเช่น -- nmap --script hydra --script-args="ppath=/home/my_pass.txt"

ความคิดเห็น; ----- ความคิดเห็นหลายบรรทัด; @usage, @output, @args - ตัวอย่างการเรียกสคริปต์ แสดงผลบนหน้าจอ ข้อโต้แย้งที่จำเป็นเมื่อโทร

ด้านบนใน @usage เราจะเห็นรูปแบบการเปิดสคริปต์ ในกรณีนี้ จะระบุเฉพาะชื่อของสคริปต์ (ไฮดรา) สิ่งนี้เป็นไปได้หากสคริปต์อยู่ในไดเร็กทอรี / /nmap/scripts/ มิฉะนั้น คุณจะต้องระบุเส้นทางที่แน่นอนหรือสัมพันธ์กับมัน ในอนาคต เราจะทำให้สามารถตั้งค่าอาร์กิวเมนต์ได้เมื่อเริ่มต้นสคริปต์ อาร์กิวเมนต์ถูกตั้งค่าโดยใช้แฟล็ก --script-args " " ในกรณีของเรา เราจะกำหนดพาธไปยังไฟล์ล็อกอิน (lpath) และไฟล์รหัสผ่าน (ppath) อาร์กิวเมนต์เป็นทางเลือก: โดยค่าเริ่มต้น เราจะค้นหาไฟล์ชื่อ login.txt และ password.txt ใน ไดเรกทอรีปัจจุบัน

หมวดหมู่ที่สคริปต์ตั้งอยู่ (หมวดหมู่)

เมื่อเขียนสคริปต์ NSE คุณสามารถระบุหมวดหมู่ได้ (หรือหลายหมวดหมู่) สิ่งนี้มีประโยชน์เมื่อผู้ใช้ Nmap ต้องการใช้ไม่ใช่สคริปต์เฉพาะ แต่เป็นชุดของสคริปต์ที่อยู่ในหมวดหมู่เดียวกัน ตัวอย่างบางหมวดหมู่:

  • auth - หมวดหมู่ที่สคริปต์กำหนดข้อมูลการรับรองความถูกต้องของโฮสต์เป้าหมาย
  • เดรัจฉาน - หมวดหมู่ที่สคริปต์ช่วยระบุการเข้าสู่ระบบและรหัสผ่านสำหรับบริการต่างๆ
  • ค่าเริ่มต้น - หมวดหมู่ที่มีสคริปต์หลัก มีเกณฑ์บางอย่างที่กำหนดว่าสคริปต์อยู่ในหมวดหมู่นี้หรือไม่: ความเร็วในการสแกน, ประโยชน์, ความน่าเชื่อถือ, การรักษาความลับ, การแสดงผลภาพ;
  • มัลแวร์ - หมวดหมู่ที่ช่วยระบุมัลแวร์

ตัวอย่างเช่น หากคุณต้องการเรียกใช้สคริปต์ทั้งหมดจากหมวดหมู่ auth คำสั่งจะมีลักษณะดังนี้:

$ nmap --script=auth example.com

ในกรณีนี้ สคริปต์ของหมวดหมู่นี้จะถูกรันตามลำดับสำหรับโฮสต์ที่ระบุ สคริปต์ของเราอยู่ในหมวดเดรัจฉาน มาเพิ่มบรรทัดต่อไปนี้ในไฟล์กัน:

หมวดหมู่ = ("เดรัจฉาน")

ข้อมูลเกี่ยวกับผู้เขียน (ผู้เขียน)

แต่ละสคริปต์มีข้อมูลเกี่ยวกับผู้แต่ง ในกรณีของฉัน:

ผู้เขียน = "Olga Barinova"

ข้อมูลเกี่ยวกับใบอนุญาตในการใช้งาน (ใบอนุญาต)

Nmap ยินดีรับการพัฒนาของผู้ใช้ทั้งหมดและสนับสนุนการแบ่งปัน รวมถึงสคริปต์ NSE เมื่อระบุใบอนุญาต คุณต้องยืนยันสิทธิ์ในการแชร์สคริปต์กับชุมชน ใบอนุญาต Nmap มาตรฐานมีลักษณะดังนี้:

ใบอนุญาต = "เหมือนกับ Nmap - ดู http://nmap.org/book/man-legal.html"

มาเพิ่มบรรทัดนี้ในสคริปต์ของเราด้วย

การพึ่งพาสคริปต์อื่น ๆ (การพึ่งพา)

พื้นที่นี้มีชื่อของสคริปต์ NSE ที่ต้องดำเนินการก่อนจึงจะสามารถเรียกใช้สคริปต์นี้เพื่อรับข้อมูลที่จำเป็น ตัวอย่างเช่น,

การพึ่งพา = ("smb-brute")

ในกรณีของเรา คุณสมบัตินี้จะไม่จำเป็น ดังนั้นเราจะไม่เพิ่มการพึ่งพา

โฮสต์และพอร์ต (โฮสต์ & พอร์ต)

Nmap จำเป็นต้องรู้ว่าบริการใดและพอร์ตใดที่จะเรียกใช้สคริปต์ มีกฎพิเศษสำหรับสิ่งนี้:

  • prerule() - สคริปต์ถูกเรียกใช้งานหนึ่งครั้งก่อนที่จะสแกนโฮสต์ใด ๆ ที่ใช้สำหรับการดำเนินงานเครือข่ายบางอย่าง
  • hostrule(host) - สคริปต์ทำงานสำหรับแต่ละโฮสต์จากตารางซึ่งใช้เป็นอาร์กิวเมนต์
  • portrule(host, port) - สคริปต์ทำงานสำหรับแต่ละโฮสต์และสำหรับแต่ละพอร์ตจากตารางที่ใช้เป็นอาร์กิวเมนต์
  • postrule() - สคริปต์ทำงานหนึ่งครั้งหลังจากสแกนโฮสต์ใด ๆ ส่วนใหญ่จะใช้สำหรับการประมวลผลผลลัพธ์ สรุปสถิติ และอื่นๆ

มีห้องสมุดสำหรับจัดทำกฎดังกล่าว สคริปต์ของเราต้องการระบุหมายเลขพอร์ต (5432) และชื่อบริการ (postgresql) เท่านั้น จากนั้นจะใช้งานได้กับพอร์ตและบริการนี้เท่านั้น มีไลบรารีชอร์ตพอร์ตที่ได้รับความนิยมพอสมควรซึ่งสร้างขึ้นใน NSE ซึ่งมีวิธีการต่างๆ เราจะใช้วิธี

Port_or_service (พอร์ต บริการ โปรโตส รัฐ)

โดยที่พอร์ตคือหมายเลขพอร์ต บริการคือชื่อบริการ โปรโตคือชื่อโปรโตคอล (เช่น udp) สถานะคือสถานะ

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

Portrule = shortport.port_or_service((5432), ("postgresql"))

การเชื่อมต่อห้องสมุด

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

มีต่อสำหรับสมาชิกเท่านั้น

ตัวเลือก 1. เข้าร่วมชุมชน "ไซต์" เพื่ออ่านเนื้อหาทั้งหมดบนไซต์

การเป็นสมาชิกในชุมชนในช่วงเวลาที่กำหนดจะทำให้คุณเข้าถึงเนื้อหาทั้งหมดของแฮ็กเกอร์ เพิ่มส่วนลดสะสมส่วนบุคคลของคุณ และช่วยให้คุณสะสมคะแนน Xakep Score แบบมืออาชีพได้!

ด้านล่างนี้คุณจะพบ 20 พื้นฐาน ตัวอย่างการใช้คำสั่ง Nmap.

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

คุณจะเห็นวิธีการ ตรวจจับระบบปฏิบัติการจากระยะไกลโดยใช้ลายนิ้วมือสแต็ค TCP/IP และวิธี ตรวจสอบเวอร์ชันซอฟต์แวร์ทำงานบนเซิร์ฟเวอร์ระยะไกล

ฉันจะแสดงวิธีใช้ Nmap เพื่อนำไปใช้ด้วย การสแกนแอบแฝง, เช่น กำหนดไฟร์วอลล์แล้วยังไง เปลี่ยนที่อยู่ MAC.

1. สแกนโฮสต์เดียวหรือที่อยู่ IP

สแกน แยกที่อยู่ IP:

$ nmap 192.168.1.1

สแกนเซิร์ฟเวอร์โดย ชื่อโฮสต์:

$ nmap server.site

เพิ่ม ระดับของรายละเอียดผลการสแกน:

$ nmap -v เซิร์ฟเวอร์..ไซต์

2. การสแกนที่อยู่ IP หลายรายการ

สแกน ที่อยู่ IP หลายรายการ:

$ nmap 192.168.1.1 192.168.1.2 192.168.1.3 $ namp 192.168.1.1,2,3

สแกน ซับเน็ต:

$ nmap 192.168.1.0/24 $ nmap 192.168.1.*

สแกน ช่วงของที่อยู่ IP (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

3. ค้นหาคอมพิวเตอร์ที่ใช้งานบนเครือข่าย

คำแนะนำที่เป็นประโยชน์:สแกนเครือข่ายด้วยคำสั่ง ping เพียงคำสั่งเดียว! คำนวณคอมพิวเตอร์ที่ใช้งานทั้งหมด!

สแกนเครือข่ายในการค้นหา โฮสต์ที่ใช้งานอยู่:

$ nmap -sn 192.168.1.0/24

4. การสแกนรายชื่อโฮสต์จากไฟล์

สแกนรายชื่อโฮสต์/เครือข่ายจาก ไฟล์:

$ nmap -iL input.txt

รูปแบบไฟล์:

# รายการสามารถอยู่ในรูปแบบใดก็ได้ที่ # Nmap ใช้งานได้จากบรรทัดคำสั่ง (ที่อยู่ IP, ชื่อโฮสต์, CIDR, IPv6 หรือช่วง octet #) รายการต้องคั่นด้วยช่องว่าง แท็บ # หรือขึ้นบรรทัดใหม่ $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. ไม่รวม IP/โฮสต์/เครือข่ายจากการสแกน

ไม่รวมเป้าหมายจากการสแกน Nmap:

$ nmap 192.168.1.0/24 --exclude 192.168.1.1 $ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5 $ nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3

รายการที่ไม่รวมโฮสต์ที่นำมาจากไฟล์:

$ nmap 192.168.1.0/24 --excludefile แยก.txt

รูปแบบไฟล์ที่มีโฮสต์ที่ยกเว้นจะเหมือนกับด้านบน

6. สแกนพอร์ตเฉพาะ

สแกน หนึ่งพอร์ต:

$ nmap -p 80 192.168.1.1

สแกน หลายพอร์ต:

$ nmap -p 80,443 192.168.1.1

สแกน ช่วงพอร์ต:

$ nmap -p 80-1000 192.168.1.1

สแกน พอร์ตทั้งหมด:

$ nmap -p "*" 192.168.1.1

สแกนบางส่วนมากที่สุด พอร์ตทั่วไป:

$ nmap --top-ports 5 192.168.1.1 $ nmap --top-ports 10 192.168.1.1

7. คำจำกัดความของโปรโตคอล IP ที่รองรับ

กำหนดซึ่ง โปรโตคอล IP(TCP, UDP, ICMP เป็นต้น) รองรับโฮสต์ที่สแกน:

$ nmap -sO 192.168.1.1

8. สแกนพอร์ต TCP/UDP

สแกน พอร์ต TCP ทั้งหมด:

$ nmap -sT 192.168.1.1

สแกน พอร์ต TCP บางพอร์ต:

$ nmap -p T:80 192.168.1.1

สแกน พอร์ต UDP ทั้งหมด:

$ nmap -sU 192.168.1.1

สแกน พอร์ต UDP เฉพาะ:

$ nmap -p U:53 192.168.1.1

รวมการสแกนพอร์ตต่างๆ:

$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1

9. สแกนด่วน

เปิดใช้งาน โหมดด่วนการสแกน:

$ nmap -F 192.168.1.1

* สแกนพอร์ตน้อยกว่าการสแกนปกติ

10. แสดงเหตุผลของสถานะพอร์ต

แสดง เหตุผลโดยที่ Nmap พิจารณาว่าพอร์ตอยู่ในสถานะที่แน่นอน:

$ nmap --reason 192.168.1.1

11. แสดงเฉพาะพอร์ตที่เปิดอยู่

แสดง เปิดพอร์ตเท่านั้น(หรืออาจจะเปิด):

$ nmap --open 192.168.1.1

12. คำจำกัดความของระบบปฏิบัติการ

หนึ่งในคุณสมบัติที่รู้จักกันดีที่สุดของ Nmap คือการค้นพบระบบปฏิบัติการระยะไกลโดยอิงจากการวิเคราะห์สแต็ก TCP/IP

Nmap ส่งชุดของแพ็กเก็ต TCP และ UDP ไปยังรีโมตโฮสต์และตรวจสอบการตอบสนอง

หลังจากทำการทดสอบหลายครั้งแล้ว Nmap จะเปรียบเทียบผลลัพธ์กับฐานข้อมูล และหากพบว่าตรงกัน จะแสดงข้อมูลเกี่ยวกับระบบปฏิบัติการ

เปิด คำจำกัดความของระบบปฏิบัติการ:

$ nmap -O 192.168.1.1

13. การกำหนดเวอร์ชันของบริการ

เปิด การกำหนดเวอร์ชันของบริการ:

$ nmap -sV 192.168.1.1

* กำหนดเวอร์ชันของโปรแกรมที่ทำงานบนเซิร์ฟเวอร์ระยะไกล

14. การตรวจจับไฟร์วอลล์

ค้นหาว่าคอมพิวเตอร์ของคุณได้รับการปกป้องโดยใดๆ หรือไม่ ตัวกรองแพ็คเก็ตหรือ ไฟร์วอลล์:

$ nmap -sA 192.168.1.1

15. การปลอมแปลงที่อยู่ MAC

เปลี่ยน ที่อยู่ MAC:

$ nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

เปลี่ยนที่อยู่ MAC MAC สุ่ม:

$ nmap --spoof-mac 0 192.168.1.1

16. ไฟร์วอลล์สแกนหาช่องโหว่

การสแกนทั้งสามประเภทนี้ใช้ช่องโหว่ที่ละเอียดอ่อนใน TCP RFC เพื่อแยกพอร์ตเปิดและปิด

เมื่อมีการสแกนระบบที่สอดคล้องกับ RFC แพ็กเก็ตใดๆ ที่ไม่มีชุดบิต SYN, RST หรือ ACK จะส่งผลให้มีการส่ง RST ตอบกลับหากพอร์ตปิด หรือจะส่งผลให้ไม่มีการตอบสนองหากพอร์ตเปิดอยู่ .

เพราะ ไม่มีการตั้งค่าบิตเหล่านี้ ดังนั้นการรวมกันของสามบิตที่เหลือ (FIN, PSH และ URG) จะถูกต้อง

TCP Nullการสแกน:

$ nmap -sN 192.168.1.1

* ไม่ได้ตั้งค่าบิต (แฟล็กใน TCP Header 0)

TCP Finการสแกน:

$ nmap -sF 192.168.1.1

* มีการตั้งค่าบิต TCP FIN เท่านั้น

TCP Xmasการสแกน:

$ nmap -sX 192.168.1.1

* ตั้งค่าสถานะ FIN, PSH และ URG (แพ็คเกจจะสว่างเหมือนต้นคริสต์มาส)

17. สแกนที่ซ่อนอยู่

คำแนะนำที่เป็นประโยชน์:ไม่เปิดเผยตัวตนระหว่างการสแกนพอร์ต! ใช้ Nmap + Tor + ProxyChains! การทดสอบการเจาะที่ปลอดภัยและง่าย!

TCP SYNการสแกน:

$ nmap -sS 192.168.0.1

* เรียกว่าการสแกนการเชื่อมต่อแบบ half-open เนื่องจากไม่ได้เปิดการเชื่อมต่อ TCP แบบเต็ม

18. ปิดใช้งานการค้นหาโฮสต์ (ไม่มี Ping)

อย่า ping โฮสต์ก่อนสแกน:

$ nmap -Pn 192.168.1.1

19. ปิดการใช้งาน DNS

คำแนะนำที่เป็นประโยชน์:ต้องการกระชับความปลอดภัยบน Linux หรือไม่? เข้ารหัสการรับส่งข้อมูล DNS เพื่อป้องกันการปลอมแปลง!

อย่าดำเนินการแก้ไข DNS แบบย้อนกลับสำหรับที่อยู่ IP ที่ใช้งานอยู่แต่ละรายการที่พบ