ค้นหาเครื่องพิมพ์ที่มี Nmap


26

วิธีที่ดีที่สุดในการค้นหาเครื่องพิมพ์ในเครือข่ายของฉันด้วย nmap คืออะไร เป็นไปได้หรือไม่ที่จะบันทึกเครื่องพิมพ์ ip เป็นไฟล์?


หน้านี้อาจช่วยคุณได้ มันได้ผลสำหรับฉันในอดีต irongeek.com/i.php?page=security/networkprinterhacking
ThaKidd KG5ORD

คำตอบ:


37

หากคุณไม่คุ้นเคยกับการทำลายนิ้วมือ OS ด้วยเหตุผลบางประการคุณสามารถสแกนพอร์ตเป้าหมายได้มากขึ้น:

nmap -p 9100,515,631 192.168.1.1/24 -oX printers.xml

นั่นจะสแกนหาพอร์ตทั่วไปสำหรับเครื่องพิมพ์และระบบการพิมพ์

  • 9100 = พอร์ต RAW สำหรับเครื่องพิมพ์ส่วนใหญ่หรือที่เรียกว่าพอร์ต direct-IP
  • 515 = พอร์ต LPR / LPD สำหรับเครื่องพิมพ์ส่วนใหญ่รวมถึงเซิร์ฟเวอร์เครื่องพิมพ์รุ่นเก่า
  • 631 = พอร์ต IPP สำหรับเครื่องพิมพ์ที่ทันสมัยที่สุดและเซิร์ฟเวอร์การพิมพ์ที่ใช้ CUPS

เอาต์พุตอยู่ใน XML


คำตอบของคุณมีประโยชน์มาก!
Ryan Tenney

สิ่งนี้ไม่ได้ผลสำหรับฉัน
Martin Thoma

9

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

nmap -p 515,631,9100 -oG - 10.81.129.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs --replace=$ipaddress snmpget -v 1 -O v -c public $ipaddress system.sysDescr.0 | sed 's/STRING:\s//'

คำอธิบายกระบวนการ

  1. มันสแกนเครือข่ายการค้นหาเอนทิตีเครือข่ายที่กำลังฟังพอร์ตเครื่องพิมพ์เริ่มต้น
  2. การใช้ผลลัพธ์ของขั้นตอนก่อนหน้านี้จะตรวจสอบการสนับสนุน SNMP บนอุปกรณ์เหล่านี้
  3. สำหรับอุปกรณ์ที่รองรับ SNMP นั้นจะสอบถามเครือข่ายเอนทิตีสำหรับคำอธิบายอุปกรณ์

การแบ่งคำสั่ง

nmap - การสแกนเครือข่าย ( Nmap.org )

  • -p 515,631,9100 สแกนหาพอร์ต TCP 515, 631 และ 9100
  • -oG - ใช้รูปแบบผลลัพธ์ที่สามารถ grep ได้
  • -sU -p 161 สแกนหาพอร์ต UDP 161

gawkหรือawk - ประมวลผลข้อมูลข้อความเชิงคอลัมน์ โดยค่าเริ่มต้น whitespaces จะแยกบรรทัดออกเป็นคอลัมน์ ( Wikipedia )

  • gawk '/regexp/' ใช้นิพจน์ควบคุมด้วย gawk เพื่อกรองบรรทัดที่ตรงกับนิพจน์ควบคุมนี้
  • gawk '{<code>}' ใช้ภาษาอินพุตแบบ awk C เพื่อจัดการเอาต์พุต
  • gawk '{/open/print $2}' ค้นหาบรรทัดที่ตรงกับ "เปิด" และพิมพ์คอลัมน์ที่สอง

xarg - สร้างและดำเนินการคำสั่งจากอินพุตที่กำหนด ตามค่าดีฟอลต์ whitespaces จะแยกบรรทัดออกเป็นอาร์กิวเมนต์ ( Wikipedia )

  • --delimiter='\n' แยกอาร์กิวเมนต์ต่อบรรทัดใหม่ (\ n) แทนช่องว่าง
  • --replace=$ipaddressสำหรับแต่ละสายเก็บอาร์กิวเมนต์ลง$ IPADDRESS

