Frage Finde Drucker mit Nmap


Was ist der beste Weg, Drucker in meinem Netzwerk mit nmap zu finden? Ist es möglich, die Drucker ip in einer Datei zu speichern?


20
2018-06-24 23:13


Ursprung


Diese Seite kann Ihnen helfen. Es hat für mich in der Vergangenheit funktioniert. irongeek.com/i.php?page=security/networkprinterhacking - ThaKidd KG5ORD


Antworten:


Wenn Sie aus irgendeinem Grund misstrauisch sind, OS Fingerprinting durchzuführen, können Sie einen gezielteren Portscan durchführen:

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

Dadurch wird nach Anschlüssen gesucht, die für Drucker und Drucksysteme üblich sind.

  • 9100 = der RAW-Port für die meisten Drucker, auch als Direct-IP-Port bezeichnet
  • 515 = der LPR / LPD-Port, für die meisten Drucker, sowie ältere Print-Server
  • 631 = der IPP-Port für die meisten modernen Drucker und der CUPS-basierte Druckserver

Die Ausgabe erfolgt in XML.


30
2018-06-25 02:56



Ihre Antwort war sehr hilfreich! - Ryan Tenney
Das hat nicht für mich funktioniert. - Martin Thoma


Diese Antwort beantwortet Ihre erste Frage direkt. Bei der zweiten Frage können Sie mithilfe des Befehls auch Drucker-IP-Adressen in eine Datei einfügen. Auf geht's:

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//'

Prozessbeschreibung

  1. Es scannt ein Netzwerk, das nach Netzwerkeinheiten sucht, die auf den Standarddruckerports warten.
  2. Anhand der Ergebnisse des vorherigen Schritts wird die SNMP-Unterstützung auf diesen Geräten überprüft.
  3. Für jedes Gerät, das über SNMP-Unterstützung verfügt, fragt es die Netzwerkeinheit nach einer Gerätebeschreibung ab.

Befehlsaufschlüsselung

nmap - Netzwerk-Scan (Nmap.org)

  • -p 515,631,9100 Nach TCP-Port 515, 631 und 9100 suchen.
  • -oG - Verwenden Sie das grep-fähige Ausgabeformat.
  • -sU -p 161 Suchen Sie nach dem UDP-Port 161.

gaffen oder awk - Verarbeiten Sie spaltenorientierte Textdaten. Whitespaces trennt die Zeile standardmäßig in Spalten. (Wikipedia)

  • gawk '/regexp/' Benutze regulärer Ausdruck mit Blick, um Linien herauszufiltern, die mit diesem Regulair-Ausdruck übereinstimmen.
  • gawk '{<code>}' Verwenden Sie die awk C-ähnliche Eingabesprache, um die Ausgabe zu manipulieren.
  • gawk '{/open/print $2}' Suchen Sie nach Zeilen, die mit "offen" übereinstimmen, und drucken Sie die zweite Spalte.

xarg - Erstellen und Ausführen von Befehlen aus gegebener Eingabe. Standardmäßig trennt Whitespaces die Zeile in Argumente. (Wikipedia)

  • --delimiter='\n' Separate Argumente pro neue Zeile (\ n) anstelle von Leerzeichen.
  • --replace=$ipaddress Speichern Sie für jede Zeile das Argument in $ IP-Adresse.

snmpget oder snmpwalk - Verwenden Sie die SNMP-GET-Anforderung, um Informationen zu einer Netzwerkeinheit abzufragen. (net-snmp.org, mehr über SNMP an Wikipedia)

  • -c public Setzen Sie den Community-String auf public.
  • -v 1 Setzen Sie die SNMP-Version auf 1.
  • -O v OID nicht drucken.
  • system.sysDescr.0 Variable zum Abfragen. Beschreibung dieser speziellen Variable: "Eine textuelle Beschreibung der Entität. Dieser Wert sollte den vollständigen Namen und die Versionskennung des Systemhardwaretyps, des Software-Betriebssystems und der Netzwerksoftware enthalten. Es muss zwingend nur druckbare ASCII-Zeichen enthalten."

sed - Parsiert und transformiert Text. (Wikipedia)

  • 's/day/night/' Suchen Sie das erste Vorkommen des Stringtages in einer Zeile und ersetzen Sie es durch Nacht.
  • 's/STRING:\s//' Finden STRING: \ s und ersetze es durch nichts. Dies entfernt STRING: \ s von der Eingabe. \ s steht für ein Leerzeichen.

Es gibt einige UNIX-unterstützte Befehle. Persönlich habe ich diese Kette auf einer Windows-Maschine mit Cygwin arbeiten lassen, um diese Befehle zu erhalten.


7
2018-04-23 10:05



Unter Linux habe ich die folgende Variante verwendet, um die IP- und die SNMP-Systemzeichenfolge anzuzeigen. Die '--replace = $ ipaddress' funktionierte nicht in meiner Umgebung: 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
Die Version von @NoelProf funktioniert gut in CentOS 6. Eine Sache, die verbessert werden könnte, ist der UDP-Scan-Teil. Ich habe die ganze Kette ausprobiert, aber einige der Drucker wurden nicht entdeckt; vor allem, wenn sie hinter einem VPN waren. Ich vermutete, dass wir nur genau einmal testen, wenn sie auf UDP-Port 161 antworten. Aber UDP könnte auf dem Weg verloren gehen. Es wäre besser, es mehrmals zu überprüfen. - masgo


Der einfachste Weg ist das Scannen mit nmap -O: nmap wird normalerweise korrekt feststellen, ob eine Maschine ein Drucker ist oder nicht, basierend auf dem Betriebssystem.

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

Sollte es einen Eintrag pro Zeile machen und es in eine Datei namens "outfile" ablegen. Ändern Sie den IP-Bereich offensichtlich in den Bereich, den Sie scannen


4
2018-06-25 01:59