Ich habe eine C#-Anwendung geschrieben, die auf Port 789 lauscht. Sie läuft auf einem Windows XP Professional-Computer.
netstat -an | find "789"
TCP 0.0.0.0:789 0.0.0.0:0 LISTENING
Wenn ich es nmap -A -vv ip
auf einer anderen Linux-Maschine (aber im selben Subnetz) ausführe, werden nur andere auf dem Host geöffnete Ports gemeldet (z. B. MySQL, VNC usw.), nicht jedoch der von meiner Anwendung geöffnete Port.
Beim Ausführen wird jedoch nmap -p 789 ip
Folgendes angezeigt:
PORT STATE SERVICE
789/tcp open unknown
Warum gibt es einen Unterschied zwischen den beiden Nmap-Scans? Kann ich etwas tun, um sicherzustellen, dass Nmap bei einem vollständigen Scan den offenen Port erkennt?
Antwort1
Standardmäßig sucht nmap nur nach „gemeinsamen“ Ports (die 1000 häufigsten Ports pro Protokoll, glaube ich). Da 789 kein allgemeiner Port ist, wird er nicht gefunden. Wenn Sie
nmap -A -vv -p- ip
Es sollte die Ports 1-65535 scannen.
Hier ist die Nmap-Dokumentation, die angibt, welche Ports standardmäßig gescannt werden: http://nmap.org/book/man-port-specification.html
Antwort2
Die einzige Möglichkeit, dies zu tun, besteht darin, die Dienstedatei Ihres Nmap zu ändern, was jedoch nicht empfohlen wird. Die -A
Option führt erweiterte Optionen aus, darunter Diensterkennung, Betriebssystemerkennung, Tracerouting usw. – sie scannt nicht den gesamten Bereich. Wenn Sie alle 65.000 Ports scannen möchten, verwenden Sie die Option -p-
. Ansonsten müssen Sie nur den Port mit angeben -p 789
. Ihre beste Option ist wahrscheinlich, einen Alias zu erstellen, der dies tut nmap -p 789
, um Zeit zu sparen.
Wenn Sie die Servicedatei (standardmäßig /usr/local/share/nmap/nmap-services) wirklich ändern müssen, suchen Sie die Zeile unknown 789/tcp 0.000075
mit dem Namen Ihres Programms und ersetzen Sie sie. Fügen Sie die Nummer am Ende bei ein 0.9
, sodass es sich um den obersten Port handelt, den nmap einschließt. Ein Alias wäre jedoch viel besser.
Antwort3
Ich bin mir nicht sicher. Es erkennt es als "offen", was Sie doch wollen, oder? AlsoIsthöre zu. Warum es mit -A nicht gefunden wird, weiß ich nicht genau.
Bearbeiten – dies stammt aus einer alten Dokumentation und trifft möglicherweise nicht auf Ihre Version zu. Führen Sie es aus man nmap
und teilen Sie uns mit, welche Version Sie haben.
Aus den Dokumenten erkenne ich:
„Standardmäßig werden alle Ports zwischen 1 und 1024 sowie alle in der mit nmap gelieferten Servicedatei aufgeführten Ports gescannt.“
Daher sollte 789 gescannt werden, auch wenn Sie es nicht in Ihrer Servicedatei haben (da es als „unbekannt“ gekennzeichnet ist, bin ich sicher, dass dies nicht der Fall ist.)
Also, ich weiß nicht. Überprüfen Sie Ihre Man-Datei für Ihre Version von nmap. Vielleicht ist das Verhalten für die mit -A zu scannenden Ports anders als in dem Dokument, das ich gefunden habe?
Dies ist unwahrscheinlich, aber es könnte eine Untersuchung wert sein - Der Unterschied könnte in Ihrer Benutzer-ID auf dem Linux-Rechner liegen. Privilegierte und nicht privilegierte Benutzer von NMap haben unterschiedliche Standard-Scantypen. Benutzer mit Root können TCP-SYN-Scans durchführen, Benutzer ohne Root verwenden standardmäßig TCP connect().
Antwort4
Der Befehl nmap -A
ist ein aggressiver Befehl, da er mehrere Skripte im Hintergrund ausführt. Das ist der Hauptgrund, warum er mehr Ergebnisse liefert. Er kombiniert Versionserkennung -sV
mit Betriebssystemerkennung -O
(Großbuchstabe O und nicht die Zahl Null) und anderen Erkennungsskripten. Nmap scannt standardmäßig, und wenn keine spezifische Portnummer angegeben ist, die ersten 1000 häufigsten Ports (diese sind in derNmap-DiensteDatei, die Sie bearbeiten können). Der aggressive Befehl kann mit den Ports gefüttert werden, die Sie scannen möchten, so dass Sie keine Ergebnisse für andere Ports als den erhalten, den Sie scannen möchten, TCP 789
nmap -p 789 -A TARGET_IP_ADDRESS_OR_IP_RANGE
Wenn Sie hingegen nur prüfen möchten, ob der Port, in Ihrem Fall 789, offen/geschlossen/gefiltert ist
nmap -p 789 TARGET_IP_ADDRESS_OR_IP_RANGE
Da -A
es mehrere Skripte ausführt und laut ist (im Hinblick auf den Netzwerkverkehr), wird es leicht von IDSs markiert und höchstwahrscheinlich von Firewalls oder IPSs blockiert. Dies kann einer der Gründe dafür sein, dass es nicht den richtigen Portstatus angibt.