snmpgetหรือsnmpwalk - ใช้การร้องขอ SNMP GET เพื่อสอบถามข้อมูลเกี่ยวกับเอนทิตีเครือข่าย ( net-snmp.orgเพิ่มเติมเกี่ยวกับ SNMP บนWikipedia )

  • -c public ตั้งค่าสตริงชุมชนเป็นสาธารณะ
  • -v 1 ตั้งค่ารุ่น SNMP เป็น 1
  • -O v อย่าพิมพ์ OID
  • system.sysDescr.0ตัวแปรในการสืบค้น คำอธิบายของตัวแปรเฉพาะนี้: "คำอธิบายที่เป็นข้อความของกิจการค่านี้ควรรวมชื่อเต็มและการระบุรุ่นของประเภทฮาร์ดแวร์ของระบบระบบปฏิบัติการซอฟต์แวร์และซอฟต์แวร์ระบบเครือข่ายจำเป็นต้องมีอักขระ ASCII ที่พิมพ์ได้เท่านั้น "

sed - แยกวิเคราะห์และแปลงข้อความ ( Wikipedia )

  • 's/day/night/' ค้นหาการเกิดขึ้นครั้งแรกของวันที่ของสตริงในบรรทัดและแทนที่ด้วย night
  • 's/STRING:\s//'ค้นหาSTRING: \ sและแทนที่ด้วยไม่มีอะไร สิ่งนี้จะลบSTRING: \ sออกจากอินพุต \ sหมายถึงช่องว่าง

มีคำสั่งที่รองรับ UNIX บางส่วนที่เกี่ยวข้อง ส่วนตัวแล้วฉันทำให้สายโซ่นี้ทำงานบนเครื่อง Windows โดยใช้ Cygwin เพื่อรับคำสั่งเหล่านั้น


2
ใน Linux ฉันใช้รูปแบบต่อไปนี้เพื่อแสดง IP และสตริงระบบ SNMP '--replace = $ ipaddress' ไม่ทำงานในสภาพแวดล้อมของฉัน:nmap -p 515,631,9100 -oG - 192.168.100.0/24 | gawk '/open/{print $2}' | xargs --delimiter='\n' nmap -sU -p 161 -oG - | gawk '/open/{print $2}' | xargs -I{} sh -c 'echo {} ; snmpget -v 1 -O v -c public {} system.sysDescr.0' | sed 's/STRING:\s//'
NoelProf

รุ่นของ @NoelProf ใช้งานได้ดีใน CentOS 6 สิ่งหนึ่งที่อาจได้รับการปรับปรุงคือส่วนการสแกน UDP ฉันลองใช้โซ่ทั้งหมด แต่เครื่องพิมพ์บางตัวที่ไม่ค้นพบ โดยเฉพาะอย่างยิ่งเมื่อพวกเขาอยู่เบื้องหลัง VPN ฉันคิดว่าเป็นเพราะเราทดสอบเพียงครั้งเดียวหากพวกเขาตอบบนพอร์ต UDP 161 แต่ UDP อาจหลงทาง มันจะดีกว่าที่จะตรวจสอบหลายครั้ง
masgo

5

วิธีที่ง่ายที่สุดคือการสแกนด้วยnmap -O: nmap จะตรวจสอบได้อย่างถูกต้องว่าเครื่องเป็นเครื่องพิมพ์หรือไม่ใช้ระบบปฏิบัติการ

nmap -O 192.168.1.1/24 -oG - | grep printer >> outfile

ควรทำให้เป็นหนึ่งรายการต่อบรรทัดและถ่ายโอนไปยังไฟล์ที่เรียกว่า "outfile" เห็นได้ชัดว่าเปลี่ยนช่วง IP เป็นช่วงที่คุณกำลังสแกน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.